, for example) in both ways, e.g.i18n:language de ==> German i18n:language English ==> en i18n:country TK ==> Tokelau i18n:country India ==> INCalled without arguments, they return a sorted list of the codes they know, so you can call them like
foreach i [i18n:country] {puts "$i is for [i18n:country $i]"}Not very fascinating algorithms, but the data (I pasted them from web pages and formatted them for Tcl) may be useful for people involved in I18N (that's Internationalization, because there's 18 letters between the I and the N ;-)See also http://www.unicode.org/onlinedat/languages.html
and http://www.unicode.org/onlinedat/countries.html
proc i18n:language {{what ""}} {
set list {
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
fi Finnish fj Fiji fo Faroese fr French fy Frisian ga Irish
gl Galician gn Guarani gu Gujarati ha Hausa hi Hindi hr Croatian
hu Hungarian hy Armenian ia Interlingua ie Interlingue ik Inupiak
in Indonesian is Icelandic it Italian iw Hebrew ja Japanese ji Yiddish
jv 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 ne Nepali nl Dutch no Norwegian
oc Occitan om Afan(Oromo) or Oriya pa Punjabi pl Polish ps Pashto
pt Portuguese qu Quechua rm Rhaeto-romance rn Kurundi ro Romanian
ru Russian rw Kinyarwanda sa Sanskrit sd Sindhi sg Sangho
sh Serbo-croatian si Singhalese sk Slovak sl Slovenian sm Samoan
sn Shona so Somali sq Albanian sr Serbian ss Siswati st Sesotho
su Sundanese sv Swedish sw Swahili ta Tamil te Telugu 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
}
if {$what==""} {
foreach {short long} $list {lappend res $short}
return [lsort $res]
}
set i [lsearch -exact $list $what]
if {$i==-1} {return "--"}
if {$i%2} {return [lindex $list [expr $i-1]]}
return [lindex $list [expr $i+1]]
} proc i18n:country {{what ""}} {
set list {
AD Andorra AE {United Arab Emirates} AF Afghanistan AG {Antigua and Barbuda}
AI Anguilla AL Albania AM Armenia AN {Netherlands Antilles} AO Angola
AQ Antarctica AR Argentina AS {American Samoa} AT Austria AU Australia
AW Aruba AZ Azerbaijan BA {Bosnia and Herzegowina} BB Barbados
BD Bangladesh BE Belgium BF {Burkina Faso} BG Bulgaria BH Bahrain BI Burundi
BJ Benin BM Bermuda BN {Brunei Darussalam} BO Bolivia BR Brazil BS Bahamas
BT Bhutan BV {Bouvet Island} BW Botswana BY Belarus BZ Belize CA Canada
CC {Cocos (Keeling) Islands} CF {Central African Republic} CG Congo
CH Switzerland CI {Cote d'Ivoire} CK {Cook Islands} CL Chile CM Cameroon
CN China CO Colombia CR {Costa Rica} CU Cuba CV {Cape Verde}
CX {Christmas Island} CY Cyprus CZ {Czech Republic} DE Germany DJ Djibouti
DK Denmark DM Dominica DO {Dominican Republic} DZ Algeria EC Ecuador
EE Estonia EG Egypt EH {Western Sahara} ER Eritrea ES Spain ET Ethiopia
FI Finland FJ Fiji FK {Falkland Islands (Malvinas)}
FM {Micronesia, Federated States Of} FO {Faroe Islands} FR France
FX {France, Metropolitan} GA Gabon GB {United Kingdom} GD Grenada GE Georgia
GF {French Guiana} GH Ghana GI Gibraltar GL Greenland GM Gambia GN Guinea
GP Guadeloupe GQ {Equatorial Guinea} GR Greece
GS {South Georgia and The South Sandwich Islands} GT Guatemala GU Guam
GW Guinea-Bissau GY Guyana HK {Hong Kong} HM {Heard and Mc Donald Islands}
HN Honduras HR {Croatia} HT Haiti HU Hungary ID Indonesia IE Ireland
IL Israel IN India IO {British Indian Ocean Territory} IQ Iraq
IR {Iran} IS Iceland IT Italy JM Jamaica JO Jordan JP Japan KE Kenya
KG Kyrgyzstan KH Cambodia KI Kiribati KM Comoros KN {Saint Kitts and Nevis}
KP {Korea, Democratic People's Republic Of} KR {Korea, Republic Of}
KW Kuwait KY {Cayman Islands} KZ Kazakhstan
LA {Lao People's Democratic Republic} LB Lebanon LC {Saint Lucia}
LI Liechtenstein LK {Sri Lanka} LR Liberia LS Lesotho LT Lithuania
LU Luxembourg LV Latvia LY {Libyan Arab Jamahiriya} MA Morocco MC Monaco
MD {Moldova, Republic Of} MG Madagascar MH {Marshall Islands}
MK {Macedonia, The Former Yugoslav Republic Of} ML Mali MM Myanmar
MN Mongolia MO Macau MP {Northern Mariana Islands} MQ Martinique
MR Mauritania MS Montserrat MT Malta MU Mauritius MV Maldives MW Malawi
MX Mexico MY Malaysia MZ Mozambique NA Namibia NC {New Caledonia}
NE Niger NF {Norfolk Island} NG Nigeria NI Nicaragua NL Netherlands
NO Norway NP Nepal NR Nauru NU Niue NZ {New Zealand} OM Oman PA Panama
PE Peru PF {French Polynesia} PG {Papua New Guinea} PH Philippines
PK Pakistan PL Poland PM {St. Pierre and Miquelon} PN Pitcairn
PR {Puerto Rico} PT Portugal PW Palau PY Paraguay QA Qatar RE Reunion
RO Romania RU {Russian Federation} RW Rwanda SA {Saudi Arabia}
SB {Solomon Islands} SC Seychelles SD Sudan SE Sweden SG Singapore
SH {St. Helena} SI Slovenia SJ {Svalbard and Jan Mayen Islands}
SK {Slovakia (Slovak Republic)} SL {Sierra Leone} SM {San Marino} SN Senegal
SO Somalia SR Suriname ST {Sao Tome and Principe} SV {El Salvador}
SY {Syrian Arab Republic} SZ Swaziland TC {Turks and Caicos Islands}
TD Chad TF {French Southern Territories} TG Togo TH Thailand TJ Tajikistan
TK Tokelau TM Turkmenistan TN Tunisia TO Tonga TP {East Timor} TR Turkey
TT {Trinidad and Tobago} TV Tuvalu TW {Taiwan}
TZ {Tanzania, United Republic Of} UA Ukraine UG Uganda
UM {United States Minor Outlying Islands} US {United States}
UY Uruguay UZ Uzbekistan
VA {Vatican State} VC {Saint Vincent and The Grenadines} VE Venezuela
VG {Virgin Islands (British)} VI {Virgin Islands (U.S.)} VN {Viet Nam}
VU Vanuatu WF {Wallis and Futuna Islands} WS Samoa YE Yemen YT Mayotte
YU Yugoslavia ZA {South Africa} ZM Zambia ZR Zaire ZW Zimbabwe
}
if {$what==""} {
foreach {short long} $list {lappend res $short}
return [lsort $res]
}
set i [lsearch -exact $list $what]
if {$i==-1} {return "--"}
if {$i%2} {return [lindex $list [expr $i-1]]}
return [lindex $list [expr $i+1]]
}
# Test:
catch {console show}
foreach i [i18n:country] {puts "$i is for [i18n:country $i]"}i18n - writing for the world | Arts and crafts of Tcl-Tk programming

