Thanks,locopon!Follow your information and read source code,I think I find where the problem lies, It's the case sensitive who cause the bug.
The fckeditor provider set AutoDetectLanguage=false under HtmlEditorProviders\FckhtmlEditorProvider\Custom\fckconfig.js ,And set it as below in FCKHtmlEditorProvider.vb ( in Sub Initialize() )
cntlFck.AutoDetectLanguage = False
Dim myLangFile As String = System.Web.HttpContext.Current.Server.MapPath(bpath & "FCKeditor/editor/lang/" & System.Threading.Thread.CurrentThread.CurrentUICulture.Name & ".js")
'Let's check xx-YY
If IO.File.Exists(myLangFile) Then
cntlFck.DefaultLanguage = IO.Path.GetFileNameWithoutExtension(myLangFile)
Else
'Full locale name does not exist as a file, so use language code only
cntlFck.DefaultLanguage = Left(System.Threading.Thread.CurrentThread.CurrentUICulture.Name, 2)
End If
Here is the problem ,since System.Threading.Thread.CurrentThread.CurrentUICulture.Name will get "zh-CN" in my case. But in FCKLanguageManager.AvailableLanguages settings(lies in FCKeditor\editor\_source\internals\fcklanguagemanager.js) ,the value are all lower case ( zh-cn for example).So , the cntlFck.DefaultLanguage = IO.Path.GetFileNameWithoutExtension(myLangFile) doesn't work.
Here is my way to solve this problem
:open HtmlEditorProviders\FckhtmlEditorProvider\FCKeditor\editor\js\fckeditorcode_ie.js and HtmlEditorProviders\FckhtmlEditorProvider\FCKeditor\editor\js\fckeditorcode_gecko.js ,Replace the related string . In my case ,I find and replace "zh-cn" as "zh-CN". the problem fixed.This is what I have done.
Here is my suggestion for code modification
Change cntlFck.DefaultLanguage = IO.Path.GetFileNameWithoutExtension(myLangFile) as cntlFck.DefaultLanguage = IO.Path.GetFileNameWithoutExtension(myLangFile).ToLower()
And although System.Threading.Thread.CurrentThread.CurrentUICulture.Name always get the right answer, it's better to set DefaultLanguage like PageBase.vb did so user can see a consistent localization.