获取一些翻译symfony2

时间:2017-09-04 14:58:03

标签: symfony

我得到了翻译:

$translated = $this->container->get('translator')
        ->getCatalogue($language)
        ->all();

但我有所有的翻译。

例如,有一个文件包含以下内容:

symfony:
    is:
        great: Symfony is great
        amazing: Symfony is amazing
    has:
        bundles: Symfony has bundles
user:
    login: Login

我怎样才能获得某些(仅限用户或仅限symfony)?提前谢谢。

更新: 这样做了:

$messages = [];
foreach ($translated['messages'] as $key => $message) {
    if (stripos($key, 'frontend')) {
        $messages[$key] = $message;
    }
}

但内置没有这样的功能吗?

3 个答案:

答案 0 :(得分:1)

From the doc:

/**
 * Gets the messages within a given domain.
 *
 * If $domain is null, it returns all messages.
 *
 * @param string $domain The domain name
 *
 * @return array An array of messages
 */
public function all($domain = null);

编辑:

查看更新后的问题,如果您查看MessageCatalogueInterface,我认为您可以执行类似catalogue-&gt; all(&#39; yourdomain&#39;)的操作,如果您要将您的转换组织到域中。< / p>

看看这里:

{{1}}

答案 1 :(得分:1)

如果您想接收某些翻译,请将它们转移到具有正确域名的另一个文件(在我的示例中,这将是前端):

enter image description here

现在我可以获得如下翻译:

$messages = $this->container->get('translator')
    ->getCatalogue($language)
    ->all('frontend');

感谢您提示strnm

答案 2 :(得分:0)

在阅读翻译文件时,您无法做什么,Symfony会将嵌套在YAML文件中的键标准化。因此,目录只包含消息密钥symfony.is.greatsymfony.is.amazingsymfony.has.bundlesuser.login

能够嵌套键只是翻译组件YamlFileLoader类提供的语法糖。