首页 > 解决方案 > OctoberCMS 翻译 YAML 默认文本

问题描述

例如,我有一个可翻译的模型:

class Settings extends Model {
    public $implement = [
        'System.Behaviors.SettingsModel',
        'RainLab.Translate.Behaviors.TranslatableModel'
    ];

    public $settingsCode = 'zollerboy_customtheme_settings';
    public $settingsFields = 'fields.yaml';

    public $translatable = [
        'site_name',
        //I have a lot more here
    ];
}

我的fields.yaml样子是这样的:

tabs:
    fields:
        site_name:
            tab: Info
            label: Website Name
            type: text

        # And so on ...

是否有可能,我为该字段site_name提供每种语言的默认值?

我试过了

default: name.plugin::lang.settings.default.site_name

但这似乎只适用于标签,但不适用于默认值。

标签: octobercmsoctobercms-pluginsoctobercms-backend

解决方案


是的,默认选项不适用于翻译,但您可以通过小部件表单显示此字段,在可视化方法中获取默认值。

public function render() {
    $value= Lang::get('name.plugin::lang.settings.default.site_name');
    return $this->makePartial('site_name', ['value' => $value, 'name' => 
    'site_name']);
}

通过覆盖插件注册类中的 registerFormWidgets 方法来注册表单小部件。

public function registerFormWidgets() {
    return [
          'Name\Plugin\FormWidgets\SiteName' => 'site_name'

    ];
}

示例字段.yaml:

tabs:
fields:
    site_name:
        tab: Info
        label: Website Name
        type: site_name

    # And so on ...

推荐阅读