ziya / yii2-translate
此包最新版本(0.2.2)没有提供许可证信息。
可翻译
0.2.2
2020-05-26 00:08 UTC
Requires
- php: >=7.1.0
- yiisoft/yii2: ^2.0.13
This package is auto-updated.
Last update: 2024-09-26 18:03:04 UTC
README
您至少需要使用 PHP 7.1
为Yii2框架项目提供的Widget,用于JSON翻译。
composer require ziya/yii2-translate "^0.2.1"
迁移
您想可翻译的属性应该是JSON字段
$this->createTable('{{%article}}', [
'id' => $this->primaryKey(),
'name' => $this->json(),
....
]);
Active Records
您的模型应该使用Translatable特质。
use Translatable;
如果您想根据语言使其成为必需的,请使用TranslatableValidator规则,并提供所需的语言
TranslatableValidator::class
您必须使用TranslatableBehaviour类,并显示哪些属性应遵循可翻译性
TranslatableBehaviour::class
以下所有代码均带有示例
class Article extends ActiveRecord
{
use Translatable;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['name'], TranslatableValidator::class, 'languages' => ['uz','ru']],
[['description'],'safe'],
];
}
public function behaviors()
{
return [
[
'class' => TranslatableBehaviour::class,
'attributes' => ['name'']
],
];
}
视图文件
您的表单将如下所示。提供languageList作为数组。
$languageList = ['eng','ru','fr'];
foreach ($languageList as $lang) {
echo $form
->field($model, "name[{$lang}]")
->textInput(['value'=>$model->name->other($lang)])
->label($model->getAttributeLabel('name') . "_{$lang}");
}
表单
如果您使用的是Form而不是ActiveRecord,则需要将类型设置为Model。
默认为TYPE_ACTIVE_RECORD,因此您需要设置TYPE_MODEL。下面是如何操作的示例
class ArticleForm extends Model
{
public $content;
public function behaviors()
{
return [
'translatable'=>[
'class' => TranslatableBehaviour::className(),
'attributes' => ['content'],
'type' => TranslatableBehaviour::TYPE_MODEL,
],
];
}