【问题标题】:OctoberCMS translate YAML default textsOctoberCMS 翻译 YAML 默认文本
【发布时间】:2019-04-13 03:28:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: octobercms octobercms-plugins octobercms-backend


    【解决方案1】:

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

    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 ...
    

    【讨论】:

    • 但这确实会覆盖与默认值不同的值,对吧?
    • 此字段输出类似于您上面的示例,只是通过您的小部件。这里 $value 是默认值
    • 在可视化方法中可以添加不覆盖默认值的条件。
    • 一切都适合我,也许我们在谈论不同的事情。我在 github.com 上上传了一个测试插件 - github.com/Alleksk/test-plugin
    猜你喜欢
    • 2022-12-09
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多