Drupal:如何基于语言创建函数,使其不显示实体


Drupal: How do I create a function based on the language, so that it will not display entities?

对不起我的英语我正在尝试建立一个多语言网站。我在YouTube上遵循了有关此事的教程。很好。它引导您完成设置所有这些模块和设置的丛林。但他没有介绍的是基于视图模块的输出解决方案。

我尝试四处搜索,但似乎没有关于如何让视图模块根据语言显示正确语言的解决方案。通过选择语言可以正确切换其他所有内容。

好的,所以我在想:在"高级"部分的"查看-编辑"下,我看到了"字段语言"选项。默认情况下,它设置为当前用户语言。我将其更改为默认站点语言。这会导致视图显示每种语言、默认值及其翻译版本的影响。现在,如果我创建一个函数,在选择语言时取消设置内容,一切都会很好。现在我发现到目前为止是:我在template_preprocess视图视图级别打印了一个DSM($variables['view']。在 RESULTS 下,我看到了两个对象,默认版本的表示形式和翻译版本。我可以使用对象node_language的字符串值,因此它应该显示或不以语言为基础。但是由于我不是PHP的大师,我不知道如何继续前进。我正在考虑在 html 级别编写一个函数并检索其classes_array的特定值,当它处于英语模式时,值将是:i18n-en。因此,根据该值,我将取消设置那些我不想在视图视图结果下显示的对象。但是我怎样才能将行为传递给视图,或者这毕竟是正确的方式?好吧,我希望你们都有足够的耐心理解我的问题。提前非常感谢。马赛尔

我不太确定你想要实现什么。

您始终具有全局对象$language并且可以检查当前语言,如下所示:

if ($language->language == 'en') do something language dependent...

当您编辑视图时,您可以创建语言上下文过滤器,从 PHP 计算您需要的语言,并使用 views_embed_view() 或 views_get_view_results() 传递语言将结果限制为一种(或多种)语言。