I have been working with CultureInfo on a current project in order to display content in English and Chinese WITHOUT having to make multiple copies of each .aspx file. Originally, I had used this article (which coincidentally the author is localizing for Chinese): Localization in ASP.NET 2.0. This was a great help in getting started.
However, I learned a bit more while working on the International BlogEngine.NET theme (which made me go back to my current project and restructure a few things):
The key to understanding Internationalization in .NET is the CultureInfo class and how Cultures are named.
- Three important types of Cultures: Invariant, Neutral, and Specific. The Invariant is a default, and is represented by an empty String.
- Neutral Cultures are usually represented by a lowercase two-character String, such as en (English), fr (French), es (Spanish), and represent a language, with no information about location.
- Specific Cultures represent a language and a location and are usually represented by a lowercase-two character String (language), plus an uppercase two character String (Country), separated by a dash. Some examples include: en-GB (English, Great Britian), en-US (English, U.S.), fr-CA (French, Canada).
- The Culture Names for Chinese are a bit odd. zh-CHS represents Simplified Chinese, the form of written Chinese used by the mainland. zh-CHT represents Traditional Chinese, used by Hong Kong and Taiwan. There is no culture with the name of just zh to represent Chinese in general. I learned this the hard way when attempting to simplify the names of my Resource files (.resx files) so that they did not represent a specific culture and tried to use just zh for my Simplified Chinese, which needless to say did not work.
- There are a handful of other exceptions to be aware of.
Here is a table (pulled from MSDN):
| Culture Name | Language-Country/Region |
| "" (empty string) | invariant culture |
| af | Afrikaans |
| af-ZA | Afrikaans - South Africa |
| sq | Albanian |
| sq-AL | Albanian - Albania |
| ar | Arabic |
| ar-DZ | Arabic - Algeria |
| ar-BH | Arabic - Bahrain |
| ar-EG | Arabic - Egypt |
| ar-IQ | Arabic - Iraq |
| ar-JO | Arabic - Jordan |
| ar-KW | Arabic - Kuwait |
| ar-LB | Arabic - Lebanon |
| ar-LY | Arabic - Libya |
| ar-MA | Arabic - Morocco |
| ar-OM | Arabic - Oman |
| ar-QA | Arabic - Qatar |
| ar-SA | Arabic - Saudi Arabia |
| ar-SY | Arabic - Syria |
| ar-TN | Arabic - Tunisia |
| ar-AE | Arabic - United Arab Emirates |
| ar-YE | Arabic - Yemen |
| hy | Armenian |
| hy-AM | Armenian - Armenia |
| az | Azeri |
| az-AZ-Cyrl | Azeri (Cyrillic) - Azerbaijan |
| az-AZ-Latn | Azeri (Latin) - Azerbaijan |
| eu | Basque |
| eu-ES | Basque - Basque |
| be | Belarusian |
| be-BY | Belarusian - Belarus |
| bg | Bulgarian |
| bg-BG | Bulgarian - Bulgaria |
| ca | Catalan |
| ca-ES | Catalan - Catalan |
| zh-HK | Chinese - Hong Kong SAR |
| zh-MO | Chinese - Macao SAR |
| zh-CN | Chinese - China |
| zh-CHS | Chinese (Simplified) |
| zh-SG | Chinese - Singapore |
| zh-TW | Chinese - Taiwan |
| zh-CHT | Chinese (Traditional) |
| hr | Croatian |
| hr-HR | Croatian - Croatia |
| cs | Czech |
| cs-CZ | Czech - Czech Republic |
| da | Danish |
| da-DK | Danish - Denmark |
| div | Dhivehi |
| div-MV | Dhivehi - Maldives |
| nl | Dutch |
| nl-BE | Dutch - Belgium |
| nl-NL | Dutch - The Netherlands |
| en | English |
| en-AU | English - Australia |
| en-BZ | English - Belize |
| en-CA | English - Canada |
| en-CB | English - Caribbean |
| en-IE | English - Ireland |
| en-JM | English - Jamaica |
| en-NZ | English - New Zealand |
| en-PH | English - Philippines |
| en-ZA | English - South Africa |
| en-TT | English - Trinidad and Tobago |
| en-GB | English - United Kingdom |
| en-US | English - United States |
| en-ZW | English - Zimbabwe |
| et | Estonian |
| et-EE | Estonian - Estonia |
| fo | Faroese |
| fo-FO | Faroese - Faroe Islands |
| fa | Farsi |
| fa-IR | Farsi - Iran |
| fi | Finnish |
| fi-FI | Finnish - Finland |
| fr | French |
| fr-BE | French - Belgium |
| fr-CA | French - Canada |
| fr-FR | French - France |
| fr-LU | French - Luxembourg |
| fr-MC | French - Monaco |
| fr-CH | French - Switzerland |
| gl | Galician |
| gl-ES | Galician - Galician |
| ka | Georgian |
| ka-GE | Georgian - Georgia |
| de | German |
| de-AT | German - Austria |
| de-DE | German - Germany |
| de-LI | German - Liechtenstein |
| de-LU | German - Luxembourg |
| de-CH | German - Switzerland |
| el | Greek |
| el-GR | Greek - Greece |
| gu | Gujarati |
| gu-IN | Gujarati - India |
| he | Hebrew |
| he-IL | Hebrew - Israel |
| hi | Hindi |
| hi-IN | Hindi - India |
| hu | Hungarian |
| hu-HU | Hungarian - Hungary |
| is | Icelandic |
| is-IS | Icelandic - Iceland |
| id | Indonesian |
| id-ID | Indonesian - Indonesia |
| it | Italian |
| it-IT | Italian - Italy |
| it-CH | Italian - Switzerland |
| ja | Japanese |
| ja-JP | Japanese - Japan |
| kn | Kannada |
| kn-IN | Kannada - India |
| kk | Kazakh |
| kk-KZ | Kazakh - Kazakhstan |
| kok | Konkani |
| kok-IN | Konkani - India |
| ko | Korean |
| ko-KR | Korean - Korea |
| ky | Kyrgyz |
| ky-KG | Kyrgyz - Kyrgyzstan |
| lv | Latvian |
| lv-LV | Latvian - Latvia |
| lt | Lithuanian |
| lt-LT | Lithuanian - Lithuania |
| mk | Macedonian |
| mk-MK | Macedonian - Former Yugoslav Republic of Macedonia |
| ms | Malay |
| ms-BN | Malay - Brunei |
| ms-MY | Malay - Malaysia |
| mr | Marathi |
| mr-IN | Marathi - India |
| mn | Mongolian |
| mn-MN | Mongolian - Mongolia |
| no | Norwegian |
| nb-NO | Norwegian (Bokmål) - Norway |
| nn-NO | Norwegian (Nynorsk) - Norway |
| pl | Polish |
| pl-PL | Polish - Poland |
| pt | Portuguese |
| pt-BR | Portuguese - Brazil |
| pt-PT | Portuguese - Portugal |
| pa | Punjabi |
| pa-IN | Punjabi - India |
| ro | Romanian |
| ro-RO | Romanian - Romania |
| ru | Russian |
| ru-RU | Russian - Russia |
| sa | Sanskrit |
| sa-IN | Sanskrit - India |
| sr-SP-Cyrl | Serbian (Cyrillic) - Serbia |
| sr-SP-Latn | Serbian (Latin) - Serbia |
| sk | Slovak |
| sk-SK | Slovak - Slovakia |
| sl | Slovenian |
| sl-SI | Slovenian - Slovenia |
| es | Spanish |
| es-AR | Spanish - Argentina |
| es-BO | Spanish - Bolivia |
| es-CL | Spanish - Chile |
| es-CO | Spanish - Colombia |
| es-CR | Spanish - Costa Rica |
| es-DO | Spanish - Dominican Republic |
| es-EC | Spanish - Ecuador |
| es-SV | Spanish - El Salvador |
| es-GT | Spanish - Guatemala |
| es-HN | Spanish - Honduras |
| es-MX | Spanish - Mexico |
| es-NI | Spanish - Nicaragua |
| es-PA | Spanish - Panama |
| es-PY | Spanish - Paraguay |
| es-PE | Spanish - Peru |
| es-PR | Spanish - Puerto Rico |
| es-ES | Spanish - Spain |
| es-UY | Spanish - Uruguay |
| es-VE | Spanish - Venezuela |
| sw | Swahili |
| sw-KE | Swahili - Kenya |
| sv | Swedish |
| sv-FI | Swedish - Finland |
| sv-SE | Swedish - Sweden |
| syr | Syriac |
| syr-SY | Syriac - Syria |
| ta | Tamil |
| ta-IN | Tamil - India |
| tt | Tatar |
| tt-RU | Tatar - Russia |
| te | Telugu |
| te-IN | Telugu - India |
| th | Thai |
| th-TH | Thai - Thailand |
| tr | Turkish |
| tr-TR | Turkish - Turkey |
| uk | Ukrainian |
| uk-UA | Ukrainian - Ukraine |
| ur | Urdu |
| ur-PK | Urdu - Pakistan |
| uz | Uzbek |
| uz-UZ-Cyrl | Uzbek (Cyrillic) - Uzbekistan |
| uz-UZ-Latn | Uzbek (Latin) - Uzbekistan |
| vi | Vietnamese |
| vi-VN | Vietnamese - Vietnam |
Thnx for Sharing
ReplyDelete