Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
}