Expression Engine i18n

3

Expression Engine有内置的i18n(国际化)解决方案吗?

我需要构建一个多语言网站,想知道在EE中做到这一点的最佳方法。

1个回答

3
有许多方法可以在ExpressionEngine中创建多语言或特定于国家/地区的站点,以提供针对每种语言/国家/地区的内容。

以下是从ExpressionEngine Wiki文章总结的两个最流行的解决方案:

在ExpressionEngine中创建多语言网站

基本思路是使用URL段、自定义字段和一些PHP来呈现不同语言的内容。

优势

  • 单个条目管理多种语言
  • 简单的URL结构

例如,假设您有一个三种语言站点:英语(en)、西班牙语(es)和德语(de)。

对于您站点中的每个内容,您都会创建一个带有语言标识符作为后缀(或前缀,无论您喜欢哪种方式)的自定义字段。

您的自定义字段名称可能如下所示:

custom_field_en
custom_field_es
custom_field_de

要切换语言,只需添加与语言相匹配的URL段(/en/es/de):

example.com/template_group/template/en
example.com/template_group/template/es
example.com/template_group/template/de

这种方法的主要优点在于,它将所有版本的内容保存在单个条目中,使得更新和编辑变得容易且一致。

ExpressionEngine中的多语言网站,另一种选择

另一种方法是为每个国家创建子目录,并使用ExpressionEngine的path.php全局变量来保存国家代码和/或语言作为变量。

优点

  • 无需PHP
  • 不需要跟踪哪个段保存语言变量
  • 优雅的URL结构

以第一种方法的三种语言为例,您可以在EE安装根目录下创建一个新目录,并以想要添加的语言的国家代码命名:

您的文件夹结构可能如下所示:

+ /de
+ /en
+ /es
index.php
+ /images
+ /system
+ /themes

为了让这种方法起作用,请在每个语言目录中放置主要的index.php的副本。然后,您需要修改每个文件,将变量分配给每个语言目录对应的变量名:
$assign_to_config['site_index'] = 'http://www.example.com/en/';
$assign_to_config['global_vars'] = array(
    "country_code" => "en",
    "language" => "english"
);

构建的URL将使用您选择的任何语言/国家标识:
example.com/es-MX/template_group/template/
example.com/MX/template_group/template/

替代方法的主要优点是使用全局变量,利用它们早期解析的事实,几乎可以在模板的任何地方使用。
参见:ExpressionEngine's Parse Order(PDF,33 KB)

其他解决方案

拥抱ExpressionEngine的理念,作为设计师/开发人员赋予你的灵活性,允许你定制适合你独特需求的自定义解决方案。
如果这两种方法都不完全符合您的需求,您可以轻松制定自己的方法或采用混合方法。
考虑到这一点,一个好的起点是查看Devot-ee的多语言插件,这可能有助于您的开发。

1
所有的维基链接现在都已经失效了。我无法轻易地找到替代链接。如果其他人有它们,更新这篇文章将是很好的。 - Julian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接