1. Visual Baml

    Visual Locbaml is a free and open-source software to simplify the task of WPF application localization. http://visuallocbaml.com/

  2. Visual Baml读取并翻译

    使用Visual Baml新建工程。在新建Visual Baml工程之前,应先设置好C#工程的回退语言以及默认区域。如果通过强行改变线程culture,也需要设置到当前语言默认区域。否则Visual Baml会检测到错误的待翻译文本。*

[assembly: NeutralResourcesLanguage("zh-cn", UltimateResourceFallbackLocation.Satellite)]  

3. 翻译中间文件

    这是使用工具(Visual Baml)获得的好处,可以使用其导出中间翻译结果。通过Visual Baml自己的编号规则进行统计,并过滤了不可翻译的部分——比如不可翻译的项(位置等)、不可翻译的条目。当然这也有缺点,如果在更改了原始了位置布局**,则Visual Baml需要使用新的exe更新工程,再次产生Assemblies。

  4. 目标语言附属程序集

使用Visual Baml导出,放在运行目录。比如bin/debug/zh-chs/。

  5. 使用Resgen.exe

    在工程中,更改资源文件的属性,将“复制到输出目录”设置为“如果较新则复制”或者“始终复制”,就能在输出目录查看到*.resx的资源文件。

//从*.resx到key=value的文本文件
resgen *.resx *.txt //从*.txt到*.resx,并指定语言为C#,Class访问性为Public
resgen *.txt *.resx /str:C#,MyResource.Properties /publicClass

   不确定是否可以用AI.exe直接嵌入编译后的*.resx到DLL。

*Visual Baml并不十分智能。如果在工程中存在同名的Page,而Page中存在相同类型与UID的控件,即使他们处在不同的目录下,也会产生混淆。

**如果项目之初没有考虑到翻译后的长度变化,即使考虑到,也可能需要对控件位置进行调整。Visual Baml需要更新(Retrieve)才能获取新的位置信息,其翻译中间文件只有字符信息。

    

WPF全球化与本地化 (二)的更多相关文章

  1. WPF全球化与本地化

    当一个App需要推出多语言版本时,就需要使用到[全球化与本地化]服务. 原理及过程 资源文件中包含了所有的控件信息,通过导出这些控件信息,修改其对应的相关属性(比如TextBlock的Text属性)的 ...

  2. ASP.NET Core 中文文档 第三章 原理(6)全球化与本地化

    原文:Globalization and localization 作者:Rick Anderson.Damien Bowden.Bart Calixto.Nadeem Afana 翻译:谢炀(Kil ...

  3. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  4. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...

  5. WPF学习拾遗(二)TextBlock换行

    原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...

  6. WPF命中测试示例(二)——几何区域命中测试

    原文:WPF命中测试示例(二)--几何区域命中测试 接续上次的命中测试,这次来做几何区域测试示例. 示例 首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置: 当前设计视图 ...

  7. WPF换肤之二:可拉动的窗体

    原文:WPF换肤之二:可拉动的窗体 让我们接着上一章: WPF换肤之一:创建圆角窗体 来继续. 在这一章,我主要是实现对圆角窗体的拖动,改变大小功能. 拖动自绘窗体的步骤 首先,通过上节的设计,我们知 ...

  8. 使用WPF实现3D场景[二]

    原文:使用WPF实现3D场景[二] 在上一篇的文章里我们知道如何构造一个简单的三维场景,这次的课程我将和大家一起来研究如何用代码,完成对建立好了的三维场景的观察. 首先看一下DEMO的界面:     ...

  9. WPF与缓动(二) 正弦与余弦缓动

    原文:WPF与缓动(二) 正弦与余弦缓动   WPF与缓动(二) 正弦与余弦缓动                                                             ...

随机推荐

  1. C#中利用委托实现多线程跨线程操作

    在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便. 其实解决这个 ...

  2. 关于favicon.ico的使用

    http://www.cnblogs.com/LoveJenny/archive/2012/05/22/2512683.html

  3. mvc4帮助类

    @App @AppState @Ajax @Cache @Context @Culture @Html @IsPost @Layout @Model @Output @OutputStack @Pag ...

  4. JavaScript设计模式 -- 读书笔记

    JavaScript设计模式 一. 设计模式 一个模式就是一个可重用的方案: 有效的解决方法.易重用.善于表达该解决方案: 未通过"模式特性"测试的模式称为模式原型: 三规则:适用 ...

  5. 为什么要把js代码写到<!--//-->中

    是为了兼容,不支持js的浏览器会把其中的内容当做html注释.

  6. Ehcache(05)——缓存的查询

    http://haohaoxuexi.iteye.com/blog/2117505 缓存的查询 目录 1.    使Cache可查询 1.1     基于Xml配置 1.2     基于代码的配置 2 ...

  7. MFC非模态对话框中屏蔽ESC键

    个人的编程经验认为:对于非模态对话框,按下ESC键和点击红叉都会响应OnCancel()函数,而不会去响应OnClose()函数. 我们都知道,如果想屏蔽Enter键,只须重写OnOK()函数即可(重 ...

  8. SAP Connector 3.0 .Net 开发

    在VS2010中使用控制台应用程序使用SAP Connector 3.0开发时,当程序运行到实例化RfcConfigParameters时报错 (RfcConfigParametersrefcon = ...

  9. GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】

    http://blog.csdn.net/a3070173/archive/2008/11/20/3342062.aspx Dislace Mapping其实就是在顶点着色器中 对顶点进行置换偏移,经 ...

  10. UTF-8 BOM(EF BB BF)

    原标题:link标签和script标签跑到body下面,网页顶部有空白,出现“锘匡豢”乱码,UTF-8 BOM,EF BB BF 来自:http://tunps.com/link-and-script ...