none
windows rt 框架如何获取当前的系统语言类型? RRS feed

  • 问题

  • 我们最近在写多语言相关的需求,发现CultureInfo.CurrentUICulture获取的一直是中文的信息,即使我们把系统语言,local等所有含有中文的都改成en-us,但是这个值一直显示的都是中文,通过调试我们发现CultureInfo.InstalledUICulture能够正确区分,但是当我们使用它的时候,发现sdk根本就没有这个属性。。。。怎么要用哪个来区分语言?

    windows 8 RTM ,VS2012 updata1,使用c#

    2013年1月7日 7:24

答案

  • 首先,我不确定你用的Navite API是否符合Store App 的标准,即可不可以通过验证。

    然后,Store App的多语言是基于当前你系统 控制面板” > “时钟、语言和区域” > “语言”中设置的顺序 来匹配的 (http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/Hh967761(v=win.10).aspx ),你可以安装一个中文的Win 8, 将系统语言选择成中文,但是你也可以在系统中安装一个法语输入法,然后将其设置Move up到最顶层,这样如果有一个应用是支持法语显示的,则它就会在你的系统中使用法语。 并不取决于你的当前系统的显示语言。

    而且这一点也是应用市场来辨别你的应用支持语言的标准。

    所以,你自己设计基于系统语言来改变应用语言,脱离了Store App 的标准的全球化设计方法, 这样的话在应用在市场中陈列或者验证的时候,可能就无法显示出你的应用是否能够支持多语言,因为你使用了非标准的全球化操作。  

    你可以参考这个,来设计的应用的全球化,而不是自己去设计一套复杂且可能并不能很好支持多语言环境的逻辑:http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/hh969152.aspx

    资源以及本地化 例子:http://code.msdn.microsoft.com/windowsapps/Application-resources-and-cd0c6eaa


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2013年1月8日 7:21
    版主

全部回复

  • 改变你的输入法顺序就可以改变你的应用中的 CultureInfo.CurrentUICulture , Metro 应用用过输入法顺序来选择相应的应用界面语言。

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2013年1月7日 7:28
    版主
  • 我测试了一下,CultureInfo.CurrentUICulture一直显示中文,我希望能够通过系统当前的显示语言来判断,但是怎么都找不到接口。就是控制面板\时钟、语言和区域\语言\高级设置\系统显示语言
    2013年1月7日 8:51
  • 这个问题我解决了,使用Native的接口。不过现在又有一个新问题,就是如何实现开始页面那的应用程序的多语言???就是应用程序的名字随着系统语言变化而变化
    2013年1月8日 6:33
  • ms-resource:appDisplayName 这个方式,resw文件一定要在主工程么?如果是在其他工程,需要怎么配路径?
    2013年1月8日 7:09
  • 首先,我不确定你用的Navite API是否符合Store App 的标准,即可不可以通过验证。

    然后,Store App的多语言是基于当前你系统 控制面板” > “时钟、语言和区域” > “语言”中设置的顺序 来匹配的 (http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/Hh967761(v=win.10).aspx ),你可以安装一个中文的Win 8, 将系统语言选择成中文,但是你也可以在系统中安装一个法语输入法,然后将其设置Move up到最顶层,这样如果有一个应用是支持法语显示的,则它就会在你的系统中使用法语。 并不取决于你的当前系统的显示语言。

    而且这一点也是应用市场来辨别你的应用支持语言的标准。

    所以,你自己设计基于系统语言来改变应用语言,脱离了Store App 的标准的全球化设计方法, 这样的话在应用在市场中陈列或者验证的时候,可能就无法显示出你的应用是否能够支持多语言,因为你使用了非标准的全球化操作。  

    你可以参考这个,来设计的应用的全球化,而不是自己去设计一套复杂且可能并不能很好支持多语言环境的逻辑:http://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/hh969152.aspx

    资源以及本地化 例子:http://code.msdn.microsoft.com/windowsapps/Application-resources-and-cd0c6eaa


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2013年1月8日 7:21
    版主
  • 需要在主工程

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2013年1月8日 7:40
    版主
  • 目前我们程序基本是使用微软的多语言的方案的。刚刚我测试确认了这么一种现象,微软的多语言和windows 的当前显示语言无关,只和这个系统设置的语言顺序有关,而且必须重启才能够使得CultureInfo.CurrentUICulture获取正确的,否则一直获取不到正确的语言,包括开始桌面的应用程序名显示也是一个逻辑。不过假如用户切换过语言,系统的语言显示改了,但是这个顺序没改,程序就和系统的语言不一致了,我估计用户都会感到非常困惑。其实我觉得,系统设置里面根本就不应该按照顺序来处理,直接有个默认就好了么?语言设置那里都显示了哪个已启用的。。。。
    2013年1月8日 8:11
  • Hi,

    本地化的资源系统是按照多语言最上面的语言来识别的。而且曾经测试过,并不需要重启甚至不需要重启程序,只要切换到另一个页面,里面的语言就会自动改变了。


    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年1月9日 6:32
    版主