Twig テンプレートで翻訳が見つからない場合に、翻訳キーではなく空白文字列をデフォルトにする方法はありますか?
default
フィルターと一緒にTwigフィルターを使用してこの種のことを試みていますが、trans
これは機能しません:
{{ 'crmpicco.general.course.opening_hours_weekend'|default('')|trans }}
Twig テンプレートで翻訳が見つからない場合に、翻訳キーではなく空白文字列をデフォルトにする方法はありますか?
default
フィルターと一緒にTwigフィルターを使用してこの種のことを試みていますが、trans
これは機能しません:
{{ 'crmpicco.general.course.opening_hours_weekend'|default('')|trans }}
翻訳拡張機能を独自のもので上書きすることができるので、trans
andtranschoice
フィルターは希望どおりに動作します。
<?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 }
この方法は機能しますが、最適なソリューションではありません。
{% set trans_key = 'crmpicco.general.course.opening_hours_weekend' %}
{% set trans_value = trans_key | trans %}
{{ trans_key == trans_value ? '' : trans_value }}