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