simSol / yii2-multilang
此包最新版本(v1.0.7)没有提供许可证信息。
对象多语言扩展
v1.0.7
2021-08-30 04:34 UTC
Requires
- yiisoft/yii2: ~2.0.14
- yiisoft/yii2-bootstrap: ~2.0.0
README
这是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\CustomerForm和app\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',
]