2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
\r
3 * Copyright (C) 2003-2009 Frederico Caldeira Knabben
\r
5 * == BEGIN LICENSE ==
\r
7 * Licensed under the terms of any of the following licenses at your
\r
10 * - GNU General Public License Version 2 or later (the "GPL")
\r
11 * http://www.gnu.org/licenses/gpl.html
\r
13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
\r
14 * http://www.gnu.org/licenses/lgpl.html
\r
16 * - Mozilla Public License Version 1.1 or later (the "MPL")
\r
17 * http://www.mozilla.org/MPL/MPL-1.1.html
\r
21 * Defines the FCKLanguageManager object that is used for language
\r
25 var FCKLanguageManager = FCK.Language =
\r
27 AvailableLanguages :
\r
32 bn : 'Bengali/Bangla',
\r
40 'en-au' : 'English (Australia)',
\r
41 'en-ca' : 'English (Canadian)',
\r
42 'en-uk' : 'English (United Kingdom)',
\r
51 'fr-ca' : 'French (Canada)',
\r
67 nb : 'Norwegian Bokmal',
\r
71 pt : 'Portuguese (Portugal)',
\r
72 'pt-br' : 'Portuguese (Brazil)',
\r
77 sr : 'Serbian (Cyrillic)',
\r
78 'sr-latn' : 'Serbian (Latin)',
\r
84 zh : 'Chinese Traditional',
\r
85 'zh-cn' : 'Chinese Simplified'
\r
88 GetActiveLanguage : function()
\r
90 if ( FCKConfig.AutoDetectLanguage )
\r
94 // IE accepts "navigator.userLanguage" while Gecko "navigator.language".
\r
95 if ( navigator.userLanguage )
\r
96 sUserLang = navigator.userLanguage.toLowerCase() ;
\r
97 else if ( navigator.language )
\r
98 sUserLang = navigator.language.toLowerCase() ;
\r
101 // Firefox 1.0 PR has a bug: it doens't support the "language" property.
\r
102 return FCKConfig.DefaultLanguage ;
\r
105 // Some language codes are set in 5 characters,
\r
106 // like "pt-br" for Brazilian Portuguese.
\r
107 if ( sUserLang.length >= 5 )
\r
109 sUserLang = sUserLang.substr(0,5) ;
\r
110 if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
\r
113 // If the user's browser is set to, for example, "pt-br" but only the
\r
114 // "pt" language file is available then get that file.
\r
115 if ( sUserLang.length >= 2 )
\r
117 sUserLang = sUserLang.substr(0,2) ;
\r
118 if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
\r
122 return this.DefaultLanguage ;
\r
125 TranslateElements : function( targetDocument, tag, propertyToSet, encode )
\r
127 var e = targetDocument.getElementsByTagName(tag) ;
\r
129 for ( var i = 0 ; i < e.length ; i++ )
\r
131 // The extra () is to avoid a warning with strict error checking. This is ok.
\r
132 if ( (sKey = e[i].getAttribute( 'fckLang' )) )
\r
134 // The extra () is to avoid a warning with strict error checking. This is ok.
\r
135 if ( (s = FCKLang[ sKey ]) )
\r
138 s = FCKTools.HTMLEncode( s ) ;
\r
139 e[i][ propertyToSet ] = s ;
\r
145 TranslatePage : function( targetDocument )
\r
147 this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
\r
148 this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
\r
149 this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
\r
150 this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
\r
151 this.TranslateElements( targetDocument, 'LEGEND', 'innerHTML' ) ;
\r
154 Initialize : function()
\r
156 if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
\r
157 this.DefaultLanguage = FCKConfig.DefaultLanguage ;
\r
159 this.DefaultLanguage = 'en' ;
\r
161 this.ActiveLanguage = new Object() ;
\r
162 this.ActiveLanguage.Code = this.GetActiveLanguage() ;
\r
163 this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
\r