org.xnap.commons.maven.gettext.GettextUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gettext-maven-plugin Show documentation
Show all versions of gettext-maven-plugin Show documentation
Generate messages templates and deploy messages bundles
The newest version!
/**
* Copyright 2006 Felix Berger
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xnap.commons.maven.gettext;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
// TODO this is a copy from the gettext-ant-tasks. Ideally, both projects
// should use a common library
public class GettextUtils {
public static String getJavaLocale(String locale) {
if (locale == null) {
throw new IllegalArgumentException();
}
List tokens = new ArrayList(3);
StringTokenizer t = new StringTokenizer(locale, "_");
while (t.hasMoreTokens()) {
tokens.add(t.nextToken());
}
if (tokens.size() < 1 || tokens.size() > 3) {
throw new IllegalArgumentException("Invalid locale format: " + locale);
}
if (tokens.size() < 3) {
// check for variant
String lastToken = (String) tokens.get(tokens.size() - 1);
int index = lastToken.indexOf("@");
if (index != -1) {
tokens.remove(tokens.size() - 1);
tokens.add(lastToken.substring(0, index));
if (tokens.size() == 1) {
// no country code was provided, but a variant
tokens.add("");
}
tokens.add(lastToken.substring(index + 1));
}
}
// Locale.java replaces these codes, so we have to do it too
String language = (String) tokens.get(0);
if (language.equalsIgnoreCase("he")) {
tokens.set(0, "iw");
} else if (language.equalsIgnoreCase("yi")) {
tokens.set(0, "ji");
} else if (language.equalsIgnoreCase("id")) {
tokens.set(0, "in");
}
StringBuffer sb = new StringBuffer();
for (Iterator it = tokens.iterator(); it.hasNext();) {
String token = (String) it.next();
sb.append(token);
if (it.hasNext()) {
sb.append("_");
}
}
return sb.toString();
}
}