Locales
Instead of using the ISO 639 language codes employed across the internet, Facebook has devised their own system of labeling languages. Some are the same as the ISO standard, but others are not. There also seems to be support lacking for Accept-Language: HTTP request headers.
Each code is made up of two parts as follows:
[language]_[region]
Contents |
Getting the User's Locale
If your application runs through the canvas (iframe or FBML), your application will receive a signed_request
on each page load. Regardless of whether the user has signed in or not, you will receive user locale information. In the same JSON encoded object you will also receive the 2 letter country code based on the user's IP address (not what they've entered in their profile).
Example retrieving locale via the PHP SDK:
// assumes $facebook is already created and initialized earlier $signed_request = $facebook->getSignedRequest(); $locale = $signed_request['user']['locale']; $country = $signed_request['user']['country']; // get age range of current user $age_min = isset($signed_request['user']['age']) && isset($signed_request['user']['age']['min']) ? $signed_request['user']['age']['min'] : 0; $age_max = isset($signed_request['user']['age']) && isset($signed_request['user']['age']['max']) ? $signed_request['user']['age']['max'] : 199;
Complete List (as of 2012-06-10)
The list is in the same order that it appears on Facebook when you click the language link at the bottom of the page.
The "Publish Code" is taken from locale csv file provided by Facebook and is used when targeting posts to a pages wall via the "targeting" variable. As you can see, there are some languages that people can select that can't be targeted yet by page posts.
Code | Language | Language (in English) | Status | Publish Code |
---|---|---|---|---|
af_ZA | Afrikaans | Afrikaans | 36 | |
gn_PY | Avañe'ẽ | Guaraní | ||
ay_BO | Aymar aru | Aymara | ||
az_AZ | Azərbaycan dili | Azeri | beta | |
id_ID | Bahasa Indonesia | Indonesian | 25 | |
ms_MY | Bahasa Melayu | Malay | 41 | |
jv_ID | Basa Jawa | Javanese | ||
bs_BA | Bosanski | Bosnian | beta | |
ca_ES | Català | Catalan | 1 | |
cs_CZ | Čeština | Czech | 2 | |
ck_US | Cherokee | Cherokee | ||
cy_GB | Cymraeg | Welsh | 3 | |
da_DK | Dansk | Danish | 4 | |
se_NO | Davvisámegiella | Northern Sámi | ||
de_DE | Deutsch | German | 5 | |
et_EE | Eesti | Estonian | beta | |
en_IN | English (India) | English (India) | ||
en_PI | English (Pirate) | English (Pirate) | beta | |
en_GB | English (UK) | English (UK) | 24 | |
en_UD | English (Upside Down) | English (Upside Down) | 51 | |
en_US | English (US) | English (US) | 6 | |
es_LA | Español | Spanish | 23 | |
es_CL | Español (Chile) | Spanish (Chile) | ||
es_CO | Español (Colombia) | Spanish (Colombia) | ||
es_ES | Español (España) | Spanish (Spain) | 7 | |
es_MX | Español (México) | Spanish (Mexico) | ||
es_VE | Español (Venezuela) | Spanish (Venezuela) | ||
eo_EO | Esperanto | Esperanto | beta | |
eu_ES | Euskara | Basque | beta | |
tl_PH | Filipino | Filipino | 26 | |
fo_FO | Føroyskt | Faroese | beta | |
fr_FR | Français (France) | French (France) | 9 | |
fr_CA | Français (Canada) | French (Canada) | 44 | |
fy_NL | Frysk | Frisian | beta | |
ga_IE | Gaeilge | Irish | beta | |
gl_ES | Galego | Galician | beta | |
ko_KR | 한국어 | Korean | 12 | |
hr_HR | Hrvatski | Croatian | 38 | |
xh_ZA | isiXhosa | Xhosa | ||
zu_ZA | isiZulu | Zulu | ||
is_IS | Íslenska | Icelandic | beta | |
it_IT | Italiano | Italian | 10 | |
ka_GE | ქართული | Georgian | beta | |
sw_KE | Kiswahili | Swahili | beta | |
tl_ST | tlhIngan-Hol | Klingon | ||
ku_TR | Kurdî | Kurdish | beta | |
lv_LV | Latviešu | Latvian | beta | |
fb_LT | Leet Speak | Leet Speak | beta | |
lt_LT | Lietuvių | Lithuanian | 40 | |
li_NL | Lèmbörgs | Limburgish | ||
la_VA | lingua latina | Latin | beta | |
hu_HU | Magyar | Hungarian | 30 | |
mg_MG | Malagasy | Malagasy | ||
mt_MT | Malti | Maltese | ||
nl_NL | Nederlands | Dutch | 14 | |
nl_BE | Nederlands (België) | Dutch (België) | ||
ja_JP | 日本語 | Japanese | 11 | |
nb_NO | Norsk (bokmål) | Norwegian (bokmal) | 13 | |
nn_NO | Norsk (nynorsk) | Norwegian (nynorsk) | beta | |
uz_UZ | O'zbek | Uzbek | ||
pl_PL | Polski | Polish | 15 | |
pt_BR | Português (Brasil) | Portuguese (Brazil) | 16 | |
pt_PT | Português (Portugal) | Portuguese (Portugal) | 31 | |
qu_PE | Qhichwa | Quechua | ||
ro_RO | Română | Romanian | 32 | |
rm_CH | Rumantsch | Romansh | ||
ru_RU | Русский | Russian | 17 | |
sq_AL | Shqip | Albanian | beta | |
sk_SK | Slovenčina | Slovak | 33 | |
sl_SI | Slovenščina | Slovenian | 34 | |
so_SO | Soomaaliga | Somali | ||
fi_FI | Suomi | Finnish | 8 | |
sv_SE | Svenska | Swedish | 18 | |
th_TH | ภาษาไทย | Thai | 35 | |
vi_VN | Tiếng Việt | Vietnamese | 27 | |
tr_TR | Türkçe | Turkish | 19 | |
zh_CN | 中文(简体) | Simplified Chinese (China) | 20 | |
zh_TW | 中文(台灣) | Traditional Chinese (Taiwan) | 22 | |
zh_HK | 中文(香港) | Traditional Chinese (Hong Kong) | 21 | |
el_GR | Ελληνικά | Greek | 39 | |
gx_GR | Ἑλληνική ἀρχαία | Classical Greek | ||
be_BY | Беларуская | Belarusian | beta | |
bg_BG | Български | Bulgarian | 37 | |
kk_KZ | Қазақша | Kazakh | ||
mk_MK | Македонски | Macedonian | beta | |
mn_MN | Монгол | Mongolian | ||
sr_RS | Српски | Serbian | 42 | |
tt_RU | татарча / Tatarça / تاتارچا | Tatar | ||
tg_TJ | тоҷикӣ, تاجیکی, tojikī | Tajik | ||
uk_UA | Українська | Ukrainian | beta | |
hy_AM | Հայերեն | Armenian | beta | |
yi_DE | ייִדיש | Yiddish | ||
he_IL | עברית | Hebrew | 29 | |
ur_PK | اردو | Urdu | ||
ar_AR | العربية | Arabic | 28 | |
ps_AF | پښتو | Pashto | beta | |
fa_IR | فارسی | Persian | beta | |
sy_SY | ܐܪܡܝܐ | Syriac | ||
ne_NP | नेपाली | Nepali | beta | |
mr_IN | मराठी | Marathi | ||
sa_IN | संस्कृतम् | Sanskrit | ||
hi_IN | हिन्दी | Hindi | 46 | |
bn_IN | বাংলা | Bengali | 45 | |
pa_IN | ਪੰਜਾਬੀ | Punjabi | 47 | |
gu_IN | ગુજરાતી | Gujarati | ||
ta_IN | தமிழ் | Tamil | 48 | |
te_IN | తెలుగు | Telugu | 49 | |
kn_IN | ಕನ್ನಡ | Kannada | ||
ml_IN | മലയാളം | Malayalam | 50 | |
km_KH | ភាសាខ្មែរ | Khmer |
Useless, Dead, Nearly-Dead, or Not Used Languages
These are languages you can probably not bother with...
- en_PI - English (Pirate) [beta]
- en_UD - English (Upside Down)
- eo_EO - Esperanto (Esperanto [beta])
- fb_LT - Leet Speak (Leet Speak [beta])
- la_VA - lingua latina (Latin [beta])
- be_BY - Беларуская (Belarusian [beta])
- tl_ST - tlhIngan-Hol (Klingon)
- gx_GR - Ἑλληνική ἀρχαία (Classical Greek)
Languages and Codes Previously Proposed
Here is a list of codes that were proposed to be used and seem to have partially existing support. None of these languages can be selected by Facebook users as their default language/locale. None of these languages appear in the "Translation App" to allow users to translate applications into other languages.
This list was taken from a page on Wing's FAQ which apparently was originally taken from the official Facebook Developer Wiki. The list can also be found at http://www.facebook.com/translations/FacebookLocales.xml .
The last column is if the https://connect.facebook.net/xx_XX/all.js
JavaScript file exists where xx_XX
is the language code given.
These locale codes also appear to work for the different Social Widgets.
Code | Language | Language (in English) | JavaScript Exists | Possible Replacement |
---|---|---|---|---|
fb_FI | Finnish (test) | no | fi_FI |