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. Animation Spinner【项目】

    https://github.com/vjpr/healthkick/blob/master/src/win/healthkick/ucSpinnerCogs.xaml 网上的例子,放在UserCon ...

  2. 3DTouch-ShortcutItem - iOS9 - xcode7

    据说苹果某个神秘的团队闭门潜心研发多年的3DTouch终于,应用在iOS9上,且公开了API. 在系统主界面用力按压 APP 图标,如上会出现自定义菜单 有两种方法可以实现一.代码(这种方法也是可以动 ...

  3. CMSIS Example - osMutex osMutexWait osMutexRelease

    osMutexDef( Mutex ); osMutexId mutex; void Thread0( void * arg); void Thread1( void * arg); osThread ...

  4. C# 多线程处理相关说明: WaitHandle,waitCallback, ThreadPool.QueueUserWorkItem

    class TestThread { static void Main() { //使用WaitHandle静态方法阻止一个线程,直到一个或多个同步对象接收到信号 WaitHandle[] waitH ...

  5. js设置控件的隐藏与显示的两种方法

    js设置控件的隐藏与显示,设置控件style的display和visibility属性就可以了,下面有个示例,需要的朋友可以参考下用JavaScript隐藏控件的方法有两种,分别是通过设置控件的sty ...

  6. c#winform使用WebBrowser 大全[超长文转载]

    1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源.必须在附加事件的同一线程上调用 ...

  7. HTML5 <script>元素async,defer异步加载

    原文地址:HTML5′s async Script Attribute原文日期: 2010年09月22日翻译日期: 2013年08月22日 (译者注: 异步加载,可以理解为无阻塞并发处理.) (译者再 ...

  8. 【JavaScript】停不下来的前端,自动化流程

    http://kb.cnblogs.com/page/501270/ 流程 关于流程,是从项目启动到发布的过程.在前端通常我们都做些什么? 切图,即从设计稿中获取需要的素材,并不是所有前端开发都被要求 ...

  9. JtextField的延时更新

    import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.a ...

  10. WCF和WPF读取xml的路径问题

    使用WCF编写服务,涉及到xml的读取,使用了System.AppDomain.CurrentDomain.BaseDirectory来获取路径,获得的是项目的基目录 例如: string path ...