fcklanguagemanager.js
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:4k
源码类别:

OA系统

开发平台:

C#

  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. FCKLanguageManager.AvailableLanguages = 
  22. {
  23. 'ar' : 'Arabic',
  24. 'bg' : 'Bulgarian',
  25. 'bn' : 'Bengali/Bangla',
  26. 'bs' : 'Bosnian',
  27. 'ca' : 'Catalan',
  28. 'cs' : 'Czech',
  29. 'da' : 'Danish',
  30. 'de' : 'German',
  31. 'el' : 'Greek',
  32. 'en' : 'English',
  33. 'en-au' : 'English (Australia)',
  34. 'en-ca' : 'English (Canadian)',
  35. 'en-uk' : 'English (United Kingdom)',
  36. 'eo' : 'Esperanto',
  37. 'es' : 'Spanish',
  38. 'et' : 'Estonian',
  39. 'eu' : 'Basque',
  40. 'fa' : 'Persian',
  41. 'fi' : 'Finnish',
  42. 'fo' : 'Faroese',
  43. 'fr' : 'French',
  44. 'gl' : 'Galician',
  45. 'he' : 'Hebrew',
  46. 'hi' : 'Hindi',
  47. 'hr' : 'Croatian',
  48. 'hu' : 'Hungarian',
  49. 'it' : 'Italian',
  50. 'ja' : 'Japanese',
  51. 'km' : 'Khmer',
  52. 'ko' : 'Korean',
  53. 'lt' : 'Lithuanian',
  54. 'lv' : 'Latvian',
  55. 'mn' : 'Mongolian',
  56. 'ms' : 'Malay',
  57. 'nb' : 'Norwegian Bokmal',
  58. 'nl' : 'Dutch',
  59. 'no' : 'Norwegian',
  60. 'pl' : 'Polish',
  61. 'pt' : 'Portuguese (Portugal)',
  62. 'pt-br' : 'Portuguese (Brazil)',
  63. 'ro' : 'Romanian',
  64. 'ru' : 'Russian',
  65. 'sk' : 'Slovak',
  66. 'sl' : 'Slovenian',
  67. 'sr' : 'Serbian (Cyrillic)',
  68. 'sr-latn' : 'Serbian (Latin)',
  69. 'sv' : 'Swedish',
  70. 'th' : 'Thai',
  71. 'tr' : 'Turkish',
  72. 'uk' : 'Ukrainian',
  73. 'vi' : 'Vietnamese',
  74. 'zh' : 'Chinese Traditional',
  75. 'zh-cn' : 'Chinese Simplified'
  76. }
  77. FCKLanguageManager.GetActiveLanguage = function()
  78. {
  79. if ( FCKConfig.AutoDetectLanguage )
  80. {
  81. var sUserLang ;
  82. // IE accepts "navigator.userLanguage" while Gecko "navigator.language".
  83. if ( navigator.userLanguage )
  84. sUserLang = navigator.userLanguage.toLowerCase() ;
  85. else if ( navigator.language )
  86. sUserLang = navigator.language.toLowerCase() ;
  87. else
  88. {
  89. // Firefox 1.0 PR has a bug: it doens't support the "language" property.
  90. return FCKConfig.DefaultLanguage ;
  91. }
  92. // Some language codes are set in 5 characters, 
  93. // like "pt-br" for Brasilian Portuguese.
  94. if ( sUserLang.length >= 5 )
  95. {
  96. sUserLang = sUserLang.substr(0,5) ;
  97. if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
  98. }
  99. // If the user's browser is set to, for example, "pt-br" but only the 
  100. // "pt" language file is available then get that file.
  101. if ( sUserLang.length >= 2 )
  102. {
  103. sUserLang = sUserLang.substr(0,2) ;
  104. if ( this.AvailableLanguages[sUserLang] ) return sUserLang ;
  105. }
  106. }
  107. return this.DefaultLanguage ;
  108. }
  109. FCKLanguageManager.TranslateElements = function( targetDocument, tag, propertyToSet, encode )
  110. {
  111. var e = targetDocument.getElementsByTagName(tag) ;
  112. var sKey, s ;
  113. for ( var i = 0 ; i < e.length ; i++ )
  114. {
  115. if ( sKey = e[i].getAttribute( 'fckLang' ) )
  116. {
  117. if ( s = FCKLang[ sKey ] )
  118. {
  119. if ( encode )
  120. s = FCKTools.HTMLEncode( s ) ;
  121. eval( 'e[i].' + propertyToSet + ' = s' ) ;
  122. }
  123. }
  124. }
  125. }
  126. FCKLanguageManager.TranslatePage = function( targetDocument )
  127. {
  128. this.TranslateElements( targetDocument, 'INPUT', 'value' ) ;
  129. this.TranslateElements( targetDocument, 'SPAN', 'innerHTML' ) ;
  130. this.TranslateElements( targetDocument, 'LABEL', 'innerHTML' ) ;
  131. this.TranslateElements( targetDocument, 'OPTION', 'innerHTML', true ) ;
  132. }
  133. FCKLanguageManager.Initialize = function()
  134. {
  135. if ( this.AvailableLanguages[ FCKConfig.DefaultLanguage ] )
  136. this.DefaultLanguage = FCKConfig.DefaultLanguage ;
  137. else
  138. this.DefaultLanguage = 'en' ;
  139. this.ActiveLanguage = new Object() ;
  140. this.ActiveLanguage.Code = this.GetActiveLanguage() ;
  141. this.ActiveLanguage.Name = this.AvailableLanguages[ this.ActiveLanguage.Code ] ;
  142. }