source: extensions/FCKEditor/editor/_source/internals/fcklanguagemanager.js @ 3295

Last change on this file since 3295 was 3295, checked in by patdenice, 15 years ago

New extension added:
FCK Editor (2.0.a)

File size: 4.4 KB
Line 
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
25var 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} ;
Note: See TracBrowser for help on using the repository browser.