你的位置:首页 > 软件开发 > ASP.net > WPF全球化与本地化

WPF全球化与本地化

发布时间:2016-03-04 17:00:18
当一个App需要推出多语言版本时,就需要使用到【全球化与本地化】服务。原理及过程资源文件中包含了所有的控件信息,通过导出这些控件信息,修改其对应的相关属性(比如TextBlock的Text属性)的字符串,即可实现多语言版本。在资源文件中,控件通过x:uid进行标示。设置默认的本地 ...

当一个App需要推出多语言版本时,就需要使用到【全球化与本地化】服务。

原理过程

资源文件中包含了所有的控件信息,通过导出这些控件信息,修改其对应的相关属性(比如TextBlock的Text属性)的字符串,即可实现多语言版本。在资源文件中,控件通过x:uid进行标示。

  1. 设置默认的本地化区域。比如zh-CN or en-US,取决于具体的App语言版本。
  2. 为所有的控件自动添加x:uid,并检查x:uid的唯一性。
  3. 重新生成工程。在bin/下可以看到特征语言版本的*.resource.dll。比如en-US/*.resource.dll。 (*为工程名字)
  4. 从*.resource.dll中提取出所有的控件列表。提取可是为*.csv。
  5. 手动编辑*.csv,将其中的可翻译属性翻译为目标语言。.csv可以使用excel类工具打开。
  6. 使用本地化后的*.csv生成特定语言的资源文件dll.比如保存为zh-CN/*.resource。
  7. 修改操作系统的区域或者自行设定属性,改变App当前的区域(cultrue)信息。

 

WPF国际化的步骤如下:

1. 在*.csproj中增加语言/本地化信息,在重新生成工程之后,在bin目录下会有en-US的目录,里面包含en-US的本地化资源信息 en-US*.resources.dll。

  在*p.csproj文件里的<PropertyGroup>下添加<UICulture>en-US</UICulture>。

  在AssemblyInfo.cs 中开启 [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

  重新生成项目。

2. 添加和检查uid。

  为XAML自动添加UID  msbuild /t:updateuid HelloApp.csproj

  若要验证您没有缺少或重复的 UID,请运行 checkuid:msbuild /t:checkuid HelloApp.csproj

3.提取、修改并重新生成资源文件(dll)

  工具:可以使用微软的非生产工具 LocBaml.exe ,或者其他可视化工具。比如 Visual LocBaml。

  提取:LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv

  生成:LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:.\ /cul:zh-CN

4. 自行改变程序运行cultrue. 

  修改操作系统语言/区域。

  或者通过参数在App动态设置区域。(需要重启App) 

    var lan = HelloApp.Properties.Settings.Default["Language"] as get='_blank'>string;

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:WPF全球化与本地化

关键词:wpf

wpf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。