diff --git a/fp-includes/core/core.language.php b/fp-includes/core/core.language.php index 09a14edb..a5cce026 100644 --- a/fp-includes/core/core.language.php +++ b/fp-includes/core/core.language.php @@ -8,8 +8,9 @@ function lang_load($postfix = null) { // checks if we already loaded this lang file $old_lang = &$GLOBALS ['lang']; - if (!$old_lang) + if (!$old_lang) { $old_lang = array(); + } if ($postfix) { @@ -109,4 +110,57 @@ function lang_list() { return $obj->getList(); } +/** + * Localize Smarty function {html_select_date} with LC_TIME + * + * Hint: The character set and coding must be installed on the web server (locale -a), + * otherwise there will be display problems with non-ASCII characters. + */ +function set_locale() { + global $fp_config; + + $langId = $fp_config ['locale'] ['lang']; + + $langConfFile = LANG_DIR . $langId . '/lang.conf.php'; + if (file_exists($langConfFile)) { + include_once $langConfFile; + } + + // As entered in the admin area in the configuration panel -> International settings -> Character set. + $charset = $fp_config ['locale'] ['charset']; + + // Read different possible locale names from lang.conf file + $localeCountry_a = $langconf ['localecountry_a']; // de_DE + $localeCountry_b = $langconf ['localecountry_b']; // de-DE + + // Entered character set coding available in the lang.conf file? + if (preg_match('/\b' . $langconf ['charsets'] [0] . '\b/i', $charset)) { + $localeCharset_a = $langconf ['localecharset_a']; // .UTF-8 + $localeCharset_b = $langconf ['localecharset_b']; // .utf8 + } else { + $localeCharset_a = ''; + $localeCharset_b = ''; + } + + if (preg_match('/\b' . $langconf ['charsets'] [1] . '\b/i', $charset)) { + $localeCharset_c = $langconf ['localecharset_c']; // .ISO-8859-15 + $localeCharset_d = $langconf ['localecharset_d']; // .iso885915 + } else { + $localeCharset_c = ''; + $localeCharset_d = ''; + } + + $localeShort = $langconf ['localeshort']; // de + + // Check if LC_TIME is set and returns the current locale + $currentLocale = @setlocale(LC_TIME, 0); + + // If LC_TIME is not set or contains something else, but not the correct locale, + if ($currentLocale === false || (!preg_match('/\b' . $localeShort . '\b/i', $currentLocale))) { + // then try different possible locale names. + $currentLocale = @setlocale(LC_TIME, $localeCountry_a . $localeCharset_a, $localeCountry_a . $localeCharset_b, $localeCountry_a . $localeCharset_c, $localeCountry_a . $localeCharset_d, $localeCountry_a, $localeCountry_b, $localeShort); + } + + //echo '
' . strftime_replacement("%B") . ''; +} ?> diff --git a/fp-interface/lang/cs-cz/lang.conf.php b/fp-interface/lang/cs-cz/lang.conf.php index 969316f1..0c3c2622 100644 --- a/fp-interface/lang/cs-cz/lang.conf.php +++ b/fp-interface/lang/cs-cz/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'cs-cz'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'cs_CZ'; +$langconf ['localecountry_b'] = 'cs-CZ'; +$langconf ['localeshort'] = 'cs'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/da-dk/lang.conf.php b/fp-interface/lang/da-dk/lang.conf.php index b398e7dd..4908d828 100644 --- a/fp-interface/lang/da-dk/lang.conf.php +++ b/fp-interface/lang/da-dk/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'da-dk'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'da_DK'; +$langconf ['localecountry_b'] = 'da-DK'; +$langconf ['localeshort'] = 'da'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/de-de/lang.conf.php b/fp-interface/lang/de-de/lang.conf.php index 27aa721f..c548979e 100644 --- a/fp-interface/lang/de-de/lang.conf.php +++ b/fp-interface/lang/de-de/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'de-de'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'de_DE'; +$langconf ['localecountry_b'] = 'de-DE'; +$langconf ['localeshort'] = 'de'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/el-gr/lang.conf.php b/fp-interface/lang/el-gr/lang.conf.php index 1333514b..e2dad491 100644 --- a/fp-interface/lang/el-gr/lang.conf.php +++ b/fp-interface/lang/el-gr/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'el-gr'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-7'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'el_GR'; +$langconf ['localecountry_b'] = 'el-GR'; +$langconf ['localeshort'] = 'el'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-7'; +$langconf ['localecharset_d'] = '.iso88597'; ?> diff --git a/fp-interface/lang/en-us/lang.conf.php b/fp-interface/lang/en-us/lang.conf.php index 6e0a9ce4..ff22522e 100755 --- a/fp-interface/lang/en-us/lang.conf.php +++ b/fp-interface/lang/en-us/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'en-us'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'en_US'; +$langconf ['localecountry_b'] = 'en-US'; +$langconf ['localeshort'] = 'en'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/es-es/lang.conf.php b/fp-interface/lang/es-es/lang.conf.php index 1f079c73..d368052b 100644 --- a/fp-interface/lang/es-es/lang.conf.php +++ b/fp-interface/lang/es-es/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'es-es'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'es_ES'; +$langconf ['localecountry_b'] = 'es-ES'; +$langconf ['localeshort'] = 'es'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/fr-fr/lang.conf.php b/fp-interface/lang/fr-fr/lang.conf.php index 7a7a6142..80a935ad 100644 --- a/fp-interface/lang/fr-fr/lang.conf.php +++ b/fp-interface/lang/fr-fr/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'fr-fr'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'fr_FR'; +$langconf ['localecountry_b'] = 'fr-FR'; +$langconf ['localeshort'] = 'fr'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/it-it/lang.conf.php b/fp-interface/lang/it-it/lang.conf.php index b7dd1185..74138806 100644 --- a/fp-interface/lang/it-it/lang.conf.php +++ b/fp-interface/lang/it-it/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'it-it'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'it_IT'; +$langconf ['localecountry_b'] = 'it-IT'; +$langconf ['localeshort'] = 'it'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/ja-jp/lang.conf.php b/fp-interface/lang/ja-jp/lang.conf.php index 8365f466..c8911a8b 100644 --- a/fp-interface/lang/ja-jp/lang.conf.php +++ b/fp-interface/lang/ja-jp/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'ja-jp'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'ja_JP'; +$langconf ['localecountry_b'] = 'ja-JP'; +$langconf ['localeshort'] = 'ja'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/nl-nl/lang.conf.php b/fp-interface/lang/nl-nl/lang.conf.php index 9aecf11a..9787c4be 100644 --- a/fp-interface/lang/nl-nl/lang.conf.php +++ b/fp-interface/lang/nl-nl/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'nl-nl'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'nl_NL'; +$langconf ['localecountry_b'] = 'nl-NL'; +$langconf ['localeshort'] = 'nl'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/fp-interface/lang/pt-br/lang.conf.php b/fp-interface/lang/pt-br/lang.conf.php index 46db713f..9645556a 100644 --- a/fp-interface/lang/pt-br/lang.conf.php +++ b/fp-interface/lang/pt-br/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'pt-br'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'pt_BR'; +$langconf ['localecountry_b'] = 'pt-BR'; +$langconf ['localeshort'] = 'pt'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> \ No newline at end of file diff --git a/fp-interface/lang/ru-ru/lang.conf.php b/fp-interface/lang/ru-ru/lang.conf.php index 9e39cb65..e32a2a54 100644 --- a/fp-interface/lang/ru-ru/lang.conf.php +++ b/fp-interface/lang/ru-ru/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'ru-ru'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-5'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'ru_RU'; +$langconf ['localecountry_b'] = 'ru-RU'; +$langconf ['localeshort'] = 'ru'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-5'; +$langconf ['localecharset_d'] = '.iso88595'; ?> diff --git a/fp-interface/lang/sl-si/lang.conf.php b/fp-interface/lang/sl-si/lang.conf.php index ede2a040..6d978c49 100644 --- a/fp-interface/lang/sl-si/lang.conf.php +++ b/fp-interface/lang/sl-si/lang.conf.php @@ -4,4 +4,15 @@ $langconf ['locale'] = 'sl-si'; $langconf ['charsets'] [0] = 'utf-8'; $langconf ['charsets'] [1] = 'iso-8859-15'; + +// Different possible locale names +$langconf ['localecountry_a'] = 'sl_SI'; +$langconf ['localecountry_b'] = 'sl-SI'; +$langconf ['localeshort'] = 'sl'; + +// Different possible coding names +$langconf ['localecharset_a'] = '.UTF-8'; +$langconf ['localecharset_b'] = '.utf8'; +$langconf ['localecharset_c'] = '.ISO-8859-15'; +$langconf ['localecharset_d'] = '.iso885915'; ?> diff --git a/search.php b/search.php index 19f03b5f..0eca6c9f 100755 --- a/search.php +++ b/search.php @@ -28,6 +28,9 @@ function search_display() { function search_main() { global $lang, $smarty; + // Localize Smarty function {html_select_date} + set_locale(); + // register Smarty modifier functions $smarty->registerPlugin('modifier', 'function_exists', 'function_exists'); $smarty->registerPlugin('modifier', 'is_numeric', 'is_numeric');