你的位置:首页 > 软件开发 > ASP.net > 【WinRT】使用 T4 模板简化字符串的本地化

【WinRT】使用 T4 模板简化字符串的本地化

发布时间:2015-04-01 03:03:34
在 WinRT 中,对控件、甚至图片资源的本地化都是极其方便的,之前我在博客中也介绍过如何本地化应用名称:http://www.cnblogs.com/h82258652/p/4292157.html关于 WinRT 中的本地化,CodeProject 上有一篇十分值得大家一看的 ...

在 WinRT 中,对控件、甚至图片资源的本地化都是极其方便的,之前我在博客中也介绍过如何本地化应用名称:http://www.cnblogs.com/h82258652/p/4292157.html

关于 WinRT 中的本地化,CodeProject 上有一篇十分值得大家一看的文章:http://www.codeproject.com/Articles/862152/Localization-in-Windows-Universal-Apps

大家可以去仔细学习一下。

以前的本地化:

说回重点,如果有 Winform、WPF、Windows Phone Silverlight 本地化经验的都知道,打开 Resources.resx 文件,然后填写键值对就可以了(其它语言则在添加相应的 resx 文件,例如美国的就添加 Resources.en-US.resx)。这种方法最大的优点就是,填写的键会生成相应的属性,例如我在 resx 中填写了一个 China 的键,则 resx 文件会生成一个相应的 cs 文件,并且包含这么一段:

【WinRT】使用 T4 模板简化字符串的本地化

然后我们就可以使用:resx的名字.China 来使用相应的本地化的字符串了。

现在 Windows Runtime 的本地化:

在 WinRT 中,本地化很多东西都变得方便了,唯独就是字符串的本地化变麻烦了,资源文件不再给我们生成强类型的属性来访问字符串了,要我们自己来手动写代码来获取每一个键对应的值。

例如我们也在 WinRT 的资源文件——resw 里填写一个 China 的键:

【WinRT】使用 T4 模板简化字符串的本地化

那么在 cs 代码中访问这个 China 就是:

【WinRT】使用 T4 模板简化字符串的本地化

一两个键还好,手动写一下,问题我们的程序不可能就只有那么点需要本地化的字符串,少则几十个,多则上百上千。而且手动编写的话,还会存在拼写错误的情况,最主要的是,根本没法重构!!

解决方案:

那么必然就需要使用一种自动化的,生成代码的技术,这里我们选择 T4 模板来解决这个问题。

首先,我们先来研究下,究竟 resw 是如何存放我们编写好的数据呢?用记事本或者其它文本编辑器打开 resw。

【WinRT】使用 T4 模板简化字符串的本地化

可以看出,本质是一个

假设我们知道这个 resw 文件的路径的话,我们可以编写出如下代码:

【WinRT】使用 T4 模板简化字符串的本地化【WinRT】使用 T4 模板简化字符串的本地化
 1     new  2     document.Load(reswPath); 3  4     // 获取 resw 文件中的 data 节点。 5     "data"); 6     foreach(var temp in dataNodes) 7     { 8       as  9       if(dataNode != null)10       {11         get='_blank'>string value = dataNode.GetAttribute("name");12         // key 中包含 ‘.’ 的作为控件的多语言化,不处理。13         if(value.Contains(".") == false)14         {15           names.Add(value);16         }17       }18     }

 

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

原标题:【WinRT】使用 T4 模板简化字符串的本地化

关键词:win

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