OctoberCMS插件开发之多语言处理(国际化)

首先OctoberCMS实现多语言是必须要安装Translate插件的,其它插件市场的很多语言扩展插件也是基于这个基础插件来实现的,比如Translate ExtendedTranslate Tabs等等

Translate插件是默认支持BlogStaticPages等插件的,在安装完之后内容编辑区的右上角会有语言切换的链接,如下图

当然,语言是在后台自己定义的,需要加多少都可以。

那么问题来了,我们自己开发的插件并不会生效,使它在我们自己的插件中运行也非常简单,只需要找到对应的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

Post Comment