+ \r
+ if ( !$this->locale )\r
+ {\r
+ /**\r
+ * default locale select simple implementation\r
+ * \r
+ * NOTE:\r
+ * RFC2616: Hypertext Transfer Protocol -- HTTP/1.1\r
+ * http://www.ietf.org/rfc/rfc2616.txt\r
+ * \r
+ * 14.4 Accept-Language\r
+ * \r
+ * The Accept-Language request-header field is similar to Accept, but\r
+ * restricts the set of natural languages that are preferred as a\r
+ * response to the request. Language tags are defined in section 3.10.\r
+ * \r
+ * Accept-Language = "Accept-Language" ":"\r
+ * 1#( language-range [ ";" "q" "=" qvalue ] )\r
+ * language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )\r
+ * \r
+ * Each language-range MAY be given an associated quality value which\r
+ * represents an estimate of the user's preference for the languages\r
+ * specified by that range. The quality value defaults to "q=1". For\r
+ * example,\r
+ * \r
+ * Accept-Language: da, en-gb;q=0.8, en;q=0.7\r
+ * \r
+ * would mean: "I prefer Danish, but will accept British English and\r
+ * other types of English." A language-range matches a language-tag if\r
+ * it exactly equals the tag, or if it exactly equals a prefix of the\r
+ * tag such that the first tag character following the prefix is "-".\r
+ * The special range "*", if present in the Accept-Language field,\r
+ * matches every tag not matched by any other range present in the\r
+ * Accept-Language field.\r
+ * \r
+ * TODO: this is appropriate implement or not\r
+ */\r
+ $languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);\r
+ \r
+ /* retrieve language token of language tag from first token */\r
+ $language = '';\r
+ if ( is_array($languages) && count($languages) > 0 )\r
+ {\r
+ $language = preg_replace('#^([\w]+).*$#', '$1', $languages[0]);\r
+ }\r
+ \r
+ $locales = i18n::get_available_locale_list();\r
+ foreach ( $locales as $locale )\r
+ {\r
+ if ( i18n::strpos($locale, $language) === 0 )\r
+ {\r
+ $this->locale = $locale;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ \r
+ /* include installer translation messages */\r
+ $translation_file = "./locales/{$this->locale}." . i18n::get_current_charset() . '.php';\r
+ if ( !file_exists($translation_file) )\r