2016-07-10 3 views
5

काम नहीं कर रहा है, मैं मूल्यांकन करने की कोशिश कर रहा हूं कि यह ZF3 (या ZF2 के साथ अपना एप्लिकेशन विकसित करना) शुरू करने का सही समय है या नहीं। इसलिए, मैंने एमवीसी-कंकाल अनुप्रयोग स्थापित किया और एमवीसी ट्यूटोरियल (here) के माध्यम से चला गया जो पूरी तरह से काम करता है जब तक कि मैं अंतर्राष्ट्रीयकरण भाग तक नहीं पहुंच जाता।ZF3 ज़ेंड-एमवीसी-कंकाल अंतर्राष्ट्रीयकरण

मैंने घटकों को स्थापित किया (यानी ज़ेंड-आई 18 एन और ज़ेंड-एमवीसी-आई 18 एन घटक), अनुवाद फ़ाइलों (यानी en_US.mo और en_US.po) बनाया और उन्हें मेरे module/Application/language/ फ़ोल्डर में कॉपी किया और एप्लिकेशन में कॉन्फ़िगरेशन जोड़ा विन्यास फाइल।

// in a module's module.config.php: 
'translator' => [ 
    'locale' => 'en_US', 
    'translation_file_patterns' => [ 
     [ 
      'type'  => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern' => '%s.mo', 
     ], 
    ], 
], 

और बेशक, layout.phtml फ़ाइल में अनुवाद करने के लिए

<p>&copy; 2016 by Examples Ltd. <?= $this->translate('All rights reserved') ?></p> 

हालांकि, किसी कारण से यह

Zend\ServiceManager\Exception\ServiceNotFoundException  

File: 
my_install_path/zend-mvc-skeleton-application/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php:133 

Message: 
A plugin by the name "translate" was not found in the plugin manager Zend\View\HelperPluginManager 

Stack trace: 
#0 /my-own-install-path/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(373): Zend\ServiceManager\AbstractPluginManager->get('translate', NULL) 
#1 /my-own-install-path/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(391): Zend\View\Renderer\PhpRenderer->plugin('translate') 
#2 /my-own-install-path/module/Application/view/application/index/index.phtml(1): Zend\View\Renderer\PhpRenderer->__call('translate', Array) 
#3 /my-own-install-path/module/Application/view/application/index/index.phtml(1): Zend\View\Renderer\PhpRenderer->translate('Dr Job') 
#4 /my-own-install-path/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(502): include('/Applications/M...') 
#5 /my-own-install-path/vendor/zendframework/zend-view/src/View.php(207): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel)) 
#6 /my-own-install-path/vendor/zendframework/zend-view/src/View.php(236): Zend\View\View->render(Object(Zend\View\Model\ViewModel)) 
#7 /my-own-install-path/vendor/zendframework/zend-view/src/View.php(200): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel)) 
#8 /my-own-install-path/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php(105): Zend\View\View->render(Object(Zend\View\Model\ViewModel)) 
#9 /my-own-install-path/vendor/zendframework/zend-eventmanager/src/EventManager.php(271): Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent)) 
#10 /my-own-install-path/vendor/zendframework/zend-eventmanager/src/EventManager.php(143): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent)) 
#11 /my-own-install-path/vendor/zendframework/zend-mvc/src/Application.php(369): Zend\EventManager\EventManager->triggerEvent(Object(Zend\Mvc\MvcEvent)) 
#12 /my-own-install-path/vendor/zendframework/zend-mvc/src/Application.php(348): Zend\Mvc\Application->completeRequest(Object(Zend\Mvc\MvcEvent)) 
#13 /my-own-install-path/public/index.php(43): Zend\Mvc\Application->run() 
#14 {main} 

काम नहीं कर रहा मेरा प्रश्न सरल है पाठ जोड़ा। क्या आप इसमें सफल हुए थे या क्या आपको कोई जानकारी है कि इसमें क्या गलत है? किसी भी तरह की सहायता को आभार समझेंगे। बहुत धन्यवाद।

+0

क्या आप जानते हैं नियंत्रक पर या नियंत्रक प्लग-इन द्वारा अनुवादक/I18n विन्यास के लिए कैसे समाधान की आवश्यकता है? – rafaelphp

उत्तर

6

ऐसा लगता है कि यह अनुवाद दृश्य सहायक नहीं ढूंढ सकता है। अपने कॉन्फ़िग फ़ाइल में इस जोड़ने का प्रयास करें:

'view_helpers' => [ 
    'invokables' => [ 
     'translate' => \Zend\I18n\View\Helper\Translate::class 
    ] 
] 

मैंने यह भी पाया मैं सेवा रजिस्टर करने के लिए की जरूरत:

'service_manager' => [ 
    'factories' => [ 
     \Zend\I18n\Translator\TranslatorInterface::class => \Zend\I18n\Translator\TranslatorServiceFactory::class, 
    ] 
] 
+0

बढ़िया, view_helpers सरणी ने काम किया। –

+0

नियंत्रक पर अनुवादक काम करने के लिए ऐसा कैसे करें? – rafaelphp

+0

पहले कारखाने का उपयोग करके नियंत्रक में अनुवाद दृश्य सहायक को इंजेक्ट करें (कोड: '$ सेवा प्रबंधक-> प्राप्त करें ('ViewHelperManager') -> प्राप्त करें ('अनुवाद करें')')। फिर नियंत्रक में अनुवादक की '__invoke' विधि का उपयोग करें i.e. '$ TranslateString = $ translateHelper (" यहां एक स्ट्रिंग है ")'। – avy

0

यह मुझे इस विन्यास के साथ काम करते हैं:

'translator' => [ 
    'locale' => 'cs_CZ', 
    'translation_file_patterns' => [ 
     [ 
      'type' => 'gettext', 
      'base_dir' => APPLICATION_MODULE_ROOT . '/language', 
      'pattern' => '%s.mo', 
     ], 
    ], 
], 

जो के साथ आप zf3 स्थापित किया है मॉड्यूल? ज़ेंड-सर्विसिकेंजर क्या आपने स्थापित किया है?

+0

स्थापित मॉड्यूल हैं: 'Zend \ Mvc \ I18n', 'Zend \ प्रवेश करें', 'Zend \ फॉर्म', 'Zend \ Db', 'Zend \ रूटर', 'Zend \ सत्यापनकर्ता', 'एप्लिकेशन' –

9

मैं samsonasik here से "सादे वेनिला" समाधान मिल गया।

$ composer require zendframework/zend-mvc-i18n 

तो मॉड्यूल के रूप में पंजीकृत:

'modules' => [ 
    'Zend\I18n', 
    'Zend\Mvc\I18n', 
    // ... 
], 
+2

यह सही उत्तर है। इसके अतिरिक्त, यदि आप ज़ेंड-घटक-इंस्टॉलर का उपयोग कर रहे हैं, तो आपको यह पूछना चाहिए कि यदि आप इन मॉड्यूल को स्थापित करना चाहते हैं, और फिर यह आपके लिए करें। यदि आप अभी तक ज़ेंड-घटक-इंस्टॉलर का उपयोग नहीं कर रहे हैं, तो इसे अपने संगीत में 'संगीतकार की आवश्यकता ज़ेंडफ्रेमवर्क/ज़ेंड-घटक-इंस्टॉलर' के माध्यम से जोड़ें, क्योंकि यह इसे स्वचालित करता है। – weierophinney

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