在symfony2控制器中,您可以使用以下方法获取特定翻译:
$this->get('translator')->trans('dropdown.state.CA.AB');
示例messages.en.yml
:
dropdown:
state:
CA:
AB: Alberta
BC: British Columbia
MB: Manitoba
如何在一次调用中获取AB,BC和MB(可能在一个数组中),并希望能够使用上述或类似的翻译调用单独调用它。
我尝试了很多事情:
$this->get('translator')->trans('zuora.dropdown.state.CA);
dropdown:
state:
CA:
- AB: Alberta
- BC: British Columbia
- MB: Manitobavarious
当然,错过了一些步骤
答案 0 :(得分:2)
不,你无法通过翻译得到它
这是因为ArrayLoader
flattens解析了yml的结果。
Flatten方法转换
之类的输入Array (
[foo] => Array(
[bar] => baz
[sub] => Array(
[fiz] => foobaz
)
)
)
要
Array (
[foo.bar] => baz
[foo.sub.fiz] => foobaz
)
我能找到的唯一方法是再次解析翻译文件。
use Symfony\Component\Yaml\Yaml;
// From a controller
$file = __DIR__.'/../Resources/translations/messages.en.yml';
$parsed = Yaml::parse(file_get_contents($file));
foreach ($parsed['dropdown']['state']['CA'] as $ca => $content) {
// Your logic...
}