表达引擎i18n

时间:2011-06-27 13:12:36

标签: internationalization expressionengine

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

我必须建立一个多语言网站,并希望了解EE的最佳方法。

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式在ExpressionEngine中创建多语言或国家/地区特定网站,以提供特定于每种语言/国家的内容

以下ExpressionEngine Wiki文章总结了两个最受欢迎的解决方案:

MultiLingual Websites in ExpressionEngine

基本思想是使用URL细分,自定义字段和一些PHP的组合以不同语言呈现您的内容。

<强>优点

  • 单一条目管理多种语言
  • 简单的网址结构

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

对于您网站中的每一条内容,您都要创建一个自定义字段,其中包含语言标识符作为字段的后缀(或前缀,无论您喜欢什么)。

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

custom_field_en
custom_field_es
custom_field_de

要在不同语言之间切换,只需添加与该语言匹配的相应网址(/en/es/de):

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

此方法的主要优点是,它可以将您内容的所有版本保留在一个条目中,从而使更新和编辑变得简单而一致。


MultiLingual Websites in ExpressionEngine, Alternative

替代方法的想法是为每个国家创建子目录,并使用ExpressionEngine的path.php全局变量将国家/地区代码和/或语言保存为变量。

<强>优点

  • 不需要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"
);

构建的网址将使用您选择的任何语言/国家/地区名称:

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