TYPO3:如何将多种语言的本地化内容用于同一页面?

时间:2016-07-20 13:55:55

标签: php templates typo3 fluid extbase

我正在开发一个本地化的Typo3扩展程序,并且我已经构建了存储库和模型,目前能够在内容中查看内容的每个语言版本到其自己的语言ID页面。

然而,我需要将一些已翻译的属性(内容字段)显示到单个网页中,但我不知道也无法在其他来源上找到如何将所有已翻译的内容处理到我的模板视图中或如何分配变量。

示例:

在我的控制器中有:

bit

我将模板中的内容显示为:

$test = $this->testRepository->findAll();
$this->view->assign('test', $test);

现在,Typo3完成了工作,对于EN,它显示英文版的标题',DE为德语版本,依此类推,但所有这些都在不同的页面上。

如何使用' test.title'的所有语言版本?并将它们显示在同一页面上?

谢谢

1 个答案:

答案 0 :(得分:1)

只是一个想法,我还没有测试它。

在您的存储库中,插入此函数:

public function initializeObject() {
    $querySettings = $this->createQuery()->getQuerySettings();
    $querySettings->setRespectSysLanguage(false);
    $querySettings->setLanguageMode('ignore');
    $this->setDefaultQuerySettings($querySettings);
}

如果您不想忽略整个扩展程序中的语言过滤,只需针对单个查询更改查询设置。

现在您应该立即获取所有翻译以进行查询。使用

进行语言过滤
$query->matching($query->equals('sysLanguageUid', 1));

不要忘记在模型中使用getter和setter函数定义sysLanguageUid