Question

Is there any module for getting user's language based on IP address or country (X-AppEngine-Country) in AppEngine? I need it to be in ISO 639-2 format. It doesn't have to be very precise, since users will be able to change it any time.

Was it helpful?

Solution

This is the list of official languages by country:

http://en.wikipedia.org/wiki/List_of_official_languages_by_state

You can also look at this file which includes country and language codes:

http://download.geonames.org/export/dump/countryInfo.txt

You can put it in a simple Python dictionary to use in your application.

OTHER TIPS

Based on the second link from Andrei's answer, I've created this dictionary.

Warning: it's not 100% correct and may not work for everyone (depends on particular language code format you need).

countryLangs = { "CN":"zh-CN", "IN":"hi", "US":"en", "ID":"id", "BR":"pt-BR", "PK":"ur",
 "BD":"bn", "NG":"en", "RU":"ru", "JP":"ja", "MX":"es", "PH":"tl", "VN":"vi", "ET":"am", 
 "DE":"de", "EG":"ar", "TR":"tr", "IR":"fa", "CD":"fr", "TH":"th", "FR":"fr", "GB":"en", 
 "IT":"it", "MM":"my", "ZA":"zu", "KR":"ko", "ES":"es", "UA":"uk", "CO":"es", "TZ":"sw", 
 "AR":"es", "KE":"en", "PL":"pl", "SD":"ar", "DZ":"ar", "CA":"en", "UG":"en", "MA":"ar", 
 "PE":"es", "IQ":"ar", "AF":"fa", "NP":"ne", "MY":"ms", "UZ":"uz", "VE":"es", "SA":"ar", 
 "GH":"en", "YE":"ar", "KP":"ko", "TW":"zh", "SY":"ar", "MZ":"pt", "RO":"ro", "AU":"en", 
 "LK":"si", "MG":"fr", "CI":"fr", "CM":"en", "CL":"es", "NL":"nl", "BF":"fr", "NE":"fr", 
 "MW":"ny", "KZ":"kk", "EC":"es", "KH":"km", "ML":"fr", "GT":"es", "ZM":"en", "AO":"pt", 
 "SN":"fr", "ZW":"en", "CU":"es", "RW":"rw", "GR":"el", "CS":"cu", "PT":"pt", "TN":"ar", 
 "TD":"fr", "CZ":"cs", "BE":"nl", "GN":"fr", "SO":"so", "HU":"hu", "BO":"es", "BI":"fr", 
 "DO":"es", "BY":"be", "HT":"ht", "SE":"sv", "BJ":"fr", "AZ":"az", "SS":"en", "AT":"de", 
 "HN":"es", "CH":"de", "TJ":"tg", "IL":"he", "RS":"sr", "BG":"bg", "HK":"zh", "TG":"fr", 
 "LY":"ar", "JO":"ar", "PY":"es", "LA":"lo", "PG":"en", "SV":"es", "NI":"es", "ER":"aa", 
 "KG":"ky", "DK":"da", "SK":"sk", "SL":"en", "FI":"fi", "NO":"no", "AE":"ar", "TM":"tk", 
 "CF":"fr", "SG":"cmn", "GE":"ka", "IE":"en", "BA":"bs", "CR":"es", "HR":"hr", "MD":"ro", 
 "NZ":"en", "LB":"ar", "PR":"en", "PS":"ar", "LR":"en", "LT":"lt", "UY":"es", "PA":"es",
 "MR":"ar", "MN":"mn", "CG":"fr", "AL":"sq", "AM":"hy", "OM":"ar", "JM":"en", "KW":"ar", 
 "LV":"lv", "NA":"en", "MK":"mk", "BW":"en", "SI":"sl", "LS":"en", "XK":"sq", "GM":"en", 
 "GW":"pt", "GA":"fr", "SZ":"en", "MU":"en", "EE":"et", "TT":"en", "TL":"tet", "CY":"el", 
 "GQ":"es", "FJ":"en", "QA":"ar", "RE":"fr", "KM":"ar", "GY":"en", "DJ":"fr", "BH":"ar", 
 "BT":"dz", "ME":"sr", "SB":"en", "CV":"pt", "LU":"lb", "SR":"nl", "MO":"zh", "GP":"fr", 
 "MQ":"fr", "MT":"mt", "MV":"dv", "BN":"ms", "BZ":"en", "IS":"is", "BS":"en", "BB":"en", 
 "EH":"ar", "PF":"fr", "VU":"bi", "NC":"fr", "GF":"fr", "WS":"sm", "ST":"pt", "LC":"en", 
 "GU":"en", "YT":"fr", "CW":"nl", "AN":"nl", "TO":"to", "VI":"en", "GD":"en", "FM":"en", 
 "VC":"en", "KI":"en", "JE":"en", "SC":"en", "AG":"en", "AD":"ca", "IM":"en", "DM":"en", 
 "AW":"nl", "MH":"mh", "BM":"en", "GG":"en", "AS":"en", "GL":"kl", "MP":"fil", "KN":"en", 
 "FO":"fo", "KY":"en", "SX":"nl", "MF":"fr", "LI":"de", "MC":"fr", "SM":"it", "GI":"en", 
 "AX":"sv", "VG":"en", "CK":"en", "TC":"en", "PW":"pau", "BQ":"nl", "WF":"wls", "AI":"en", 
 "TV":"tvl", "NR":"na", "MS":"en", "BL":"fr", "SH":"en", "PM":"fr", "IO":"en", "FK":"en", 
 "SJ":"no", "NU":"niu", "NF":"en", "CX":"en", "TK":"tkl", "VA":"la", "CC":"ms", "TF":"fr", 
 "PN":"en", "GS":"en", "UM":"en" }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top