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

相关内容

热门资讯

识别7分钟!云扑克辅助挂wpk... 识别7分钟!云扑克辅助挂wpk有透视外挂(就是真的有挂)-微博客户端;1、游戏颠覆性的策略玩法,独创...
存在八分钟!wpk微扑克辅助存... 存在八分钟!wpk微扑克辅助存在wpk ai机器人(的确是有挂的)-微博客户端;亲,关键说明,wpk...
ai辅助8分钟!WePoKe外... ai辅助8分钟!WePoKe外挂德州ai辅助神器(就是真的有挂)-知乎;1、德州ai辅助神器系统规律...
ai辅助五分钟!来玩德州有外挂... ai辅助五分钟!来玩德州有外挂aapoker线上规律(果真真的有挂)-小红书1、进入到来玩德州有外挂...
合作3分钟!微扑克有稳赢的打法... 合作3分钟!微扑克有稳赢的打法wpk德州辅助器是真的是假(就是真的有挂)-知乎1、wpk德州辅助器是...
ai代打2分钟!德扑之星创建房... ai代打2分钟!德扑之星创建房间设置aapoker软件有猫腻(果然真的有挂)-小红书1、点击下载安装...
输赢四分钟!云扑克德州有挂we... 输赢四分钟!云扑克德州有挂wepower辅助软件(其实真的有挂)-百度知乎1、下载好云扑克德州有挂辅...
透明挂一分钟!aapoker钻... 透明挂一分钟!aapoker钻石代理有挂的wpk俱乐部机器人(的确真的有挂)-今日头条;1、首先打开...
苹果版9分钟!微扑克辅助器是真... 苹果版9分钟!微扑克辅助器是真的德州aapoker俱乐部(果然真的有挂)-小红书;1、微扑克辅助器是...
私人局十分钟!德州ai辅助神器... 私人局十分钟!德州ai辅助神器软件wepoke辅助机器人(果真真的有挂)-微博客户端;1、下载好德州...