0

我已经准备好使用 Bitrix CMS 构建的网站。现在我想在网站上添加几种其他语言。我在哪里可以设置网站的多语言属性?

4

1 回答 1

0

有可能的。如果一切都是为您定制的,那么您需要通过更改站点的程序代码来实现。我将在一个部分(<主要语言的域>,<主要语言的域> / <另一种语言的代码> / - 版本使用不同语言的网站)。

您需要在管理面板中添加设置:

例如,第二种语言将在当前站点的部分中作为 /es/。

需要更改站点代码:

  • 组件模板中的所有文本(如果自定义)应放在 /lang/es/template.php 或 /lang/en/template.php 部分(每个组件都有此类文件夹,或创建它们)或 /lang/ ru/template.php(取决于在管理面板中创建了多少个站点),在这些文件中,单词设置如下

    $MESS['TITLE'] = '...'; 
    

    在模板中你可以像这样输出

    <?=GetMessage("TITLE")?>;
    
  • 您需要在 /es/ 部分创建站点的第二个版本,您可以通过在其中指定来简单地创建相同的部分和 index.php 文件,例如,为 /es/index.php 文件

    <? require ($_SERVER["DOCUMENT_ROOT"]."/index.php"); 
    

    也就是说,网站所有版本中的页面都是相同的(将启动相同的组件)。

语言更改取决于从哪个部分打开哪个站点,bitrix设置全局变量LANGUAGE_ID,其中将有当前站点的语言代码(在管理面板中指定),如果我们在/es/部分,那么在 LANGUAGE_ID 中会有“es”(如果我们在 /ru/ 部分,那么 LANGUAGE_ID 将是“ru”)。因此,您可以检查代码中的当前语言。

如果在管理面板中的信息块中设置了显示在站点上或从站点收集它们的数据,那么您需要为站点的另一个版本创建相同的数据(只需在设置中的复选标记信息块)。或者想出自己的东西,可以在_es类型的信息块的代码下下标,在代码中检查LANGUAGE_ID来查找需要的信息块。

如何在代码中实现它的示例可以在这里找到https://github.com/ssv32/site-asisg.ru-web,这不是一个理想的实现,但您可以按照思路。(在这种情况下,信息块是相同的,但是元素有一个列表类型属性,该属性决定了数据是针对哪种语言的,代码是通过这个属性过滤的)

于 2020-02-03T12:25:48.523 回答