You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.0 KiB
Java
110 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2009-2017 Alistair Neil <info@dazzleships.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License Version 2 as published by
|
|
* the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
package lib;
|
|
|
|
import java.util.Locale;
|
|
import java.util.ResourceBundle;
|
|
|
|
/**
|
|
*
|
|
* @author Alistair Neil, <info@dazzleships.net>
|
|
*/
|
|
public final class Localisation {
|
|
|
|
// Private Stuff
|
|
private final ResourceBundle resourceBundle;
|
|
private String encoding = null;
|
|
|
|
public Localisation(String resource) {
|
|
String strSupportedLangs = "fr,en,pt";
|
|
encoding = this.getString("encoding");
|
|
if (!strSupportedLangs.contains(getLocale().getLanguage())) {
|
|
Locale.setDefault(new Locale("en", "GB"));
|
|
resourceBundle = ResourceBundle.getBundle(resource, Locale.getDefault());
|
|
} else {
|
|
resourceBundle = ResourceBundle.getBundle(resource);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the locale
|
|
*
|
|
* @return The locale
|
|
*/
|
|
public Locale getLocale() {
|
|
return Locale.getDefault();
|
|
}
|
|
|
|
public String toWebLanguageTag() {
|
|
return getLocale().toLanguageTag().replace('-', '_');
|
|
}
|
|
|
|
/**
|
|
* Get the country name for supplied iso2 code
|
|
*
|
|
* @param iso2
|
|
* @return Localised country name
|
|
*/
|
|
public String getDisplayCountry(String iso2) {
|
|
switch (iso2) {
|
|
case "A1":
|
|
case "A2":
|
|
case "O1":
|
|
case "U1":
|
|
return getString("iso" + iso2);
|
|
default:
|
|
Locale obj = new Locale("", iso2);
|
|
return obj.getDisplayCountry();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get localised string using given key
|
|
*
|
|
* @param key
|
|
* @return localised string
|
|
*/
|
|
public String getString(String key) {
|
|
try {
|
|
if (!encoding.contentEquals("encoding")) {
|
|
byte[] text = resourceBundle.getString(key).getBytes("ISO8859-1");
|
|
return new String(text, encoding);
|
|
} else {
|
|
return resourceBundle.getString(key);
|
|
}
|
|
} catch (Exception ex) {
|
|
}
|
|
return key;
|
|
}
|
|
|
|
/**
|
|
* Get an array of localised strings using a key array or multiple keys
|
|
*
|
|
* @param keys
|
|
* @return localised string array
|
|
*/
|
|
public String[] getStrings(String... keys) {
|
|
|
|
String[] result = new String[keys.length];
|
|
int i = 0;
|
|
for (String key : keys) {
|
|
result[i++] = getString(key);
|
|
}
|
|
return result;
|
|
}
|
|
}
|