10月CMS如何获取当前的区域设置名称?

时间:2016-10-27 19:26:42

标签: localization translation octobercms

你能告诉我如何获得当前的语言名称或者这样的事情。

我希望根据10月份CMS在网站上自定义Locale Switcher。

收到类似

之类的东西会很有意思
...
{{ set var = ****.getLocale();}}
...
then use it for switch($var){}
...

3 个答案:

答案 0 :(得分:5)

在twig中,您可以使用{{ activeLocale }},使用{{ activeLocaleName }}的完整语言名称以及包含{{ locales }}所有语言环境的数组来访问当前语言。

您可以使用{{ dump() }}查看页面上的所有可用变量。如果您尝试它,您也会在那里找到区域设置变量。

答案 1 :(得分:3)

我尝试使用activeLocalelocales数组,但是一个人无法停止循环,因此我无法有条件地呈现某些内容。这就是我解决它的方法,在阅读了插件的逻辑后,它是如何工作的,我在其中一个部分中做到了这一点。

==
use RainLab\Translate\Classes\Translator;
protected $translator;

function onStart()
{
    $this->translator = Translator::instance();
    $this['SelectedLanguage'] = $this->activeLocale = $this->translator->getLocale();
}
==
{% set CurrentLanguage = SelectedLanguage %}

现在{{CurrentLanguage}}会给我当前语言的代码所以现在使用twig我可以像这样做一些条件渲染

{% if CurrentLanguage is same as('en') %}{% endif %}
{% if CurrentLanguage is same as('tr') %}{% endif %}
{% if CurrentLanguage is same as('gr') %}{% endif %}

也许可能有另一种解决方案。但这个很有魅力。

<强>更新

虽然,在组件或其他地方的情况下,可以使用会话以这种方式检索当前语言,

Session::get('rainlab.translate.locale')

答案 2 :(得分:2)

假设您使用RainLab.Translate插件?

创建一个使用localePicker组件的partial,然后使用您的自定义代码:

<div>{{ activeLocale }} - {{ activeLocaleName }}</div>
{% for code, name in localePicker.locales %}
    <div>{{ code }} - {{ name }}</div>
{% endfor %}

然后从您想要使用它的地方调用该部分。