diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2013-12-29 20:45:58 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2013-12-29 20:45:58 -0200 |
commit | 97e689213ff4e829f251af526ed4e796a3cc2b71 (patch) | |
tree | b04d03ec56305041216b72328fc9b5afde27bc76 /mod/languages/start.php | |
parent | 0ab6351abb7a602d96c62b0ad35413c88113a6cf (diff) | |
parent | 69e2d8c5d8732042c9319aef1fdea45a82b63e42 (diff) | |
download | elgg-97e689213ff4e829f251af526ed4e796a3cc2b71.tar.gz elgg-97e689213ff4e829f251af526ed4e796a3cc2b71.tar.bz2 |
Merge branch 'master' into saravea
Conflicts:
.gitmodules
mod/admins
mod/assemblies
mod/audio_html5
mod/beechat
mod/crud
mod/elgg-activitystreams
mod/elggman
mod/elggpg
mod/favorites
mod/federated-objects
mod/friendly_time
mod/group_alias
mod/group_operators
mod/languages
mod/lightpics
mod/openid_client
mod/spotlight
mod/suicide
mod/tasks
mod/videolist
Diffstat (limited to 'mod/languages/start.php')
-rw-r--r-- | mod/languages/start.php | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/mod/languages/start.php b/mod/languages/start.php new file mode 100644 index 000000000..1b392dd49 --- /dev/null +++ b/mod/languages/start.php @@ -0,0 +1,55 @@ +<?php +/** + * Languages plugin + * + */ + +elgg_register_event_handler('init', 'system', 'languages_init'); + +function languages_init() { + + register_translations(elgg_get_plugins_path() . "languages/languages/es"); + register_translations(elgg_get_plugins_path() . "languages/languages/nl"); + register_translations(elgg_get_plugins_path() . "languages/languages/de"); + register_translations(elgg_get_plugins_path() . "languages/languages/pt"); + register_translations(elgg_get_plugins_path() . "languages/languages/fr"); + register_translations(elgg_get_plugins_path() . "languages/languages/ca"); + register_translations(elgg_get_plugins_path() . "languages/languages/da"); + register_translations(elgg_get_plugins_path() . "languages/languages/eu"); + register_translations(elgg_get_plugins_path() . "languages/languages/gl"); + register_translations(elgg_get_plugins_path() . "languages/languages/it"); + register_translations(elgg_get_plugins_path() . "languages/languages/ja"); + register_translations(elgg_get_plugins_path() . "languages/languages/sr"); + register_translations(elgg_get_plugins_path() . "languages/languages/th"); + register_translations(elgg_get_plugins_path() . "languages/languages/zh"); + + if (!elgg_is_logged_in()) { + global $CONFIG; + if ($useragent_language = languages_get_useragent_language()) { + $CONFIG->language = $useragent_language; + } + } + +} + +function languages_get_useragent_language() { + global $CONFIG; + if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { + + register_translations($CONFIG->path . "languages/", true); + + $available_languages = array_keys($CONFIG->translations); + $accepted_languages = explode(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]); + + foreach ($accepted_languages as $i => $accepted_language) { + $accepted_languages[$i] = trim(array_shift(preg_split("/[-;]/", $accepted_language))); + } + + $langs = array_intersect($accepted_languages, $available_languages); + if (count($langs) > 0) { + return array_shift($langs); + } + return false; + } +} + |