simSol/yii2-multilang

此包最新版本(v1.0.7)没有提供许可证信息。

对象多语言扩展

安装: 19

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 2

分支: 0

开放问题: 0

类型:yii2-extension

v1.0.7 2021-08-30 04:34 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:51 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

这是MultiLang模块使用指南

1. 安装

composer require simsol/yii2-multilang

2. 初始化

模块声明和配置用于存储的语言

    'modules' => [
        'multilang' => [
            'class'     => 'simsol\multilang\Module',
            //config for languages, default will be ["en"=>"ENG"]."en" is language code and "ENG" is the label to be displayed
            'languages' => [
                'en' => 'ENG',
                'vi' => 'VN',
            ],
        ],
    ],

3. 运行迁移

./yii migrate --migrationPath=@simsol/multilang/migrations

4. 使用

请按照以下步骤设置和使用此扩展。

a. 在模型中

  • 将属性 translation 添加到您的模型类中。

    public $translations;
    
  • translation 属性添加规则。

    /**
      * {@inheritdoc}
      */
      public function rules()
      {
         return [
            ...
            [['translations'],'safe'],
         ];
      }
    
  • 修改 afterSave() 并添加此行

    Translate::saveTranslation($this->translations,$this->id_model,Model::class);
    

    这将保存当前模型的翻译。

b. 在表单中

  • 为要提供翻译的属性添加此小部件到您的创建或更新表单中。

    <?=$form->field($model,'attribute')->widget(MultiLangFieldsWidget::class)->label(false)?>
    
  • 可用配置

    • attributeLabel: 可选。如果您想为模型属性使用另一个名称,则默认为模型属性名称。
    • attributeToSave: 可选。如果您想以不同的属性保存,则默认为模型属性。当与自定义模型一起使用时很有用。
    • attributeToLoad: 可选。如果您想在编辑时以不同的属性加载已保存的翻译值,则默认为模型属性。当与自定义模型一起使用时很有用。
    • inputType: 可选。默认为文本输入,可用选项
      • 文本输入:MultiLangFieldsWidget::TYPE_TEXT_INPUT
      • 文本区域:MultiLangFieldsWidget::TYPE_TEXTAREA
    <?=$form->field($model,'attribute')->widget(MultiLangFieldsWidget::class,[
                    'inputType' => MultiLangFieldsWidget::TYPE_TEXTAREA,
                    'attributeLabel' => 'Another name',
                ])->label(false)?>
    

c. 查询翻译

 Translate::loadTranslation($model,$attribute = null,$modelId = null;$modelClass = null,$language = null)
  • $model: 必需。加载翻译的模型。

  • $attribute: 可选。如果提供,将查询指定属性的翻译。

  • $modelId: 可选。如果模型ID与定义的 $model 不同,则很有用。当与自定义模型一起使用时很有用。

  • $modelClass: 可选。如果模型类名与提供的模型不同。例如:app\models\form\CustomerFormapp\models\Customer

  • $language: 可选。如果传递,将用于查询指定语言。

  • 查询结果:结果可能因提供的参数而异。请参见以下示例

Translate::loadTranslation($model);

Result:

[
    'description' => [
        'en' => 'Description of data.',
        'vi' => 'Mô tả của dữ liệu',
    ],
    'title' => [
        'en' => 'Title of data',
        'vi' => 'Tiêu đề của dữ liệu',
    ],
]
Translate::loadTranslation($model,'title');

Result:

[
        'en' => 'Title of data',
        'vi' => 'Tiêu đề của dữ liệu',
]
Translate::loadTranslation($model,'title',null,null,'en');

Result:

'Title of data'
Translate::loadTranslation($model,null,null,null,'en');

Result:

[
    'description' => 'Description of data.',
    'title' => 'Title of data',
]