/* * FCKeditor - The text editor for Internet - http://www.fckeditor.net * Copyright (C) 2003-2007 Frederico Caldeira Knabben * * == BEGIN LICENSE == * * Licensed under the terms of any of the following licenses at your * choice: * * - GNU General Public License Version 2 or later (the "GPL") * http://www.gnu.org/licenses/gpl.html * * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") * http://www.gnu.org/licenses/lgpl.html * * - Mozilla Public License Version 1.1 or later (the "MPL") * http://www.mozilla.org/MPL/MPL-1.1.html * * == END LICENSE == * * File Name: fcklanguagemanager.js * Defines the FCKLanguageManager object that is used for language * operations. * * File Authors: * Frederico Caldeira Knabben (fredck@fckeditor.net) */ var FCKLanguageManager = FCK.Language = new Object() ; FCKLanguageManager.AvailableLanguages = { 'ar' : 'Arabic', 'bg' : 'Bulgarian', 'bn' : 'Bengali/Bangla', 'bs' : 'Bosnian', 'ca' : 'Catalan', 'cs' : 'Czech', 'da' : 'Danish', 'de' : 'German', 'el' : 'Greek', 'en' : 'English', 'en-au' : 'English (Australia)', 'en-ca' : 'English (Canadian)', 'en-uk' : 'English (United Kingdom)', 'eo' : 'Esperanto', 'es' : 'Spanish', 'et' : 'Estonian', 'eu' : 'Basque', 'fa' : 'Persian', 'fi' : 'Finnish', 'fo' : 'Faroese', 'fr' : 'French', 'gl' : 'Galician', 'he' : 'Hebrew', 'hi' : 'Hindi', 'hr' : 'Croatian', 'hu' : 'Hungarian', 'it' : 'Italian', 'ja' : 'Japanese', 'km' : 'Khmer', 'ko' : 'Korean', 'lt' : 'Lithuanian', 'lv' : 'Latvian', 'mn' : 'Mongolian', 'ms' : 'Malay', 'nb' : 'Norwegian Bokmal', 'nl' : 'Dutch', 'no' : 'Norwegian', 'pl' : 'Polish', 'pt' : 'Portuguese (Portugal)', 'pt-br' : 'Portuguese (Brazil)', 'ro' : 'Romanian', 'ru' : 'Russian', 'sk' : 'Slovak', 'sl' : 'Slovenian', 'sr' : 'Serbian (Cyrillic)', 'sr-latn' : 'Serbian (Latin)', 'sv' : 'Swedish', 'th' : 'Thai', 'tr' : 'Turkish', 'uk' : 'Ukrainian', 'vi' : 'Vietnamese', 'zh' : 'Chinese Traditional', 'zh-cn' : 'Chinese Simplified' } FCKLanguageManager.GetActiveLanguage = function() { if ( FCKConfig.AutoDetectLanguage ) { var sUserLang ; // IE accepts "navigator.userLanguage" while Gecko "navigator.language". if ( navigator.userLanguage ) sUserLang = navigator.userLanguage.toLowerCase() ; else if ( navigator.language ) sUserLang = navigator.language.toLowerCase() ; else { // Firefox 1.0 PR has a bug: it doens't support the "language" property. return FCKConfig.DefaultLanguage ; } // Some language codes are set in 5 characters, // like "pt-br" for Brasilian Portuguese. if ( sUserLang.length >= 5 ) { sUserLang = sUserLang.substr(0,5) ; if ( this.AvailableLanguages[sUserLang] ) return sUserLang ; } // If the user's browser is set to, for example, "pt-br" but only the // "pt" language file is available then get that file. if ( sUserLang.length >= 2 ) { sUserLang = sUserLang.substr(0,2) ; if ( this.AvailableLanguages[sUserLang] ) return sUserLang ; } } return this.DefaultLanguage ; } FCKLanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet, encode ) { var e = targetDocument.getElementsByTagName(tag) ; var sKey, s ; for ( var i = 0 ; i < e.length ; i++ ) { if ( sKey = e[i].getAttribute( 'fckLang' ) ) { if ( s = FCKLang[ sKey ] ) { if ( encode ) s = FCKTools.HTMLEncode( s ) ; eval( 'e[i].' + propertyToSet + ' = s' ) ; } } } } FCKLanguageManager.TranslatePage = function( targetDocument ) { this.TranslateElements( targetDocument, 'INPUT', 'value' ) ; this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ; this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ; this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ; } FCKLanguageManager.Initialize = function() { if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] ) this.DefaultLanguage = FCKConfig.DefaultLanguage ; else this.DefaultLanguage = 'en' ; this.ActiveLanguage = new Object() ; this.ActiveLanguage.Code = this.GetActiveLanguage() ; this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ; }