词条统计
浏览次数:5617 次
编辑次数:1次 历史版本
最近更新:2013/6/20
创建者:掷鸡蛋者

wojilu MVC framework 内置了国际化(i18n)的多语言方案。

【简述】

您本来在页面有一行文字,比如叫“请填写标题”,现在为了便于以后翻译成英语、法语等多国语言,你需要使用多国语言变量来实现,步骤是:

1)将页面本来是“请填写标题”的地方,改成一个语言变量,比如_{titleTip}
2)然后打开 /framework/lang 下的语言包文件,如果是中文,就是 /framework/lang/zh-cn/core.config ,然后在其中添加一行:
titleTip=请填写标题
这一行等号左侧是语言变量,右侧是实际的文本内容。

【用法综述

一、使用语言包的方式

按照使用语言包的4种场合,分成4种使用方式: 

1、在业务代码中使用

   lang.get( "" ); 

2、在controller的代码中 

   lang( "" ) 

3、在视图界面中,则通过 lang.property 的方式直接调用,比

   _{title}

4、在 js 中使用语言包

另外,各app的js如果涉及到语言包,请直接在各app的layout中引用,否则无法应用语言包。 

二、修改语言包

语言包的配置文件存储在 framework/lang/ 目录下。根据语言的不同种类,下面再划分出不同的语言包文件。比如您使用中文简体作为界面,则可以需要将在下面再建一个 zh-cn 的目录。core.config 是默认的语言包文件。

 

三、“我记录网站综合系统”中各app语言包的扩充

语言包所在路径:所有app,比如ContentApp,它的语言包和core.config在同一个目录下。

语言包名称:就是app的名称(全名)加上config后缀名,比如 ContentApp 语言包名称就是 wojilu.Apps.Content.Domain.ContentApp.config。


读取方式:

1)在控制器中通过 alang(key) 的方式读取。注意比较:读取核心语言包是通过 lang(key) 的方式,而app的语言包前面多了一个字母a。

2)在视图中通过 :{key} 的方式读取。注意比较:核心语言包是通过 _{key} 的方式,一个是下划线开头,一个是英文冒号开头。


注意:app中所有控制器,建议都打上[App(typeof(***app))]批注,否则无法通过 alang(key) 和 :{key} 读取到信息。
补充:在service层或其他无法打上app批注的场合,你也可以通过 alang.get(typeof(***App), key) 的方式获取。


另外,之所以将各app的语言包和核心语言包分开,是为了条理清晰,更易阅读和管理。从纯粹功能的角度讲,不是必须的,你完全可以将各个app的语言包都塞到 core.config 中,统一通过 lang(key) 和 _{key} 读取,虽然不推荐这么做。