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