国际化语言包代码升级说明

来自ECJiaWiki
跳转至: 导航搜索

附加说明

语言包升级是针对代码中相关语言的书写格式,而我们目前需要进行对“控制器(类、方法、接口……)”、“JS文件”和“模板文件”大概这三个方向,没有固定或者一定要翻译的规则,具体情况具体分析。
下面我就以“文章”模块进行语言包升级操作进行说明。
  • 注:1、系统模块无需增加domain参数。2、domain必须设置为第一个参数。

JS语言包升级处理

1、【创建jslang文件】以前我们JS文件中语言包调用,有一些是直接调取语言包中,还有一些是写在相对应的控制器中,还如下图所示:
国际化语言包代码升级说明 01.png


  • 而现在我们需要将这些JS调用的语言需要迁移出来放入当前模块的配置文件中。需要在configs文件夹下面创建一个jslang.php文件如下图所示:


国际化语言包代码升级说明 02.png


2、【合并再分组】文章模块存在多个页面请求,肯定存在多个控制器以及JS,那么对进行迁移的语言项需要按照页面请求进行归类分组放入到jslang文件中如下图所示:
国际化语言包代码升级说明 03.png


  • 合并分组归类之后,每个控制器调用即可;(分组按照页面请求条件进行分组,键名格式:XXX_page)


3、【调用语言项】当我们把每个控制器中相关JS语言项迁移到配置文件之后,此时我们控制器直接调用即可,如下图所示:
国际化语言包代码升级说明 04.png
[参数说明]
A:需要与所调用的js文件的第一个参数那个名称必须相符
B、js文件中的赋值参数
C、指定为当前app模块
D、config配置语言包文件名称
E、需要调用jslang文件中哪一组语言包(键名)
此时JS相关语言包配置就算完成啦。
则App下面的每个应用模块需要按照此规则进行迁移;在当前app模块下configs文件中都需要创建属于自己jslang.php文件然后进行分组即可。

控制器(类、方法、接口……)语言包升级处理

旧: $this->assign('ur_here', RC_Lang::get('article::article.article_auto_release'));
新: $this->assign('ur_here', __(‘文章自动发布’,‘article’));
国际化语言包代码升级说明 05.png
根据旧数据调用的参数找到相对应的lang.php文件搜索出相对应的中文进行替换,新版本中需要注意的是需要增加第二个参数,就是当前所翻译模块的应用名称。
注:系统模块无需增加第二个参数。
含有变量案例:如果包含变量,我们需要通过sprintf()来进行处理
旧: $message = '设为垃圾评论,评论内容为:'.$comment_info['content'].',文章标题为:'.$article['title'];
新: $message = sprintf(__('设为垃圾评论,评论内容为:%s,文章标题为:%s', 'article'), $comment_info['content'],$article['title']);
注:我们在升级语言包的时候,不仅仅是替换,因为后期的开发都是不规范的直接输入语句,并未增加RC_Lang::get用法,所以仅仅搜索这个进行替换是不可行的,还需大量浏览代码进行及时更正为正确的语言包使用方法。

模板语言包升级处理

旧:{lang key='article::article.tab_general'}
新:{t domain="article"}通用信息{/t}
国际化语言包代码升级说明 05.png
根据旧数据调用的参数找到相对应的lang.php文件搜索出相对应的中文进行替换,新版本中需要注意的是需要增加domain参数,就是当前所翻译模块的应用名称。
含有变量案例
旧:{t}管理员{/t} {$log.user_name|escape:html}, {t}在{/t} {RC_Ip::area($log.ip_address)} {t}IP下{/t} {$log.log_info}{t}。{/t}
新:{t domain="article" 1={$log.user_name|escape:html} 2={RC_Ip::area($log.ip_address)} 3={$log.log_info}}管理员 %1, 在 %2 IP下 %3。{/t}
含有链接案例
旧:{t}注:若您未检测到可用更新,您还可以到{/t} <a target="_blank" href="https://www.ecjia.com/download.html">https://www.ecjia.com/download.html</a> {t}查看。{/t}
新:{t domain="article" escape=no url="https://www.ecjia.com/download.html" name="https://www.ecjia.com/download.html"}注:若您未检测到可用更新,您还可以到 <a target="_blank" href="%1">%2</a> 查看。{/t}
注:我们在升级语言包的时候,不仅仅是替换,因为后期的开发都是不规范的直接输入语句,并未增加{lang}用法,所以仅仅搜索这个进行替换是不可行的,还需大量浏览代码进行及时更正为正确的语言包使用方法。

猜你想看

国际化语言包创建和翻译操作说明

国际化语言包使用函数讲解