New file |
0,0 → 1,152 |
/* |
* FCKeditor - The text editor for internet |
* Copyright (C) 2003-2006 Frederico Caldeira Knabben |
* |
* Licensed under the terms of the GNU Lesser General Public License: |
* http://www.opensource.org/licenses/lgpl-license.php |
* |
* For further information visit: |
* http://www.fckeditor.net/ |
* |
* "Support Open Source software. What about a donation today?" |
* |
* 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 ] ; |
} |