1 | /*
|
---|
2 | * FCKeditor - The text editor for Internet - http://www.fckeditor.net
|
---|
3 | * Copyright (C) 2003-2009 Frederico Caldeira Knabben
|
---|
4 | *
|
---|
5 | * == BEGIN LICENSE ==
|
---|
6 | *
|
---|
7 | * Licensed under the terms of any of the following licenses at your
|
---|
8 | * choice:
|
---|
9 | *
|
---|
10 | * - GNU General Public License Version 2 or later (the "GPL")
|
---|
11 | * http://www.gnu.org/licenses/gpl.html
|
---|
12 | *
|
---|
13 | * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
|
---|
14 | * http://www.gnu.org/licenses/lgpl.html
|
---|
15 | *
|
---|
16 | * - Mozilla Public License Version 1.1 or later (the "MPL")
|
---|
17 | * http://www.mozilla.org/MPL/MPL-1.1.html
|
---|
18 | *
|
---|
19 | * == END LICENSE ==
|
---|
20 | *
|
---|
21 | * Defines the FCKLanguageManager object that is used for language
|
---|
22 | * operations.
|
---|
23 | */
|
---|
24 |
|
---|
25 | var FCKLanguageManager = FCK.Language =
|
---|
26 | {
|
---|
27 | AvailableLanguages :
|
---|
28 | {
|
---|
29 | af : 'Afrikaans',
|
---|
30 | ar : 'Arabic',
|
---|
31 | bg : 'Bulgarian',
|
---|
32 | bn : 'Bengali/Bangla',
|
---|
33 | bs : 'Bosnian',
|
---|
34 | ca : 'Catalan',
|
---|
35 | cs : 'Czech',
|
---|
36 | da : 'Danish',
|
---|
37 | de : 'German',
|
---|
38 | el : 'Greek',
|
---|
39 | en : 'English',
|
---|
40 | 'en-au' : 'English (Australia)',
|
---|
41 | 'en-ca' : 'English (Canadian)',
|
---|
42 | 'en-uk' : 'English (United Kingdom)',
|
---|
43 | eo : 'Esperanto',
|
---|
44 | es : 'Spanish',
|
---|
45 | et : 'Estonian',
|
---|
46 | eu : 'Basque',
|
---|
47 | fa : 'Persian',
|
---|
48 | fi : 'Finnish',
|
---|
49 | fo : 'Faroese',
|
---|
50 | fr : 'French',
|
---|
51 | 'fr-ca' : 'French (Canada)',
|
---|
52 | gl : 'Galician',
|
---|
53 | gu : 'Gujarati',
|
---|
54 | he : 'Hebrew',
|
---|
55 | hi : 'Hindi',
|
---|
56 | hr : 'Croatian',
|
---|
57 | hu : 'Hungarian',
|
---|
58 | is : 'Icelandic',
|
---|
59 | it : 'Italian',
|
---|
60 | ja : 'Japanese',
|
---|
61 | km : 'Khmer',
|
---|
62 | ko : 'Korean',
|
---|
63 | lt : 'Lithuanian',
|
---|
64 | lv : 'Latvian',
|
---|
65 | mn : 'Mongolian',
|
---|
66 | ms : 'Malay',
|
---|
67 | nb : 'Norwegian Bokmal',
|
---|
68 | nl : 'Dutch',
|
---|
69 | no : 'Norwegian',
|
---|
70 | pl : 'Polish',
|
---|
71 | pt : 'Portuguese (Portugal)',
|
---|
72 | 'pt-br' : 'Portuguese (Brazil)',
|
---|
73 | ro : 'Romanian',
|
---|
74 | ru : 'Russian',
|
---|
75 | sk : 'Slovak',
|
---|
76 | sl : 'Slovenian',
|
---|
77 | sr : 'Serbian (Cyrillic)',
|
---|
78 | 'sr-latn' : 'Serbian (Latin)',
|
---|
79 | sv : 'Swedish',
|
---|
80 | th : 'Thai',
|
---|
81 | tr : 'Turkish',
|
---|
82 | uk : 'Ukrainian',
|
---|
83 | vi : 'Vietnamese',
|
---|
84 | zh : 'Chinese Traditional',
|
---|
85 | 'zh-cn' : 'Chinese Simplified'
|
---|
86 | },
|
---|
87 |
|
---|
88 | GetActiveLanguage : function()
|
---|
89 | {
|
---|
90 | if ( FCKConfig.AutoDetectLanguage )
|
---|
91 | {
|
---|
92 | var sUserLang ;
|
---|
93 |
|
---|
94 | // IE accepts "navigator.userLanguage" while Gecko "navigator.language".
|
---|
95 | if ( navigator.userLanguage )
|
---|
96 | sUserLang = navigator.userLanguage.toLowerCase() ;
|
---|
97 | else if ( navigator.language )
|
---|
98 | sUserLang = navigator.language.toLowerCase() ;
|
---|
99 | else
|
---|
100 | {
|
---|
101 | // Firefox 1.0 PR has a bug: it doens't support the "language" property.
|
---|
102 | return FCKConfig.DefaultLanguage ;
|
---|
103 | }
|
---|
104 |
|
---|
105 | // Some language codes are set in 5 characters,
|
---|
106 | // like "pt-br" for Brazilian Portuguese.
|
---|
107 | if ( sUserLang.length >= 5 )
|
---|
108 | {
|
---|
109 | sUserLang = sUserLang.substr(0,5) ;
|
---|
110 | if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
|
---|
111 | }
|
---|
112 |
|
---|
113 | // If the user's browser is set to, for example, "pt-br" but only the
|
---|
114 | // "pt" language file is available then get that file.
|
---|
115 | if ( sUserLang.length >= 2 )
|
---|
116 | {
|
---|
117 | sUserLang = sUserLang.substr(0,2) ;
|
---|
118 | if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
|
---|
119 | }
|
---|
120 | }
|
---|
121 |
|
---|
122 | return this.DefaultLanguage ;
|
---|
123 | },
|
---|
124 |
|
---|
125 | TranslateElements : function( targetDocument, tag, propertyToSet, encode )
|
---|
126 | {
|
---|
127 | var e = targetDocument.getElementsByTagName(tag) ;
|
---|
128 | var sKey, s ;
|
---|
129 | for ( var i = 0 ; i < e.length ; i++ )
|
---|
130 | {
|
---|
131 | // The extra () is to avoid a warning with strict error checking. This is ok.
|
---|
132 | if ( (sKey = e[i].getAttribute( 'fckLang' )) )
|
---|
133 | {
|
---|
134 | // The extra () is to avoid a warning with strict error checking. This is ok.
|
---|
135 | if ( (s = FCKLang[ sKey ]) )
|
---|
136 | {
|
---|
137 | if ( encode )
|
---|
138 | s = FCKTools.HTMLEncode( s ) ;
|
---|
139 | e[i][ propertyToSet ] = s ;
|
---|
140 | }
|
---|
141 | }
|
---|
142 | }
|
---|
143 | },
|
---|
144 |
|
---|
145 | TranslatePage : function( targetDocument )
|
---|
146 | {
|
---|
147 | this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
|
---|
148 | this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
|
---|
149 | this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
|
---|
150 | this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
|
---|
151 | this.TranslateElements( targetDocument, 'LEGEND', 'innerHTML' ) ;
|
---|
152 | },
|
---|
153 |
|
---|
154 | Initialize : function()
|
---|
155 | {
|
---|
156 | if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
|
---|
157 | this.DefaultLanguage = FCKConfig.DefaultLanguage ;
|
---|
158 | else
|
---|
159 | this.DefaultLanguage = 'en' ;
|
---|
160 |
|
---|
161 | this.ActiveLanguage = new Object() ;
|
---|
162 | this.ActiveLanguage.Code = this.GetActiveLanguage() ;
|
---|
163 | this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
|
---|
164 | }
|
---|
165 | } ;
|
---|