From 441c9e85dcb824dba2a44657a31fa29ad71a4ee1 Mon Sep 17 00:00:00 2001 From: ewinslow Date: Tue, 2 Nov 2010 16:06:53 +0000 Subject: Refs #2538: Moved js directory to elgg root. git-svn-id: http://code.elgg.org/elgg/trunk@7189 36083f99-b078-4883-b0ff-0f9b5a30f544 --- js/lib/languages.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 js/lib/languages.js (limited to 'js/lib/languages.js') diff --git a/js/lib/languages.js b/js/lib/languages.js new file mode 100644 index 000000000..3231cf77d --- /dev/null +++ b/js/lib/languages.js @@ -0,0 +1,83 @@ +/** + * Provides language-related functionality + */ +elgg.provide('elgg.config.translations'); + +elgg.config.language = 'en'; + +elgg.add_translation = function(lang, translations) { + elgg.provide('elgg.config.translations.' + lang); + + $.extend(elgg.config.translations[lang], translations); +} + +/** + * Load the translations for the given language. + * + * If no language is specified, the default language is used. + * @param {string} language + * @return {XMLHttpRequest} + */ +elgg.reload_all_translations = function(language) { + var lang = language || elgg.get_language(); + elgg.getJSON('_css/js.php', { + data: { + 'js': 'languages/'+lang, + 'viewtype': 'default', + 'lastcache': elgg.config.lastcache + }, + success: function(json) { + elgg.add_translation(lang, json); + } + }); +}; + +/** + * Get the current language + * @return {String} + */ +elgg.get_language = function() { + var user = elgg.get_loggedin_user(); + + if (user && user.language) { + return user.language; + } + + return elgg.config.language; +}; + +/** + * Translates a string + * + * @param {String} key The string to translate + * @param {String} language The language to display it in + * @return {String} The translation + */ +elgg.echo = function(key, language) { + var translations, + dlang = elgg.get_language(); + + language = language || dlang; + + translations = elgg.config.translations[language]; + if (translations && translations[key]) { + return translations[key]; + } + + if (language == dlang) { + return undefined; + } + + translations = elgg.config.translations[dlang]; + if (translations && translations[key]) { + return translations[key]; + } + + return undefined; +}; + +elgg.config.translations.init = function() { + elgg.reload_all_translations(); +}; + +elgg.register_event_handler('boot', 'system', elgg.config.translations.init); \ No newline at end of file -- cgit v1.2.3