OctoberCMS插件开发之多语言处理(国际化)
首先OctoberCMS实现多语言是必须要安装Translate插件的,其它插件市场的很多语言扩展插件也是基于这个基础插件来实现的,比如Translate Extended
和Translate Tabs
等等
Translate插件是默认支持Blog
和StaticPages
等插件的,在安装完之后内容编辑区的右上角会有语言切换的链接,如下图
当然,语言是在后台自己定义的,需要加多少都可以。
那么问题来了,我们自己开发的插件并不会生效,使它在我们自己的插件中运行也非常简单,只需要找到对应的Model文件,然后添加以下代码
public $implement = [ 'RainLab.Translate.Behaviors.TranslatableModel', 'Vdomah.TranslateTabs.Behaviors.TranslateTabbable', ]; public $translatable = ['title', 'slug', 'summary', 'body'];
其中$translatable
中需要设定需要做语言切换处理的字段名,如下图所示
怎么样?是不是非常方便
前端多语言选项的处理
在模板文件中添加组件来实现语言切换
<h3>{{ 'Please select your language:'|_ }}</h3> {% component 'localePicker' %}
手动选择
<p> Switch language to: <a href="#" data-request="onSwitchLocale" data-request-data="locale: 'en'">English</a>, <a href="#" data-request="onSwitchLocale" data-request-data="locale: 'ru'">Russian</a> </p>
消息的翻译
{{ 'site.name'|_ }} {{ 'Welcome to our website!'|_ }} {{ 'Hello :name!'|_({ name: 'Friend' }) }}
带有变量的翻译
{{ 'There are no apples|There are :number applies!'|__(2, { number: 'two' }) }}
等等吧,太懒了不想写了,官方文档应有尽有,详细参考:https://octobercms.com/plugin/rainlab-translate