zoukankan      html  css  js  c++  java
  • WPF全球化与本地化 (二)

    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)才能获取新的位置信息,其翻译中间文件只有字符信息。

        

  • 相关阅读:
    IO多路复用 IO异步
    你没听说过的协程
    事件驱动和IO操作
    堡垒机前戏——paramiko
    听说过的多进程,多线程到底是什么鬼
    socket套接字
    看见就烦的异常
    struts2值栈内部数据结构详解
    hibernate一级缓存的源码初窥
    使用自定义标签模拟jstl的<c:for each>标签
  • 原文地址:https://www.cnblogs.com/jjseen/p/5382862.html
Copyright © 2011-2022 走看看