ম্যাজেন্টো 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
আমি মনে করি আপনি "নির্ভরতা ইনজেকশন সহ" বোঝাচ্ছেন
মিলান সিমেক

@ মিলানসিমেক হ্যাঁ আপনি ঠিক আছেন কারখানার পদ্ধতির সাথে নির্ভরতা ইনজেকশন সহ
যুবরাজ প্যাটেল

rakeshjesadiya.com/… আপনি আরও বিশদ পরীক্ষা করতে পারেন।
রকেশ জেসাদিয়া

5

আপনি নীচের উপায় ব্যবহার করে বর্তমান লোকেল পেতে পারেন,

পিএইচটিএমএল ফাইলে সরাসরি অবজেক্টম্যানেজারের ব্যবহার ম্যাজেন্টো 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;
}

আপনি ব্লক ফাইলটি কল করতে পারেন এবং আপনার প্রয়োজনের জন্য একটি ফাংশন সেট করতে পারেন এবং পিএইচটিএমএল ফাইলের মধ্যে সেই ফাংশনটি কল করতে পারেন।

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

পিএইচটিএমএল ফাইলের ভিতরে কল করুন,

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

}

+1 এর জন্য strstr($haystack, '_', true); , ভাল ট্রিক
মিলান সিমেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.