[jsword-svn] r1727 - trunk/common/src/main/java/org/crosswire/common/util

dmsmith at www.crosswire.org dmsmith at www.crosswire.org
Fri Dec 28 13:40:16 MST 2007


Author: dmsmith
Date: 2007-12-28 13:40:16 -0700 (Fri, 28 Dec 2007)
New Revision: 1727

Added:
   trunk/common/src/main/java/org/crosswire/common/util/Countries.java
   trunk/common/src/main/java/org/crosswire/common/util/iso3166.properties
Log:
Added countries so that a translation can be distinguished by both language and country. This is useful to distinguish between simplified (aka communist china) and traditional (taiwan) scripts.

Added: trunk/common/src/main/java/org/crosswire/common/util/Countries.java
===================================================================
--- trunk/common/src/main/java/org/crosswire/common/util/Countries.java	                        (rev 0)
+++ trunk/common/src/main/java/org/crosswire/common/util/Countries.java	2007-12-28 20:40:16 UTC (rev 1727)
@@ -0,0 +1,134 @@
+/**
+ * Distribution License:
+ * JSword is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License, version 2.1 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 Lesser General Public License for more details.
+ *
+ * The License is available on the internet at:
+ *       http://www.gnu.org/copyleft/lgpl.html
+ * or by writing to:
+ *      Free Software Foundation, Inc.
+ *      59 Temple Place - Suite 330
+ *      Boston, MA 02111-1307, USA
+ *
+ * Copyright: 2005
+ *     The copyright to this program is held by it's authors.
+ *
+ * ID: $Id: Countries.java 1462 2007-07-02 02:32:23Z dmsmith $
+ */
+package org.crosswire.common.util;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+/**
+ * A utility class that converts ISO-3166 codes or locales to their "friendly" country name.
+ *
+ * @see gnu.lgpl.License for license details.
+ *      The copyright to this program is held by it's authors.
+ * @author DM Smith [dmsmith555 at yahoo dot com]
+ */
+public class Countries
+{
+    /**
+     * Make the class a true utility class by having a private constructor.
+     */
+    private Countries()
+    {
+    }
+
+    /**
+     * Determine whether the country code is valid.
+     * The code is valid if it is null or empty.
+     * The code is valid if it is in iso3166.properties.
+     * If a locale is used for the iso3166Code, it will use the part after the '_'.
+     * Thus, this code does not support dialects.
+     *
+     * @param iso3166Code
+     * @return true if the country is valid.
+     */
+    public static boolean isValidCountry(String iso3166Code)
+    {
+        String lookup = iso3166Code;
+        if (lookup == null || lookup.length() == 0)
+        {
+            return true;
+        }
+
+        if (lookup.indexOf('_') != -1)
+        {
+            String[] locale = StringUtil.split(lookup, '_');
+            return isValidCountry(locale[1]);
+        }
+
+        if (lookup.length() > 2)
+        {
+            return false;
+        }
+
+        try
+        {
+            countries.getString(lookup);
+            return true;
+        }
+        catch (MissingResourceException e)
+        {
+            return false;
+        }
+    }
+
+    /**
+     * Get the country name from the country code.
+     * If the code is null or empty then it is considered to be DEFAULT_COUNTRY_CODE (that is, US).
+     * Otherwise, it will generate a log message and return unknown.
+     * If a locale is used for the iso3166Code, it will use the part before the '_'.
+     * Thus, this code does not support dialects, except as found in the iso3166.
+     *
+     * @param iso3166Code
+     * @return the name of the country
+     */
+    public static String getCountry(String iso3166Code)
+    {
+        String lookup = iso3166Code;
+        if (lookup == null || lookup.length() == 0)
+        {
+            return getCountry(DEFAULT_COUNTRY_CODE);
+        }
+
+        if (lookup.indexOf('_') != -1)
+        {
+            String[] locale = StringUtil.split(lookup, '_');
+            return getCountry(locale[1]);
+        }
+
+        try
+        {
+            return countries.getString(lookup);
+        }
+        catch (MissingResourceException e)
+        {
+            return getCountry(UNKNOWN_COUNTRY_CODE);
+        }
+    }
+
+    public static final String DEFAULT_COUNTRY_CODE = "US"; //$NON-NLS-1$
+    private static final String UNKNOWN_COUNTRY_CODE = "XX"; //$NON-NLS-1$
+
+    private static /*final*/ ResourceBundle countries;
+    static
+    {
+        try
+        {
+            countries = ResourceBundle.getBundle("iso3166", Locale.getDefault(), CWClassLoader.instance()); //$NON-NLS-1$;
+        }
+        catch (MissingResourceException e)
+        {
+            assert false;
+        }
+    }
+}

Added: trunk/common/src/main/java/org/crosswire/common/util/iso3166.properties
===================================================================
--- trunk/common/src/main/java/org/crosswire/common/util/iso3166.properties	                        (rev 0)
+++ trunk/common/src/main/java/org/crosswire/common/util/iso3166.properties	2007-12-28 20:40:16 UTC (rev 1727)
@@ -0,0 +1,247 @@
+AF=Afghanistan
+AX=\u2248land Islands
+AL=Albania
+DZ=Algeria
+AS=American Samoa
+AD=Andorra
+AO=Angola
+AI=Anguilla
+AQ=Antarctica
+AG=Antigua and Barbuda
+AR=Argentina
+AM=Armenia
+AW=Aruba
+AU=Australia
+AT=Austria
+AZ=Azerbaijan
+BS=Bahamas
+BH=Bahrain
+BD=Bangladesh
+BB=Barbados
+BY=Belarus
+BE=Belgium
+BZ=Belize
+BJ=Benin
+BM=Bermuda
+BT=Bhutan
+BO=Bolivia
+BA=Bosnia and Herzegovina
+BW=Botswana
+BV=Bouvet Island
+BR=Brazil
+IO=British Indian Ocean Territory
+BN=Brunei Darussalam
+BG=Bulgaria
+BF=Burkina Faso
+BI=Burundi
+KH=Cambodia
+CM=Cameroon
+CA=Canada
+CV=Cape Verde
+KY=Cayman Islands
+CF=Central African Republic
+TD=Chad
+CL=Chile
+CN=China
+CX=Christmas Island
+CC=Cocos (Keeling) Islands
+CO=Colombia
+KM=Comoros
+CG=Congo
+CD=Congo, The Democratic Republic of the
+CK=Cook Islands
+CR=Costa Rica
+CI=C\u2018te D'ivoire
+HR=Croatia
+CU=Cuba
+CY=Cyprus
+CZ=Czech Republic
+DK=Denmark
+DJ=Djibouti
+DM=Dominica
+DO=Dominican Republic
+EC=Ecuador
+EG=Egypt
+SV=El Salvador
+GQ=Equatorial Guinea
+ER=Eritrea
+EE=Estonia
+ET=Ethiopia
+FK=Falkland Islands (Malvinas)
+FO=Faroe Islands
+FJ=Fiji
+FI=Finland
+FR=France
+GF=French Guiana
+PF=French Polynesia
+TF=French Southern Territories
+GA=Gabon
+GM=Gambia
+GE=Georgia
+DE=Germany
+GH=Ghana
+GI=Gibraltar
+GR=Greece
+GL=Greenland
+GD=Grenada
+GP=Guadeloupe
+GU=Guam
+GT=Guatemala
+GG=Guernsey
+GN=Guinea
+GW=Guinea-bissau
+GY=Guyana
+HT=Haiti
+HM=Heard Island and McDonald Islands
+VA=Holy See (Vatican City State)
+HN=Honduras
+HK=Hong Kong
+HU=Hungary
+IS=Iceland
+IN=India
+ID=Indonesia
+IR=Iran, Islamic Republic of
+IQ=Iraq
+IE=Ireland
+IM=Isle of Man
+IL=Israel
+IT=Italy
+JM=Jamaica
+JP=Japan
+JE=Jersey
+JO=Jordan
+KZ=Kazakhstan
+KE=Kenya
+KI=Kiribati
+KP=Korea, Democratic People's Republic of
+KR=Korea, Republic of
+KW=Kuwait
+KG=Kyrgyzstan
+LA=Lao People's Democratic Republic
+LV=Latvia
+LB=Lebanon
+LS=Lesotho
+LR=Liberia
+LY=Libyan Arab Jamahiriya
+LI=Liechtenstein
+LT=Lithuania
+LU=Luxembourg
+MO=Macao
+MK=Macedonia, The Former Yugoslav Republic of
+MG=Madagascar
+MW=Malawi
+MY=Malaysia
+MV=Maldives
+ML=Mali
+MT=Malta
+MH=Marshall Islands
+MQ=Martinique
+MR=Mauritania
+MU=Mauritius
+YT=Mayotte
+MX=Mexico
+FM=Micronesia, Federated States of
+MD=Moldova, Republic of
+MC=Monaco
+MN=Mongolia
+ME=Montenegro
+MS=Montserrat
+MA=Morocco
+MZ=Mozambique
+MM=Myanmar
+NA=Namibia
+NR=Nauru
+NP=Nepal
+NL=Netherlands
+AN=Netherlands Antilles
+NC=New Caledonia
+NZ=New Zealand
+NI=Nicaragua
+NE=Niger
+NG=Nigeria
+NU=Niue
+NF=Norfolk Island
+MP=Northern Mariana Islands
+NO=Norway
+OM=Oman
+PK=Pakistan
+PW=Palau
+PS=Palestinian Territory, Occupied
+PA=Panama
+PG=Papua New Guinea
+PY=Paraguay
+PE=Peru
+PH=Philippines
+PN=Pitcairn
+PL=Poland
+PT=Portugal
+PR=Puerto Rico
+QA=Qatar
+RE=Reunion
+RO=Romania
+RU=Russian Federation
+RW=Rwanda
+BL=Saint Barth\u2026lemy
+SH=Saint Helena
+KN=Saint Kitts and Nevis
+LC=Saint Lucia
+MF=Saint Martin
+PM=Saint Pierre and Miquelon
+VC=Saint Vincent and the Grenadines
+WS=Samoa
+SM=San Marino
+ST=Sao Tome and Principe
+SA=Saudi Arabia
+SN=Senegal
+RS=Serbia
+SC=Seychelles
+SL=Sierra Leone
+SG=Singapore
+SK=Slovakia
+SI=Slovenia
+SB=Solomon Islands
+SO=Somalia
+ZA=South Africa
+GS=South Georgia and the South Sandwich Islands
+ES=Spain
+LK=Sri Lanka
+SD=Sudan
+SR=Suriname
+SJ=Svalbard and Jan Mayen
+SZ=Swaziland
+SE=Sweden
+CH=Switzerland
+SY=Syrian Arab Republic
+TW=Taiwan, Province of China
+TJ=Tajikistan
+TZ=Tanzania, United Republic of
+TH=Thailand
+TL=Timor-leste
+TG=Togo
+TK=Tokelau
+TO=Tonga
+TT=Trinidad and Tobago
+TN=Tunisia
+TR=Turkey
+TM=Turkmenistan
+TC=Turks and Caicos Islands
+TV=Tuvalu
+UG=Uganda
+UA=Ukraine
+AE=United Arab Emirates
+GB=United Kingdom
+US=United States
+UM=United States Minor Outlying Islands
+UY=Uruguay
+UZ=Uzbekistan
+VU=Vanuatu
+VE=Venezuela
+VN=Viet Nam
+VG=Virgin Islands, British
+VI=Virgin Islands, U.S.
+WF=Wallis and Futuna
+EH=Western Sahara
+YE=Yemen
+ZM=Zambia
+ZW=Zimbabwe
+XX=Unknown
\ No newline at end of file




More information about the jsword-svn mailing list