Internationalization 表达式引擎i18n

Internationalization 表达式引擎i18n,internationalization,expressionengine,Internationalization,Expressionengine,Expression Engine是否有i18n(国际化)的内置解决方案 我必须建立一个多语言网站,并想知道在EE中实现这一点的最佳方法。在ExpressionEngine中有许多方法可以创建一个多语言或特定国家的网站,以提供特定于每种语言/国家的内容 以下ExpressionEngine Wiki文章总结了两种最流行的解决方案: 其基本思想是使用URL段、自定义字段和一点PHP组合,以不同的语言呈现内容 优势 单条目管理多种语言 简单URL结构 例如,假设您有一个3种语言的站点:英语(en

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


我必须建立一个多语言网站,并想知道在EE中实现这一点的最佳方法。

在ExpressionEngine中有许多方法可以创建一个多语言或特定国家的网站,以提供特定于每种语言/国家的内容

以下ExpressionEngine Wiki文章总结了两种最流行的解决方案:

其基本思想是使用URL段、自定义字段和一点PHP组合,以不同的语言呈现内容

优势

  • 单条目管理多种语言
  • 简单URL结构
例如,假设您有一个3种语言的站点:英语(en)、西班牙语(es)和德语(de)

对于站点中的每一部分内容,您都需要创建一个自定义字段,将语言标识符作为字段的后缀(或前缀,无论您喜欢什么)

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

custom_field_en
custom_field_es
custom_field_de
+ /de
+ /en
+ /es
index.php
+ /images
+ /system
+ /themes
要在语言之间切换,只需添加与语言匹配的相应URL段(
/en
/es
/de
):

example.com/template_group/template/en
example.com/template_group/template/es
example.com/template_group/template/de
这种方法的主要优点是,它将内容的所有版本保存在一个条目中,使更新和编辑变得简单一致。


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

优势

  • 不需要PHP
  • 不需要跟踪哪个段保存语言变量
  • 优雅的URL结构
使用与第一种方法相同的3种语言作为示例,您可以在EE安装的根目录中创建一个新目录,并以要添加的语言的国家代码命名:

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

custom_field_en
custom_field_es
custom_field_de
+ /de
+ /en
+ /es
index.php
+ /images
+ /system
+ /themes
要允许此方法工作,请在每个语言目录中放置一份main
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/
另一种方法的主要优点是使用全局变量,利用它们在很早就被解析的事实,并且几乎可以在模板中的任何地方使用。

见:(PDF,33KB)


其他解决方案 秉承ExpressionEngine的理念,作为设计师/开发人员,您所拥有的灵活性允许您定制适合您独特需求的定制解决方案

如果这两种方法中的任何一种都不能完全满足您的需求,您可以精心设计自己的方法或采用混合方法


考虑到这一点,一个很好的出发点是研究可能有助于您的开发的问题。

现在所有的wiki链接都已失效。我无法轻松找到替换链接。如果其他人有他们,这将是伟大的更新这篇文章。