2015-09-28 6 views
6

मैं मैं अपने दृश्यपटल विचारों के लिए अनुवाद सेट करना चाहते हैं Yii2 उन्नत टेम्पलेट है, यहाँ है मैं क्या किया:Yii2 अनुवाद काम नहीं करता है

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', 
       ], 
      ], 
     ], 
    ], 
] 

तो मैं common/config:

में i18n.php जोड़ा
<?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', 

]; 

और मैं इसे के रूप में देखा गया में इस्तेमाल किया: Yii::t('app', 'menu.login');

लेकिन अनुवाद काम नहीं किया, यह menu.login

+0

कुंजी-आधारित संदेश फ़ाइलों का उपयोग करने के लिए, सुनिश्चित करें कि आपने 'बल ट्रान्सलेशन' सक्षम किया है, क्योंकि डिफ़ॉल्ट भाषा में ऐप्स स्वचालित रूप से संदेशों का अनुवाद नहीं करेंगे –

उत्तर

10

आप बस का पालन करें इस कदम के रूप में प्रदर्शित ......

चरण 1:common निर्देशिका में, messages फ़ोल्डर बनाएं।

चरण 2:i18n.php फ़ाइल निम्न सामग्री के साथ common/config अंदर निर्देशिका बनाएँ:

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

नोट: 'भाषाओं' सरणी के लिए सभी आवश्यक भाषाओं को जोड़ने के लिए सुनिश्चित करें। उपरोक्त उदाहरण में मैंने Yii2 फ्रेमवर्क बहु भाषा उत्पन्न करने के लिए अंग्रेजी और रूसी जोड़ा है।

चरण 3:i18n घटक config फ़ाइल में common/main.php विन्यास इस प्रकार जोड़ें:

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

चरण 4:

डिफ़ॉल्ट भाषा का उपयोग करने के लिए आम कॉन्फ़िग फ़ाइल में भाषा मॉड्यूल जोड़ें आपके ऐप पर, जैसे:

'language' => 'en-EN'के अंदर।

अब आप यूआरएल अनुरोध, क्वेरी कोड जैसे किसी भी रनटाइम पर Yii::$app->language = ‘en-EN’ का उपयोग कर सकते हैं।

नोट: किसी भी मॉडल में, नियंत्रक जीआई द्वारा जेनरेट करते हैं, आप I18n टिकट विकल्प सक्षम कर सकते हैं, बस इसे बहु भाषा के लिए सक्षम करें। जीआईआई उपकरण ऑटो उत्पन्न होगा एक मॉडल, नीचे के रूप में पहले से परिभाषित किया गया है frontent या backend फ़ोल्डर के कारण:

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

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

चरण 5: भागो Yii2 एप्लिकेशन फ़ोल्डर से इस आदेश पंक्ति:

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

यह कमांड लाइन common/messages के अंदर वाईआई 2 फ्रेमवर्क बहु भाषा अनुवाद फ़ाइलों को उत्पन्न करेगी और frontend और backend फ़ोल्डर में विभाजित करेगी।

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

आप अनुवाद पाठ, बस खुले backend.php या frontend.php फ़ाइल और संपादित संपादित करना चाहते हैं।

संबंधित मुद्दे