【发布时间】:2011-06-27 13:12:36
【问题描述】:
Expression Engine 是否有针对 i18n(国际化)的内置解决方案?
我必须建立一个多语言网站,并且想知道 EE 中的最佳方法。
【问题讨论】:
标签: internationalization expressionengine
Expression Engine 是否有针对 i18n(国际化)的内置解决方案?
我必须建立一个多语言网站,并且想知道 EE 中的最佳方法。
【问题讨论】:
标签: internationalization expressionengine
您可以通过多种方式在 ExpressionEngine 中创建多语言或特定国家/地区的网站,以提供每种语言/国家/地区特定的内容。
以下 ExpressionEngine Wiki 文章总结了两种最流行的解决方案:
基本理念是结合使用 URL 段、自定义字段和一点 PHP,以不同的语言呈现您的内容。
优势
例如,假设您有一个 3 种语言的网站:英语 (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 的path.php 全局变量来保存国家/地区代码和/或语言作为变量。
优势
使用与第一种方法相同的 3 种语言示例,您将在 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 的理念,您作为设计师/开发人员所获得的灵活性使您能够定制适合您独特需求的定制解决方案。
如果这些方法中的任何一种都不能完全满足您的需求,您可以轻松地制定自己的方法或采用混合方法。
考虑到这一点,一个很好的起点是查看可能有助于您的开发的Multilingual Add-Ons at Devot-ee。
【讨论】: