当前我使用的是:
{% if locale == 'pt' %}
<html lang="pt-BR">
{% elseif locale == 'en' %}
<html lang="en-US">
{% endif %}
这是不错的,但使整个<html>
标记在源代码中重复。你觉得怎么样?
在PHP模板中,我经常使用以下内容:
<html lang="<?php
if ($locale === 'pt') {
echo 'pt-BR';
} elseif ($locale === 'en') {
echo 'en-US';
}
?>">
我想知道是否有一种方法可以用Twig产生类似的结果。这是迄今为止我得到的最好的,但对我来说有点奇怪:
<html lang="{%
if locale == 'en'
%}en-US{%
elseif locale == 'pt'
%}pt-BR{%
endif %}"></html>
有更整洁的方法吗?
https://twigfiddle.com/4lwsjb
您可以创建一个数组/哈希来缩短代码:
{% set localization = {
'pt': 'pt-BR',
'en': 'en-US',
} %}
<html lang="{{ localization[locale]|default('en-US') }}">
演示
我甚至建议在控制器中创建定位数组,并将其传递给视图或将其注册为全局变量
我刚刚添加的默认过滤器用于在阵列中locale
未知的情况下提供回退