2

Twig テンプレートで翻訳が見つからない場合に、翻訳キーではなく空白文字列をデフォルトにする方法はありますか?

defaultフィルターと一緒にTwigフィルターを使用してこの種のことを試みていますが、transこれは機能しません:

{{ 'crmpicco.general.course.opening_hours_weekend'|default('')|trans }}
4

4 に答える 4

2

翻訳拡張機能を独自のもので上書きすることができるので、transandtranschoiceフィルターは希望どおりに動作します。

<?php
// src/AppBundle/Twig/EmptyTranslationExtension.php

namespace AppBundle\Twig;

use Symfony\Bridge\Twig\Extension\TranslationExtension;

class EmptyTranslationExtension extends TranslationExtension
{
    public function trans($message, array $arguments = [], $domain = null, $locale = null)
    {
        $value = parent::trans($message, $arguments, $domain, $locale);

        return ($message === $value) ? '' : $value;
    }

    public function transchoice($message, $count, array $arguments = [], $domain = null, $locale = null)
    {
        $value = parent::transchoice($message, $count, array_merge(['%count%' => $count], $arguments), $domain, $locale);

        return ($message === $value) ? '' : $value;
    }
}

そして、拡張機能をデフォルトのものの代わりとして登録します:

# app/config/services.yml

services:
    twig.extension.trans:
        class: AppBundle\Twig\EmptyTranslationExtension
        public: false
        arguments:
            - @translator
        tags:
            - { name: twig.extension }
于 2015-10-01T11:07:25.303 に答える
0

この方法は機能しますが、最適なソリューションではありません。

{% set trans_key = 'crmpicco.general.course.opening_hours_weekend' %}
{% set trans_value = trans_key | trans %}

{{ trans_key == trans_value ? '' : trans_value }}
于 2015-09-30T11:57:52.037 に答える