2015-09-28 19 views
6

Tôi có Yii2 mẫu tiên tiến, tôi muốn thiết lập dịch cho quan điểm frontend của tôi, đây là những gì tôi đã làm:Yii2 dịch không hoạt động

frontend/config/main.php:

'sourceLanguage'=>'en-US', 
'language'=>'en-US', 
'components' => [ 
'i18n' => [ 
    'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => '@common/messages', 
       'sourceLanguage' => 'en-US', 
       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
    ], 
] 

sau đó tôi đã thêm i18n.php trong common/config:

<?php 
return [ 
    'sourcePath' => __DIR__. '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR, 
    'languages' => ['fr-FR','en-US'], //Add languages to the array for the language files to be generated. 
    'translator' => 'Yii::t', 
    'sort' => false, 
    'removeUnused' => false, 
    'only' => ['*.php'], 
    'except' => [ 
     '.svn', 
     '.git', 
     '.gitignore', 
     '.gitkeep', 
     '.hgignore', 
     '.hgkeep', 
     '/messages', 
     '/vendor', 
    ], 
    'format' => 'php', 
    'messagePath' => __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'messages', 
    'overwrite' => true, 
]; 

common/messages/en-US/app.php:

<?php 

return[ 

    // Menu texts 

    'menu.login'=>'login', 

]; 

và tôi sử dụng nó trong các quan điểm như: Yii::t('app', 'menu.login');

nhưng bản dịch đã không làm việc, nó hiển thị như menu.login

+0

Để sử dụng tệp tin dựa trên khóa, hãy đảm bảo bạn đã bật 'forceTranslation', vì ứng dụng ở ngôn ngữ mặc định sẽ không tự động dịch thư –

Trả lời

10

Bạn chỉ cần làm theo bước này ......

Bước 1: Trong thư mục common, tạo thư mục messages.

Bước 2: Tạoi18n.php tập tin bên trong thư mục common/config với nội dung sau:

<?php 
return [ 
    'sourcePath' => __DIR__. '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR, 
    'languages' => ['en-EN', 'ru-RU'], //Add languages to the array for the language files to be generated, here are English and Russian. 
    'translator' => 'Yii::t', 
    'sort' => false, 
    'removeUnused' => false, 
    'only' => ['*.php'], 
    'except' => [ 
     '.svn', 
     '.git', 
     '.gitignore', 
     '.gitkeep', 
     '.hgignore', 
     '.hgkeep', 
     '/messages', 
     '/vendor', 
    ], 
    'format' => 'php', 
    'messagePath' => __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR .  'messages', //path of messages folder created above 
    'overwrite' => true, 
]; 

Lưu ý: Hãy chắc chắn để thêm tất cả ngôn ngữ cần thiết để mảng 'ngôn ngữ'. Trong ví dụ trên tôi đã thêm tiếng Anh và tiếng Nga cho Generate Yii2 Framework đa ngôn ngữ.

Bước 3: Thêm các thành phần i18n trong config tập tin common/main.php cấu hình như sau:

'components' => [ 
    ... 
    'i18n' => [ 
     'translations' => [ 
      'frontend*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => '@common/messages', 
      ], 
      'backend*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       'basePath' => '@common/messages', 
      ], 
     ], 
    ], 
    ... 
], 

Bước 4:

Thêm module ngôn ngữ trong tập tin cấu hình phổ biến để sử dụng ngôn ngữ mặc định trên ứng dụng của bạn, chẳng hạn như:

'language' => 'en-EN' bên trong common/main.php.

Bây giờ bạn có thể sử dụng Yii::$app->language = ‘en-EN’ tại bất kỳ thời gian chạy nào như yêu cầu URL, mã truy vấn.

Lưu ý: Trong bất kỳ Mô hình nào, Bộ điều khiển tạo bởi Gii, bạn có thể xem Bật tùy chọn vé I18n, chỉ cần bật tính năng này cho Đa ngôn ngữ. GII Công cụ sẽ tự động tạo ra một mô hình đã được xác định trước như dưới đây, do frontent hoặc backend thư mục:

Yii::t('frontend', 'Translatable String'); 

Yii::t('backend', 'Translatable String'); 

Bước 5: Run này dòng lệnh từ thư mục ứng dụng Yii2:

yii message/extract @common/config/i18n.php 

này dòng lệnh sẽ tạo các tệp dịch đa ngôn ngữ Yii2 Framework bên trong common/messages và chia thành các thư mục frontendbackend.

For example: Yii message will generate the translation files as follows: 
common/ 
..... 
     messages/ 
      en-EN/ 
        backend.php 
        frontend.php 
      ru-RU/ 
        backend.php 
        frontend.php 
..... 

Nếu bạn muốn chỉnh sửa văn bản dịch, chỉ cần mở backend.php hoặc frontend.php tập tin và chỉnh sửa.

Các vấn đề liên quan