Thay đổi đáp ứng ngôn ngữ của bộ điều khiển magento 2


7

Tôi có một bộ điều khiển hoạt động như một điểm cuối API trong magento 2, tôi cần có phản hồi trên các ngôn ngữ khác nhau dựa trên tham số đã được thông qua, bộ điều khiển này có thể truy cập mô hình, v.v.

ví dụ:

public function execute()
{
     if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');     
    }

     if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    try {
        $lang = $this->getRequest()->getParam('lang');
        if($lang == 'en'){
          $message = 'who are you';
          $data['var_1'] = "Live";
        }elseif($lang == 'jp'){
          $messsage = 'あなたは誰';
          $data['var_1'] = "ライブ";
        } 
        return $this->_formatResponse(500,$message,$data);
    } catch (\Exception $ex) {
        $message = $ex->getMessage();
        return $this->_formatResponse(500,$message);
    }
}

protected function _formatResponse($status, $message = '', $data = [])
{ 
    $result = $this->_resultJsonFactory->create();
    $result->setHttpResponseCode($status);
    return $result->setData([
        'status' => $status,
        'message' => $message,
        'data' => $data
    ]);
}

Làm thế nào tôi có thể đạt được để quản lý thông điệp dịch này một cách linh hoạt khi có nhiều người dùng truy cập bộ điều khiển của tôi.


Bạn có thể vui lòng tải lên toàn bộ mã điều khiển của bạn?
Rohan Hapani

@RohanHapani kiểm tra câu hỏi cập nhật của tôi
Tiny Dancer

Câu trả lời:


0

Bên dưới mã Trình điều khiển hoạt động với tôi nhưng nó cũng sẽ thay đổi giao diện cửa hàng cho giao diện người dùng (trong trường hợp cùng phiên cho cuộc gọi API và chính trang web)

<?php

namespace Vendor\MyModule\Controller\Index;

use Magento\Store\Model\Store;
use Magento\Framework\Controller\ResultFactory;
use Company\OrderDevice\Helper\Data;


class Index extends \Magento\Framework\App\Action\Action
{


protected $_storeManagerInterface;
protected $_resultJsonFactory;
protected $_httpContext;
protected $_storeRepository;
protected $storeCookieManager;

public function __construct(
        \Magento\Framework\App\Action\Context $context,        
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Store\Api\StoreCookieManagerInterface $storeCookieManager,
        \Magento\Framework\App\Http\Context $httpContext,
        \Magento\Store\Api\StoreRepositoryInterface $storeRepository,
        \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory        
    ) {

        $this->_storeManagerInterface        = $storeManager;
        $this->storeCookieManager = $storeCookieManager;
        $this->_httpContext = $httpContext;
        $this->_storeRepository = $storeRepository;
        $this->_resultJsonFactory   = $resultJsonFactory;        
        parent::__construct($context);
    }


 public function execute(){
   $fromStore= 'default'; // English
   $toStore  = 'cn';      // Chinese
   $store = $this->_storeRepository->getActiveStoreByCode($toStore);
   $this->_httpContext->setValue(Store::ENTITY, $toStore, $fromStore);
   $this->storeCookieManager->setStoreCookie($store);   
   $result = $this->_resultJsonFactory->create();       
   $message  = __('Contact Us');    
   return $result->setData(array(
                    'success' => 1,
                    'error' => 0,
                    'message' => $message
                   ));   

 }

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.