Magento 2: स्टोर की वर्तमान भाषा कैसे प्राप्त करें?


10

मैं प्रत्येक स्टोर दृश्य / भाषा के लिए एक कस्टम ब्लॉक दिखाने की कोशिश कर रहा हूं। इसलिए मैं स्विच स्टेटमेंट बनाना चाहता हूं:

$lang = // Get language code or store view code here;
switch ($lang) {

    case 'en':
        // English block
        break;

    case 'nl':
        // Dutch block
        break;

    default:
        // Dutch block
        break;
}

मुझे यह कैसे मिल सकता है? मुझे इस फाइल में इसकी आवश्यकता है\app\design\frontend\Venustheme\floristy\Ves_Themesettings\templates\header\default.phtml

जवाबों:


14

आप स्टोर भाषा प्राप्त करने के लिए उपयोग \Magento\Store\Api\Data\StoreInterfaceया Magento\Framework\Locale\Resolverवर्ग कर सकते हैं।

1) \Magento\Store\Api\Data\StoreInterfaceक्लास का उपयोग करके

ऑब्जेक्ट मैनजर के साथ

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$store = $objectManager->get('Magento\Store\Api\Data\StoreInterface'); 

echo $store->getLocaleCode();

निर्भरता इंजेक्शन के साथ

protected $_store;

public function __construct(
    ...
    \Magento\Store\Api\Data\StoreInterface $store,
    ...
) {
    ...
    $this->_store = $store;
    ...
}

अब getLocaleCode()लैगेज प्राप्त करने के लिए उपयोग करें:

$currentStore = $this->_store->getLocaleCode();

if($currentStore == 'en_US'){

}

2) Magento\Framework\Locale\Resolverक्लास का उपयोग करके

ऑब्जेक्ट मैनजर के साथ

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$store = $objectManager->get('Magento\Framework\Locale\Resolver'); 

echo $store->getLocale();

फैक्टरी विधि के साथ

protected $_store;

public function __construct(
    ...
    Magento\Framework\Locale\Resolver $store,
    ...
) {
    ...
    $this->_store = $store;
    ...
}

अब getLocale()लैगेज प्राप्त करने के लिए उपयोग करें:

$currentStore = $this->_store->getLocale();

if($currentStore == 'en_US'){

}

1
मुझे लगता है कि आप का अर्थ है "निर्भरता इंजेक्शन के साथ"
मिलान सिमेक

@MilanSimek हाँ आप सही हैं फैक्टरी विधि के साथ निर्भरता इंजेक्शन के साथ मतलब है
प्रिंस पटेल

rakeshjesadiya.com/… आप अधिक विवरण देख सकते हैं।
राकेश जेसादिया

5

आप नीचे दिए गए तरीके का उपयोग करके वर्तमान स्थान प्राप्त कर सकते हैं,

Phtml फ़ाइल में सीधे ऑब्जेक्टमैनेगर का उपयोग, Magento 2 मानक के लिए सही तरीका नहीं है,

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$getLocale = $objectManager->get('Magento\Framework\Locale\Resolver');
$haystack  = $getLocale->getLocale(); 
$lang = strstr($haystack, '_', true); 
switch ($lang) {

    case 'en':
        // English block
        break;

    case 'nl':
        // Dutch block
        break;

    default:
        // Dutch block
        break;
}

आप ब्लॉक फ़ाइल को कॉल कर सकते हैं और अपनी आवश्यकता के लिए एक फ़ंक्शन सेट कर सकते हैं और उन फ़ंक्शन को phtml फ़ाइल के अंदर कॉल कर सकते हैं।

public function __construct(
        \Magento\Framework\Locale\Resolver $locale
    ) {
        $this->locale = $locale;
    }

phtml फ़ाइल के अंदर कॉल करें,

$currentCode = $this->locale->getLocale();
$langCode = strstr($currentCode, '_', true);
if($langCode == 'en_US'){

}

+1 के लिए strstr($haystack, '_', true); , अच्छी चाल
मिलन सिम्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.