Yii2 translation does not work

前端 未结 1 1072
悲&欢浪女
悲&欢浪女 2020-11-30 08:18

I have Yii2 advanced template, I want to set translation for my frontend views, here is what I did:

frontend/config/main.php:

\'sourceLa         


        
1条回答
  •  有刺的猬
    2020-11-30 08:53

    You Just Follow This Steps......

    Step 1: In the common directory , create messages folder.

    Step 2: Create i18n.php file inside common/config directory with following content:

     __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,
    ];
    

    Note: Make sure to add all required languages to 'languages' array. In the above example I have added English and Russian for Generate Yii2 Framework multi language.

    Step 3: Add the i18n component in config file common/main.php configuration as follows:

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

    Step 4:

    Add the language module in common config file to use the default language on your app, such as:

    'language' => 'en-EN' inside common/main.php.

    You now can use Yii::$app->language = ‘en-EN’ at any runtime like URL request, query code.

    Note: In any Model, Controller Generate by Gii, you can see Enable I18n ticket choice, just enable this for Multi language. Gii Tool will auto generate a Model has pre-defined as below, due to frontent or backend folder:

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

    Step 5: Run this command line from Yii2 app folder:

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

    This command line will Generate Yii2 Framework multi language translation files inside common/messages and divide into frontend and backend folder.

    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
     .....
    

    If you want to edit the translate text, just open backend.php or frontend.php file and edit.

    0 讨论(0)
提交回复
热议问题