Nếu bạn muốn có bản dịch cho từng mô-đun có trong mô-đun, bạn cần phải đăng ký bản dịch cho mô-đun đó. Nó không thể được thực hiện đơn giản từ tập tin cấu hình. Bạn có thể đã có điều này trong tập tin mô-đun của bạn ,, tôi chỉ bao gồm cho đầy đủ. Mã này được sao chép từ các tài liệu, và cần phải được trong tập tin mô-đun của bạn, vì vậy trong app/modules/Foo.php
<?php
namespace app\modules\foo;
use Yii;
class Module extends \yii\base\Module
{
public $controllerNamespace = 'app\modules\foo\controllers';
public function init()
{
parent::init();
/** Register custom translations for this module **/
$this->registerTranslations();
}
public function registerTranslations()
{
/**This registers translations for the Foo module **/
Yii::$app->i18n->translations['modules/foo/*'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en-US',
'basePath' => '@app/modules/foo/messages',
/**Tells yii where to find the translations for validation and form categories **/
'fileMap' => [
'modules/foo/validation' => 'validation.php',
'modules/foo/form' => 'form.php',
...
],
];
}
public static function t($category, $message, $params = [], $language = null)
{
return Yii::t('modules/users/' . $category, $message, $params, $language);
}
}
Trong trường hợp của bạn nó không giống như bạn cần cung cấp tập tin mapping.You chỉ đơn giản là có thể sử dụng định dạng này cho tệp của bạn
[[basePath]]/LanguageID/CategoryName.php
Rất tiếc, tôi không thể tìm thấy danh sách các danh mục có sẵn.
Nếu sau đó bạn muốn ghi đè một số bản dịch mô-đun, bạn sẽ cần chỉ định danh mục sẽ được sử dụng, như thế này trong tệp cấu hình của bạn. Nó đặc biệt ghi đè danh mục mô-đun/foo/bar.
'i18n' => [
'translations' => [
'modules/foo*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/messages',
],
],
],
tập tin dịch của bạn cần phải tuân theo một cấu trúc thư mục như vậy trong mô tả dịch, vì vậy trong ví dụ trên nó sẽ là
app/messages/ [language code] /modules/foo/bar.php
Otherise, bạn có thể sử dụng fileMap
để lập bản đồ đến các địa điểm khác nhau, như thể tệp bar.php của bạn nằm trong ứng dụng/tin nhắn/[mã ngôn ngữ]
'fileMap' => [
'modules/foo/bar' => 'bar.php'
]
Vui lòng chỉ cho chúng tôi cách mô-đun này đăng ký bản dịch – soju