i18n-discuss@opensolaris.org
[Top] [All Lists]

Re: [i18n-discuss] Review Kickoff : Localeadm Redesign One-pager

Subject: Re: [i18n-discuss] Review Kickoff : Localeadm Redesign One-pager
From: Suresh Chandrasekharan
Date: Wed, 01 Aug 2007 11:08:55 -0400
Hi Damien,

    No problem. I can explain the whole thing once again as some parts of 
the propoal are
    changed. The content of the .localeadm.xml file in your proposal is 
split up into 2 major parts.

1. Installs with the the localeadm package
2. Installs when the user initial installs the system

1. Installs with the the localeadm package
------------------------------------------
    1. The region to country code mapping file can be called 
master_region.xml

    The following data is given as private header files and thus embedded 
with the program, no
     external files are used. This is because we may need to use 
translations for the Language/Country
    names in command line. (if the translations are not needed, these can be 
also externalized)

       2. Country Name to country code mapping (Embedded as a header file in 
the localeadm sources)
       3. Language Name to language code mapping (Embedded as a header file 
in the localeadm sources)

2. Installs when the user initial installs the system.
-------------------------------------------------

    The CD-image-package.xml file containing package name, SUNW_LOC entry 
for a package,
    CD # which the package and the special instructions for package. This is 
created by RE
    when creating the image and is embedded in each CD. It's the same across 
all CDs. When the user
    initial installs the system, this file is copied into the system. But 
when the user does an upgrade
    etc this is not copied.

    When the user want to install a new language/locale CD-image-package.xml 
file is within the system
    is referred as a starting point to prompt the user the CD # to input. 
After the CD is input (Warning
    if the CD-image-package.xml  file in CD does not correspond to the one 
in the system) the
    CD-image-package.xml  is reread (if the file in the system and CD are 
the same we can avoid
    this) and the package list is recomputed and the packages from the 
current CD is installed, then
    other CD's are requested one by one.

    In localeadm -l scenario, we check if the /var/sadm/pkg contents do have 
*new* entries which are not
    seen in CD-image-package.xml  in the system, if new entries are there we 
can output a warning message, else
    just display the different locales to be installed to make the system 
complete etc.

    Here we don't patch or replace system CD-image-package.xml  file and 
it's used as a reference only, so
    there's no issues.

    Hope it's clear, if not pl. feel free to ask again.

Regards,
Suresh



----- Original Message ----- 
From: "Damien Donlon" <Damien.Donlon@xxxxxxx>
To: "suresh.chandrasekharan@xxxxxxx" <Suresh.Chandrasekharan@xxxxxxx>
Cc: <gto-ext@xxxxxxx>; <Peter.Nugent@xxxxxxx>
Sent: Wednesday, August 01, 2007 10:27 AM
Subject: Re: [i18n-discuss] Review Kickoff : Localeadm Redesign One-pager


> suresh.chandrasekharan@xxxxxxx wrote:
>
>> Hi Damien,
>>     We have the CD-image-package list copied into the system at the
>> time of the initial install. That file is used as a starting point to ask
>> the user to prompt for a CD in if he want to install a new Language etc.
>> It's incorrect that this is not copied.
>
>
> OK, so. I interpreted :
>
> 1. Need top copy the .localeadm.xml file as a part of install/upgrade is 
> avoided.
>
> from your split file proposal to mean that it would not be installed. What 
> you meant was :
>
> 1. Need top copy the .localeadm.xml file as a part of upgrade is avoided.
>
> This does simplify things for localeadm -l a lot.
>
>>
>> The same file can be used to determine if the system is initially fully
>> installed, by comparing its contents with the 
>> /var/sadm/pkg/<pkg_name>/pkginfo
>> contents. The only thing is that if the user have installed from a 
>> different
>> CD than the original one then since we are not copying CD-image-package
>> on each occasion and this will go out of sync with the /var/sadm/pkg/ 
>> contents
>> and results will not be accurate. But since we already warn the user 
>> about
>> the unstable system  in the first place when we do this, I don't think we
>> need to worry much about this. If you want you can print a warning 
>> message
>> when printing out the list that extra locale packages are installed in 
>> the
>> system and list may not be accurate.
>
> OK - just to be sure we completely understand each other :
>
> [1] After initial install if the user switches to using a different image 
> then localeadm uses the region-mapping master file + the XML file on the 
> image to determine what packages ought to be installed.  The code makes no 
> reference to the XML file on the system.
>
> [2] If a user switches image and does :
>
> localeadm -l
>
> If the new image contains packages for a region that are NOT installed but 
> every package for the region is installed according to the XML file on the 
> image,  then localeadm -l does not report the missing packages available 
> on the image.
>
> On the otherhand, if localeadm sees additional packages on the system for 
> the region that are NOT contained in the XML file on the image then it 
> will report them.
>
>
> Regards,
> Damien
>
>
>>
>> By comparing the /var/sadm/pkg/ contents and
>> CD-image-package contents we will be able to know if extra packages are
>> installed and then give out the warning message.
>>
>> Regards,
>> Suresh
>>
>>
>>
>> Damien Donlon wrote:
>>
>>> Hi,
>>> Thanks for the suggestion below! This will work. I want to highlight an 
>>> issue arising from Suresh's proposal to split the XML file content :
>>>
>>> Localeadm has the following functionality :
>>>
>>> localeadm -l [-d]
>>> List locales installed on the system or available from the device.
>>>
>>> It prints to stdout the regions installed on the system and the 
>>> countries included in that region. Importantly, if a region is only 
>>> partially installed then it states that the install is incomplete. To do 
>>> this, it must have a complete list of packages which *ought* to be 
>>> installed for a region to be completely installed.
>>>
>>> In our initial design it could do this because the image localeadm file 
>>> was installed to the system and so it had the complete list of packages 
>>> for each region. Caiman would also use this in upgrade scenarios.In 
>>> Suresh's split file proposal the image XML file is not installed so 
>>> localeadm does not have the complete list of packages.
>>>
>>> The solution to this is that localeadm would have to track regions 
>>> installed in a separate file. Some of this functionality is already 
>>> present in the form of :
>>>
>>> /var/sadm/system/data/locales_installed
>>>
>>> which is utilised by current localeadm (and I think installer). We hoped 
>>> to be able to eliminate this in the redesign but would have to use it if 
>>> we go with the split file suggestion. We also need to talk to Caiman 
>>> team about it.
>>>
>>> Regards,
>>> Damien
>>>
>>>
>>>
>>> suresh.chandrasekharan@xxxxxxx wrote:
>>>
>>>
>>>> Lets see how this can be done, you don't have to drop this if you think
>>>> that it's important. Actually we can do more, we can add an option to 
>>>> install
>>>> all locales in a country also, not only languages.
>>>>
>>>> Let the master file map only between regions and country codes. It's
>>>> better to keep it that way.
>>>>
>>>> iso3166 maps from country codes to country names, use that in an
>>>> header file, same for iso639 mappings to map from languages to language
>>>> codes.
>>>>
>>>> Attached these files from dtlogin, you can use the reverse mapping 
>>>> given in the
>>>> files, like
>>>> {"ab","Abkhazian"}
>>>> can be changed to
>>>> {"Abkhazian", "ab"}
>>>> and keep the list sorted like that. Then whenever the user inputs 
>>>> commands
>>>> like
>>>>
>>>> localeadm -a Abkhazian
>>>>
>>>> the corresponding language code is looked up in this file and used with 
>>>> the
>>>> CD-image-package file to found out and install all packages 
>>>> corresponding to
>>>> that language. You can do this for a country also, only for region wise 
>>>> install
>>>> the master file need to be looked at.
>>>>
>>>> Though a "reverse translation" scenario, we can even handle localized 
>>>> input
>>>> from the user, keep the reverse translations for each language, country
>>>> for supported locales in .mo files, when the user says
>>>>
>>>> localeadm -a Espanol
>>>>
>>>> in spanish locale, it reverse translates that to "Spanish" through the 
>>>> message file
>>>> and install the packages.
>>>>
>>>> So in essence for language/country/locale operations we are only 
>>>> looking
>>>> at the internal iso639/iso3166 mapping files as well as the 
>>>> CD-image-package
>>>> mapping files, only for region operations we will be looking into the
>>>> region file.
>>>>
>>>> Suresh
>>>>
>>>>
>>>>> This is dependent on how important you think it is or not to allow :
>>>>>
>>>>> localeadm -a Spanish
>>>>>
>>>>> to add a language
>>>>>
>>>>> This would be good from the point of view of consistency with the 
>>>>> Caiman installer which presents the user with a choice of languages. 
>>>>> But it complicates things with regard to the master file as it would 
>>>>> be difficult to generate an exhaustive list of languages mapping to 
>>>>> locales. Also, as Peter pointed out in an off alias email it would 
>>>>> open the question as to whether we would allow this :
>>>>>
>>>>> localeadm -a Espanol
>>>>>
>>>>> which would complicate things even further!
>>>>>
>>>>> I wanted to have language install but it is not necessary to have it I 
>>>>> think.
>>>>> If people are ok with it then I will eliminate this option from the 
>>>>> one-pager.
>>>>>
>>>>> Regards,
>>>>> Damien
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Suresh
>>>>>>
>>>>>> Suresh Chandrasekharan wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Sorry, you also essentially said the same about countries... :)
>>>>>>> But it's a good point.
>>>>>>>
>>>>>>> Suresh
>>>>>>>
>>>>>>> Suresh Chandrasekharan wrote:
>>>>>>>
>>>>>>>
>>>>>>>> Hi Peter,
>>>>>>>>
>>>>>>>> Thanks for bringing this up.
>>>>>>>>
>>>>>>>> We are speaking of a master list, which attempts to be exhaustive, 
>>>>>>>> since we have the
>>>>>>>> the finite country list and finite languages list, we can formulate 
>>>>>>>> regions on the basis of
>>>>>>>> countries, and not languages.
>>>>>>>>
>>>>>>>> The beauty is we only have to look at the country part to see in 
>>>>>>>> which region it includes
>>>>>>>> and not the langauge part. That way it's future proof as long as 
>>>>>>>> new countries are coming
>>>>>>>> up in the globe, and when they do, we can patch localeadm.
>>>>>>>>
>>>>>>>> /usr/lib/locale/<locale>/geo_map
>>>>>>>> if for current installed locales and is not a master list.
>>>>>>>>
>>>>>>>> Suresh
>>>>>>>>
>>>>>>>>
>>>>>>>>> Therefore, I suggest considering the following alternative : 
>>>>>>>>> localeadm uses /usr/lib/locale/<locale>/geo_map file to figure out 
>>>>>>>>> which geo a locale belongs to. That is what the current installer 
>>>>>>>>> does
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> http://mail.opensolaris.org/mailman/listinfo/i18n-discuss
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> /*
>>>> * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
>>>> * Use is subject to license terms.
>>>> */
>>>>
>>>> #pragma ident    "@(#)iso3166.h    1.1    06/08/30 SMI"
>>>>
>>>> #ifndef _ISO3166_H
>>>> #define _ISO3166_H
>>>>
>>>> /*
>>>> * Don't the change the order of the array elements
>>>> * If you want to add, add to the very end of the list
>>>> * Adding to other places will break the translation
>>>> * mechanism
>>>> */
>>>>
>>>> struct iso3166 {
>>>>     char *country_code, *country_name;
>>>> } iso3166 [] = {
>>>>     {"AF","Afghanistan"},
>>>>     {"AX","Aaland 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","Cote 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"},
>>>>     {"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","Republic of 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"},
>>>>     {"SH","Saint Helena"},
>>>>     {"KN","Saint Kitts And Nevis"},
>>>>     {"LC","Saint Lucia"},
>>>>     {"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"},
>>>>     {"CS","Serbia And Montenegro"},
>>>>     {"RS","Republic of 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"},
>>>>     {"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"},
>>>>     {"YU","Yugoslavia"},
>>>>     {"ZM","Zambia"},
>>>>     {"ZW","Zimbabwe"},
>>>> };
>>>>
>>>> #endif /* _ISO3166_H */
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> /*
>>>> * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
>>>> * Use is subject to license terms.
>>>> */
>>>>
>>>> #pragma ident    "@(#)iso639.h    1.1    06/08/30 SMI"
>>>>
>>>> #ifndef _ISO639_H
>>>> #define _ISO639_H
>>>>
>>>> /*
>>>> * Don't the change the order of the array elements
>>>> * If you want to add, add to the very end of the list
>>>> * Adding to other places will break the translation
>>>> * mechanism
>>>> */
>>>>
>>>> struct iso639_1 {
>>>>     char *lang_code, *lang_name;
>>>> } iso639_1[] = {
>>>>     {"aa","Afar"},
>>>>     {"ab","Abkhazian"},
>>>>     {"af","Afrikaans"},
>>>>     {"am","Amharic"},
>>>>     {"ar","Arabic"},
>>>>     {"as","Assamese"},
>>>>     {"ay","Aymara"},
>>>>     {"az","Azerbaijani"},
>>>>     {"ba","Bashkir"},
>>>>     {"be","Byelorussian"},
>>>>     {"bg","Bulgarian"},
>>>>     {"bh","Bihari"},
>>>>     {"bi","Bislama"},
>>>>     {"bn","Bengali"},
>>>>     {"bo","Tibetan"},
>>>>     {"br","Breton"},
>>>>     {"ca","Catalan"},
>>>>     {"co","Corsican"},
>>>>     {"cs","Czech"},
>>>>     {"cy","Welsh"},
>>>>     {"da","Danish"},
>>>>     {"de","German"},
>>>>     {"dz","Bhutani"},
>>>>     {"el","Greek"},
>>>>     {"en","English"},
>>>>     {"eo","Esperanto"},
>>>>     {"es","Spanish"},
>>>>     {"et","Estonian"},
>>>>     {"eu","Basque"},
>>>>     {"fa","Persian"},
>>>>     {"fi","Finnish"},
>>>>     {"fj","Fiji"},
>>>>     {"fo","Faeroese"},
>>>>     {"fr","French"},
>>>>     {"fy","Frisian"},
>>>>     {"ga","Irish"},
>>>>     {"gd","Gaelic"},
>>>>     {"gl","Galician"},
>>>>     {"gn","Guarani"},
>>>>     {"gu","Gujarati"},
>>>>     {"ha","Hausa"},
>>>>     {"hi","Hindi"},
>>>>     {"he","Hebrew"},
>>>>     {"hr","Croatian"},
>>>>     {"hu","Hungarian"},
>>>>     {"hy","Armenian"},
>>>>     {"ia","Interlingua"},
>>>>     {"ie","Interlingue"},
>>>>     {"ik","Inupiak"},
>>>>     {"in","Indonesian"},
>>>>     {"is","Icelandic"},
>>>>     {"it","Italian"},
>>>>     {"iw","Hebrew"},
>>>>     {"ja","Japanese"},
>>>>     {"ji","Yiddish"},
>>>>     {"jw","Javanese"},
>>>>     {"ka","Georgian"},
>>>>     {"kk","Kazakh"},
>>>>     {"kl","Greenlandic"},
>>>>     {"km","Cambodian"},
>>>>     {"kn","Kannada"},
>>>>     {"ko","Korean"},
>>>>     {"ks","Kashmiri"},
>>>>     {"ku","Kurdish"},
>>>>     {"ky","Kirghiz"},
>>>>     {"la","Latin"},
>>>>     {"ln","Lingala"},
>>>>     {"lo","Laothian"},
>>>>     {"lt","Lithuanian"},
>>>>     {"lv","Latvian"},
>>>>     {"mg","Malagasy"},
>>>>     {"mi","Maori"},
>>>>     {"mk","Macedonian"},
>>>>     {"ml","Malayalam"},
>>>>     {"mn","Mongolian"},
>>>>     {"mo","Moldavian"},
>>>>     {"mr","Marathi"},
>>>>     {"ms","Malay"},
>>>>     {"mt","Maltese"},
>>>>     {"my","Burmese"},
>>>>     {"na","Nauru"},
>>>>     {"nb","Norwegian Bokmal"},
>>>>     {"ne","Nepali"},
>>>>     {"nl","Dutch"},
>>>>     {"nn","Norwegian Nynorsk"},
>>>>     {"no","Norwegian"},
>>>>     {"oc","Occitan"},
>>>>     {"om","Oromo"},
>>>>     {"or","Oriya"},
>>>>     {"pa","Punjabi"},
>>>>     {"pl","Polish"},
>>>>     {"ps","Pashto"},
>>>>     {"pt","Portuguese"},
>>>>     {"qu","Quechua"},
>>>>     {"rm","Rhaeto-Romance"},
>>>>     {"rn","Kirundi"},
>>>>     {"ro","Romanian"},
>>>>     {"ru","Russian"},
>>>>     {"rw","Kinyarwanda"},
>>>>     {"sa","Sanskrit"},
>>>>     {"sd","Sindhi"},
>>>>     {"sg","Sangro"},
>>>>     {"sh","Serbo-Croatian"},
>>>>     {"si","Singhalese"},
>>>>     {"sk","Slovak"},
>>>>     {"sl","Slovenian"},
>>>>     {"sm","Samoan"},
>>>>     {"sn","Shona"},
>>>>     {"so","Somali"},
>>>>     {"sq","Albanian"},
>>>>     {"sr","Serbian"},
>>>>     {"ss","Siswati"},
>>>>     {"st","Sesotho"},
>>>>     {"su","Sudanese"},
>>>>     {"sv","Swedish"},
>>>>     {"sw","Swahili"},
>>>>     {"ta","Tamil"},
>>>>     {"te","Tegulu"},
>>>>     {"tg","Tajik"},
>>>>     {"th","Thai"},
>>>>     {"ti","Tigrinya"},
>>>>     {"tk","Turkmen"},
>>>>     {"tl","Tagalog"},
>>>>     {"tn","Setswana"},
>>>>     {"to","Tonga"},
>>>>     {"tr","Turkish"},
>>>>     {"ts","Tsonga"},
>>>>     {"tt","Tatar"},
>>>>     {"tw","Twi"},
>>>>     {"uk","Ukrainian"},
>>>>     {"ur","Urdu"},
>>>>     {"uz","Uzbek"},
>>>>     {"vi","Vietnamese"},
>>>>     {"vo","Volapuk"},
>>>>     {"wo","Wolof"},
>>>>     {"xh","Xhosa"},
>>>>     {"yo","Yoruba"},
>>>>     {"zh","Chinese"},
>>>>     {"zu","Zulu"},
>>>>     /* C locale expansion is added per local */
>>>>     /* conventions though not a part of iso639 standard */
>>>>     {"C","C/POSIX"}
>>>> };
>>>>
>>>> #endif /* _ISO639_H */
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>
>
> -- 
>
> Damien Donlon
> damien.donlon@xxxxxxx
> 00 353 1 8199225
> x19225
>
>
> 

_______________________________________________
i18n-discuss mailing list
i18n-discuss@xxxxxxxxxxxxxxx
http://mail.opensolaris.org/mailman/listinfo/i18n-discuss

<Prev in Thread] Current Thread [Next in Thread>