php - How to know user's language? -
possible duplicate:
javascript detecting browser language preference
detect browser language in php
what's best method detect language?
i have created website in world can visit.
so, need way know approximately user's language without asking them.
obviously, there link sets language via cookie.
you can use accept-language http request header sent every browser.
i found function parse it:
function getpreferredlanguage() { $langs = array(); if (isset($_server['http_accept_language'])) { // break string pieces (languages , q factors) preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_server['http_accept_language'], $lang_parse); if (count($lang_parse[1])) { // create list "en" => 0.8 $langs = array_combine($lang_parse[1], $lang_parse[4]); // set default 1 without q factor foreach ($langs $lang => $val) { if ($val === '') $langs[$lang] = 1; } // sort list based on value arsort($langs, sort_numeric); } } //extract important (first) foreach ($langs $lang => $val) { break; } //if complex language simplify if (stristr($lang,"-")) {$tmp = explode("-",$lang); $lang = $tmp[0]; } return $lang; } $language = getpreferredlanguage(); http://snipplr.com/view.php?codeview&id=24897
if want full version of (e.g. english), can use array:
$languagecodes = array( "aa" => "afar", "ab" => "abkhazian", "ae" => "avestan", "af" => "afrikaans", "ak" => "akan", "am" => "amharic", "an" => "aragonese", "ar" => "arabic", "as" => "assamese", "av" => "avaric", "ay" => "aymara", "az" => "azerbaijani", "ba" => "bashkir", "be" => "belarusian", "bg" => "bulgarian", "bh" => "bihari", "bi" => "bislama", "bm" => "bambara", "bn" => "bengali", "bo" => "tibetan", "br" => "breton", "bs" => "bosnian", "ca" => "catalan", "ce" => "chechen", "ch" => "chamorro", "co" => "corsican", "cr" => "cree", "cs" => "czech", "cu" => "church slavic", "cv" => "chuvash", "cy" => "welsh", "da" => "danish", "de" => "german", "dv" => "divehi", "dz" => "dzongkha", "ee" => "ewe", "el" => "greek", "en" => "english", "eo" => "esperanto", "es" => "spanish", "et" => "estonian", "eu" => "basque", "fa" => "persian", "ff" => "fulah", "fi" => "finnish", "fj" => "fijian", "fo" => "faroese", "fr" => "french", "fy" => "western frisian", "ga" => "irish", "gd" => "scottish gaelic", "gl" => "galician", "gn" => "guarani", "gu" => "gujarati", "gv" => "manx", "ha" => "hausa", "he" => "hebrew", "hi" => "hindi", "ho" => "hiri motu", "hr" => "croatian", "ht" => "haitian", "hu" => "hungarian", "hy" => "armenian", "hz" => "herero", "ia" => "interlingua (international auxiliary language association)", "id" => "indonesian", "ie" => "interlingue", "ig" => "igbo", "ii" => "sichuan yi", "ik" => "inupiaq", "io" => "ido", "is" => "icelandic", "it" => "italian", "iu" => "inuktitut", "ja" => "japanese", "jv" => "javanese", "ka" => "georgian", "kg" => "kongo", "ki" => "kikuyu", "kj" => "kwanyama", "kk" => "kazakh", "kl" => "kalaallisut", "km" => "khmer", "kn" => "kannada", "ko" => "korean", "kr" => "kanuri", "ks" => "kashmiri", "ku" => "kurdish", "kv" => "komi", "kw" => "cornish", "ky" => "kirghiz", "la" => "latin", "lb" => "luxembourgish", "lg" => "ganda", "li" => "limburgish", "ln" => "lingala", "lo" => "lao", "lt" => "lithuanian", "lu" => "luba-katanga", "lv" => "latvian", "mg" => "malagasy", "mh" => "marshallese", "mi" => "maori", "mk" => "macedonian", "ml" => "malayalam", "mn" => "mongolian", "mr" => "marathi", "ms" => "malay", "mt" => "maltese", "my" => "burmese", "na" => "nauru", "nb" => "norwegian bokmal", "nd" => "north ndebele", "ne" => "nepali", "ng" => "ndonga", "nl" => "dutch", "nn" => "norwegian nynorsk", "no" => "norwegian", "nr" => "south ndebele", "nv" => "navajo", "ny" => "chichewa", "oc" => "occitan", "oj" => "ojibwa", "om" => "oromo", "or" => "oriya", "os" => "ossetian", "pa" => "panjabi", "pi" => "pali", "pl" => "polish", "ps" => "pashto", "pt" => "portuguese", "qu" => "quechua", "rm" => "raeto-romance", "rn" => "kirundi", "ro" => "romanian", "ru" => "russian", "rw" => "kinyarwanda", "sa" => "sanskrit", "sc" => "sardinian", "sd" => "sindhi", "se" => "northern sami", "sg" => "sango", "si" => "sinhala", "sk" => "slovak", "sl" => "slovenian", "sm" => "samoan", "sn" => "shona", "so" => "somali", "sq" => "albanian", "sr" => "serbian", "ss" => "swati", "st" => "southern sotho", "su" => "sundanese", "sv" => "swedish", "sw" => "swahili", "ta" => "tamil", "te" => "telugu", "tg" => "tajik", "th" => "thai", "ti" => "tigrinya", "tk" => "turkmen", "tl" => "tagalog", "tn" => "tswana", "to" => "tonga", "tr" => "turkish", "ts" => "tsonga", "tt" => "tatar", "tw" => "twi", "ty" => "tahitian", "ug" => "uighur", "uk" => "ukrainian", "ur" => "urdu", "uz" => "uzbek", "ve" => "venda", "vi" => "vietnamese", "vo" => "volapuk", "wa" => "walloon", "wo" => "wolof", "xh" => "xhosa", "yi" => "yiddish", "yo" => "yoruba", "za" => "zhuang", "zh" => "chinese", "zu" => "zulu" ); http://www.fractalizer.ru/frpost_267/php-array-of-iso-639-1-language-codes-names/
Comments
Post a Comment