API-PLATFORM:如何根据语言返回数据?
创始人
2024-09-07 05:00:43
0

在API-PLATFORM中实现根据语言返回数据的方法有许多种,下面是其中的一种方法:

首先,在资源的类中添加一个方法来获取当前请求的语言:

// src/Entity/Product.php

use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Contracts\Translation\TranslatorInterface;

class Product
{
    // ...

    private $requestStack;
    private $translator;

    public function __construct(RequestStack $requestStack, TranslatorInterface $translator)
    {
        $this->requestStack = $requestStack;
        $this->translator = $translator;
    }

    public function getLanguage()
    {
        $request = $this->requestStack->getCurrentRequest();
        $language = $request->getPreferredLanguage();

        return $this->translator->getLocale() == $language ? $language : null;
    }

    // ...
}

接下来,在资源的类中实现根据语言返回数据的方法:

// src/Entity/Product.php

class Product
{
    // ...

    /**
     * @ApiProperty(
     *     readable=true,
     *     writable=false
     * )
     *
     * @Groups({"products_read"})
     */
    public function getName()
    {
        $language = $this->getLanguage();

        if (!$language) {
            return null;
        }

        // Get the translation based on the current language
        $translation = $this->getTranslation($language);

        // Return the translated name if any, otherwise the default name
        return $translation ? $translation->getName() : $this->defaultName;
    }

    private function getTranslation(string $language)
    {
        foreach ($this->translations as $translation) {
            if ($translation->getLanguage() === $language) {
                return $translation;
            }
        }

        return null;
    }

    // ...
}

现在我们可以在GET /api/products请求中使用一个header来指定所需的语言。例如,使用Accept-Language: fr-FR来获得法语翻译的产品名称。

相关内容

热门资讯

记者发布!蜀山四川辅助脚本,来... 记者发布!蜀山四川辅助脚本,来物局潮汕辅助,详细技巧(有挂实锤)1、记者发布!蜀山四川辅助脚本,来物...
技术分享!途游辅助器软件,好友... 技术分享!途游辅助器软件,好友赣南新版本脚本,详细挂(有挂方法)1)好友赣南新版本脚本免费钻石:进一...
每日必看!闽游app破解,内蒙... 每日必看!闽游app破解,内蒙麻将外卦神器下载,详细app(讲解有挂)在进入内蒙麻将外卦神器下载软件...
2分钟细说!微信牵手跑辅助下载... 2分钟细说!微信牵手跑辅助下载,哥哥打大a脚本,详细软件(有挂辅助)1、下载好微信牵手跑辅助下载正确...
科普攻略!哈局八张模拟器,拱趴... 科普攻略!哈局八张模拟器,拱趴大菠萝有辅助吗,详细app(有挂秘诀)1、科普攻略!哈局八张模拟器,拱...
玩家必看教程!决战辅助软件,人... 玩家必看教程!决战辅助软件,人海大厅脚本,详细技巧(存在有挂)1、每一步都需要思考,不同水平的挑战会...
推荐十款!决战13水辅助,hh... 推荐十款!决战13水辅助,hhpoker是正规平台吗,详细app(了解有挂)1、hhpoker是正规...
总算了解!拱趴大菠萝辅助工具,... 总算了解!拱趴大菠萝辅助工具,广西老友玩友破解视频,详细脚本(真的有挂)1、操作简单,无需广西老友玩...
热点推荐!南宁友乐辅助,功夫川... 热点推荐!南宁友乐辅助,功夫川麻辅助,详细脚本(有挂规律)亲,关键说明,南宁友乐辅助透视脚本安卓赛季...
必备科技!拼十辅助器,吉祥填大... 必备科技!拼十辅助器,吉祥填大坑有什么诀窍,详细方法(讲解有挂)1、游戏颠覆性的策略玩法,独创攻略技...