我需要检测手机的语言,以便我可以相应地显示信息。如果是英语,那么显示英语。说,我的目标是中国,日本,韩国等几个国家。我该怎么做?这里我的不完整代码显示我的意思:
tring StrLanSetOnClient; string strLanEng= "english Msg"; string strLanChn=" Msg in chinese character"; string strLanJpn= "Msg in Japanese character"; string strLanKor= "Msg in Korean character" ; strLanSetOnClient = CultureInfo.......... If( strLanSetOnClient == "English") { txtBlkLan.Text = strLanEng; } elseif ( strLanSetOnClient == "Chinese") { txtBlkLan.Text = strLanChn } ....
由于 ---更新了问题:
1)我应该在哪里检测语言?在App.xaml?
2)所有页面如何引用此全局变量名称?
3)哪种检测方法最佳?使用CultureInfo或thread.currentThread
由于
&#lt;?xml version="1.0" encoding="utf-8"?&#gt; &#lt;Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&#gt; &#lt;ProjectExtensions&#gt; &#lt;VisualStudio &#gt; &#lt;FlavorProperties GUID="{C089C8C0-30E0-4E22-80C0-CE093F11xxxx}"&#gt; &#lt;SilverlightMobileCSProjectFlavor&#gt; &#lt;FullDeploy &#gt; True &#lt;/FullDeploy&#gt; &#lt;/SilverlightMobileCSProjectFlavor&#gt; &#lt;/FlavorProperties&#gt; &#lt;/VisualStudio&#gt; &#lt;/ProjectExtensions&#gt; &#lt;/Project&#gt;
这是我的Wp7应用程序的vanila csproj文件。其中没有SupportCulture标签。那么,当我用记事本打开它时,我必须在其中添加此标记吗?当我下载你的示例应用程序时,我用记事本打开csproj文件,我也没看到这个标签?感谢
答案 0 :(得分:3)
你尝试本地化的方式是变得非常复杂,有很多重复,将来很难改变。
有一种支持多种语言/文化等的内置方式。见http://msdn.microsoft.com/en-us/library/ff637522(v=vs.92).aspx
答案 1 :(得分:1)
前几天我在这个主题上写了一篇博客。它描述了如何从头到尾进行本地化,它位于www.hopnet.mobi,点击博客。
一旦掌握了它,本地化确实并不困难。我已经本地化了一个应用程序,我正在等待朋友验证我的翻译。虽然她正在这样做,但我正在本地化其他应用程序。更多语言意味着更广泛的分配,这意味着更多的钱你做对了!
答案 2 :(得分:0)
使用System.Globalization命名空间中的CurrentCulture。它具有Name,EnglishName,DisplayName和NativeName等属性,因此您可以选择最适合您的属性。
编辑:检测语言取决于您是否允许用户更改语言。如果没有,则在App.xaml.cs中检测它并将信息存储在IsolatedStorage对象中,以便您可以在不同的页面之间共享它。这样,您可以避免以后检测语言设置,只需依赖保存的设置即可。至于最佳实践,我坚持CultureInfo。我从未尝试直接通过Thread.CurrentThread。