fcklanguagemanager.js
164 lines
| 4.4 KiB
| application/javascript
|
JavascriptLexer
|
r0 | /* | ||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net | ||||
* Copyright (C) 2003-2008 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 == | ||||
* | ||||
* Defines the FCKLanguageManager object that is used for language | ||||
* operations. | ||||
*/ | ||||
var FCKLanguageManager = FCK.Language = | ||||
{ | ||||
AvailableLanguages : | ||||
{ | ||||
af : 'Afrikaans', | ||||
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', | ||||
'fr-ca' : 'French (Canada)', | ||||
gl : 'Galician', | ||||
gu : 'Gujarati', | ||||
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' | ||||
}, | ||||
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 Brazilian 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 ; | ||||
}, | ||||
TranslateElements : function( targetDocument, tag, propertyToSet, encode ) | ||||
{ | ||||
var e = targetDocument.getElementsByTagName(tag) ; | ||||
var sKey, s ; | ||||
for ( var i = 0 ; i < e.length ; i++ ) | ||||
{ | ||||
// The extra () is to avoid a warning with strict error checking. This is ok. | ||||
if ( (sKey = e[i].getAttribute( 'fckLang' )) ) | ||||
{ | ||||
// The extra () is to avoid a warning with strict error checking. This is ok. | ||||
if ( (s = FCKLang[ sKey ]) ) | ||||
{ | ||||
if ( encode ) | ||||
s = FCKTools.HTMLEncode( s ) ; | ||||
e[i][ propertyToSet ] = s ; | ||||
} | ||||
} | ||||
} | ||||
}, | ||||
TranslatePage : function( targetDocument ) | ||||
{ | ||||
this.TranslateElements( targetDocument, 'INPUT', 'value' ) ; | ||||
this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ; | ||||
this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ; | ||||
this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ; | ||||
this.TranslateElements( targetDocument, 'LEGEND', 'innerHTML' ) ; | ||||
}, | ||||
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 ] ; | ||||
} | ||||
} ; | ||||