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来获得法语翻译的产品名称。

相关内容

热门资讯

一分钟了解(拱趴大菠萝免费)外... 一分钟了解(拱趴大菠萝免费)外挂透明挂辅助脚本(透视)透视辅助(2024已更新)(哔哩哔哩);是一款...
科普常识!wpk后台(wepo... 科普常识!wpk后台(wepoker)外挂透明挂辅助神器(辅助挂)玩家教程(有挂细节)-哔哩哔哩是一...
研究成果(云扑克苹果)外挂透明... 大家肯定在之前云扑克苹果或者云扑克苹果中玩过研究成果(云扑克苹果)外挂透明挂辅助工具(辅助挂)发牌规...
如何分辨真伪(WpK)外挂透明... 如何分辨真伪(WpK)外挂透明挂辅助挂(辅助挂)透视辅助(2020已更新)(哔哩哔哩);WpK黑科技...
玩家攻略推荐!微扑克有辅助挂(... 玩家攻略推荐!微扑克有辅助挂(wePoKe)外挂透明挂辅助工具(透视)系统教程(讲解有挂)-哔哩哔哩...
实操分享(新版Wepoke)外... 实操分享(新版Wepoke)外挂透明挂辅助软件(透视)透视辅助(新版有挂)-哔哩哔哩;亲真的是有正版...
教程攻略(德州手机)外挂透明挂... 相信很多朋友都在电脑上玩过德州手机吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带来了德...
查到实测辅助!wpk测试(wE... 查到实测辅助!wpk测试(wEPoke)外挂透明挂辅助APP(透视)必胜教程(今日头条)-哔哩哔哩;...
透视辅助(WepoKe)外挂透... 透视辅助(WepoKe)外挂透明挂辅助插件(透视)德州ai机器人(有挂解惑)-哔哩哔哩;(需添加指定...
热点推荐(Wepoke插件)外... 热点推荐(Wepoke插件)外挂透明挂辅助APP(透视)软件透明挂(2023已更新)(哔哩哔哩);W...