EZ Publish/EZ Publish 多语言使用(一)

来自站长百科
跳转至: 导航、​ 搜索

EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他

多语言概述[ ]

eZ Publish3.7 及早期版本中,必须为所有对象指定主语言(例如,每个对象必须至少存在于一种语言)。此外,可以指定附加语言用于内容翻译。“多语言功能”实现在版本级别且允许内容的版本存在于多种语言(语言在此被称为“翻译”)中。旧方案的缺点在于当需要多种翻译时,只有一个翻译者可以编辑对象。换言之,编辑者必须彼此等待并串行工作,因为同一时间只能有一个用户编辑对象的版本。这种功能已经被修改。

从3.8 版本开始,系统不再需要主语言。可以有一篇只存在于英文的文章同时另一篇文章却存在于法语。为对象选择语言后,可以将它翻译为任何可用语言。同一个对象的翻译者可以并行工作(一个用户只能同时编辑一个版本与翻译)。

  • 可翻译的类属性

从3.9 版本开始,类属性名也可被翻译。参阅“可翻译类属性”文档了解更多。

  • 区域

一个区域是一组与国家/地区特有的配置,如:语言,字符集,数字格式,货币符号,日期时间格式,月份,星期的表示等。eZ Publish 在"share/locale"下保存了很多预定义的区域INI 文件。这些文件用区域标识符命名。

区域标识符有三个语言代码字符与两个大写的国家代码构成。如:"eng-US“(英文,美国)或"nor-NO"(挪威语,挪威)。语言与国家代码由"ISO 639"和"ISO 3166-1 alpha-2"标准定义。eZ Publish 默认使用"eng-GB"区域。参阅“配置站点区域”章节了解如何配置站点区域,翻译管理界面,创建自定义区域。

  • 默认语言

从3.8 版本开始,"ContentObjectLocale"指定的不是主语言而是默认语言。这个语言会被用来作为某些支持可选语言参数的PHP 函数的默认值。INI 配置中的默认值为"eng-GB"。

假设已在"ContentObjectLocale"中指定"nor-NO"。这种情况下,如果用"eZContentClass::instance()"函数初始化一个对象且不指定语言,那么挪威语会被使用。

  • 可翻译的国家名

从3.9 版本开始,可以把国家名翻译为多种语言。例如:可以要求系统在使用挪威区域时候,在语言列表中用"Frankrike"替换"France","Norge"替换"Norway"。参考“可翻译的国家名”文档页面了解更多。

  • 翻译语言

可以选择创建和/或翻译对象的语言。所使用的语言集合称为翻译语言。可以用管理界面管理翻译语言。系统目前最多支持30 种翻译语言。

  • 初始化/主语言

可以用任何通过安装向导或管理界面中“设置/语言”安装的语言来创建对象。创建对象时,所使用的语言会被设置为对象的初始化/主语言。例如,如果用匈牙利语创建一篇文章,它的初始化/主语言就理所当然为匈牙利语。

对象主语言的内容不能被删除。但是,如果对象存在于多种语言中,主语言可以被改变,因而原来的主语言内容可以被删除。可以在管理界面中的“语言”窗口修改主语言或删除翻译。

  • 重要说明

注意:“初始化语言 (initial language) ”与“主语言 (main language)  ”是同一件事。代码和数据库表用“初始化语言 (initial language) ”,而管理界面用“主语言 (main language) ”。这种不一致有望在将来的发行版本中得到修正。

  • 站点语言

从3.8 版本开始,站点显示的语言。这种配置称为“站点语言”。可以在站点入口的"site.ini.append.php"中"[RegionalSettings]"下的"SiteLanguageList[]"数组配置。可以在这个数组中添加区域标识符来配置站点语言与其优先级(排在上面的区域有更高的优先级)。系统会尝试用最优先的语言显示内容,如果内容不存在于这种语言中,系统会依按优先级依次尝试其它语言。如果对象不存在于任何一种站点语言中,对象的内容不会被显示,除非它总是可用(稍后解释)或您配置站点为“显示未 翻译的内容”。

注意:如果没有指定"SiteLanguageList“,系统会用"ContentObjectLocale"中的设置,因而只有默认语言可用。

假设翻译语言为英文,法文和挪威语。如果指定它们中的两种语言为公共站点的站点语言(如:英文作为最优先语言和法文),系统会尝试用英文和法文显示对象内容,因而挪威语的内容不会被显示。如果用英文创建第一篇文章,法文创建第二篇,第三篇用挪威语,那只有第一,二篇文章会被显示。如果把第三篇文章翻译为英文或法文,那翻译过的内容会得到显示而挪威语内容仍然不会被显示。如果文章有英文和法文的翻译,那英文的内容会被显示(因为英文是站点的优先语言)。

某些对象应该总是可用,尽管它们不存在于任何一种站点语言中。例如:无论在哪个站点入口内,系统都必须可以提取用户对象。因为如此,在对象级别出现了一个新的标记"总是可用"。这个标记可以用来单独控制不同对象的可用性。如果一个对象不存在于任何站点语言中但是它的这个标记被启用,那么系统仍然会使用对象的初始化/主语言来显示它。

默认的对象可用性可以在类级别控制。默认情况下,这一标记为“文件夹”,“用户”,“用户组”,“图片”,“文件”等类启用,因而在创建这些类的对象时,这个标记会被启用。在类级别修改这个标记不会影响已经存在的对象因为它只决定对象被保存时这个标记的默认值。

假设有一个文件夹,它之存在于挪威语中,它被标记为“总是可用”且包含了若干文章(文章存在于英文,法文和挪威语且都没有被标记为“总是可用”)。如果英文和法文为公共站点的语言,文件夹仍然会被显示,因为它被标记为“总是可用”站点的用户因而可以访问它下面的文章。如果文件夹没有被标记为“总是可用”,则它不会被显示,因而网站用户也不能访问它下面的文章,除非您将文件夹翻译为英文或法文。

配置地区[ ]

eZ Publish 默认使用"eng-GB"区域。这是因为系统在"settings/site.ini"中的"[RegionalSettings]"下的"Locale"中默认使用"eng-GB"。如果您需要其它区域,需要重设这个配置。注意,指定的区域会被"l10n"操作符用作默认区域,除非您显式给出区域参数。下例演示了如何配置站点区域。

例1

假设需要对所有站点入口使用"nor-NO"区域。参照以下步骤。

1. 编辑"settings/override/site.ini.append.php"

2. 添加如下配置

Locale=nor-NO

3. 清除缓存

系统会为所有站点入口使用"share/locale/nor-NO.ini"作为区域配置。

例2

假设需要为某个站点入口"example"使用"nor-NO"区域。则编辑"settings/siteaccess/example/site.ini.append.php",并按照例1 添加配置。但要确 保"settings/override/site.ini.append.php"中不包含区域设置。清除缓存后,"example"开始使用"nor-NO"区域。但是这并不会翻译站点入口界面的所有部分(如:"Login"和"Sign up"链接/按钮等。)。要翻译界面,您需要在"[RegionalSettings]"内添加如下配置:

TextTranslation=enabled

上述配置会要求系统根据当前区域配置翻译模板中所有使用"i18n"操作符的字符串。这意味者可以为管理站点入口设置挪威语区域并启用文本翻译,从而将管理界面翻译为挪威语。("TextTranslation"默认被禁用。)

也可以用相同方法为其余站点入口指定不同的区域,否则默认区域会被使用。

添加缺失区域[ ]

eZ Publish 在"share/locale"目录中提供了很多默认的区域INI 文件。INI 文件由区域标识符命名。如果这里没有需要的区域配置,参阅http://ez.no/community/contribs/internationalization。下例演示了如何添加区域。

假设需要使用"ell-GR"区域。您需要:从http://ez.no/community/contribs/internationalization 下载希腊翻译文件并把文件解压到临时目录。应该可以找到一个"share"子目录,它包含区域文件"share/locale/elle-GR.ini"和翻译文件"share/translations/ell-GR/translation.ts"。此外,下载包可能还包含一个国旗图标"share/icons/flags/elle-GR.gif"和/或用于某些扩展的翻译文件,在"extension"子目录中。

注意,"translation.ts"文件包含eZ Publish 特有字符串的希腊文翻译(模板中和PHP 代码中使用的字符串)。如果启用"TextTranslation"配置,这个文件中的字符串会被用来翻译界面,系统信息,警告等。如果把"share"目录复制到eZ Publish 的安装目录中,设置"ell-GR"区域(如前例所述)并清除缓存,系统就会开始使用希腊区域。

自定义区域

除系统内建的区域,也可以开发自定义的区域。下例演示了如何创建自定义区域。

例1

假设需要使用冰岛区域。可以基于eng-GB 的区域文件创建自定义的配置文件。参阅以下步骤:

1. 在"share/locale"目录中把"eng-GB.ini"复制为"ice-IS.ini"。

2. 编辑区域配置。

3. 设置站点区域为"ice-IS"。

例2

假设您需要修改挪威区域。不要修改原始文件,因为升级时会被覆盖。相反,您应该基于原始文件创建一个自定义的区域文件。参阅如下步骤。

1. 在"share/locale"目录复制"nor-NO.ini"到"nor-NO@custom.ini"。

2. 编辑这个区域文件

3. 确保站点使用"nor-NO@custom"区域

4. 清除缓存

配置语言[ ]

默认情况下,站点语言为空(如:下载并解压eZ Publish 之后)。在安装过程中,安装向导允许用户选择站点语言。可用语言列表由"share/locale"目录中的INI 文件构成。用单选按钮选择默认语言(必须),

  • 服选框选择附加语言(可选)

注意,选择默认语言会同时影响默认语言与系统区域。注意,取决于浏览器的配置,某个单选按钮会被预先选择。但是,您可以选择其它语言。如果您例如:选择德语,那么默认语言与区域都会被设置为"ger-DE"且您的管理界面也会被翻译为德文界面(此外,"TextTranslation"会被启用)。

所有选中的语言会被添加到系统的翻译语言列表中且被作为公共和管理站点入口的站点语言的一种。默认语言会被作为最优先使用的站点语言。安装完成后,可以用它们中的任何语言创建和翻译内容。您也可以在管理界面中或配置文件中修改站点语言。

  • 显示未翻译的内容

因为有时可能需要显示所有语言,系统提供了一个称为"ShowUntranslatedObjects"的配置选项。它可以被设置为"enabled"或"disabled"。如果启用这个选项,系统会根据站点语言的优先级显示内容,但是系统不会过滤不在站点语言列表中的内容。换言之,所有的内容都会被显示,无论存在于何种语言中而且存在于站点语言列表中的内容会被系统以优先语言显示。

"ShowUntranslatedObjects"选项默认被禁用。但是,安装向导通常会对管理界面启用这个选项。这允许站点管理员用任何翻译语言创建和编辑对象,尽管某些语言不在站点语言列表中。

假设选择英式英文作为默认语言,法文与挪威语作为附加语言(参阅下图)。

EzpublishDYY1.jpg

这种情况下,安装结束后,您将会有以下的区域,默认语言和站点语言设置。

[RegionalSettings]
Locale=eng-GB
ContentObjectLocale=eng-GB
SiteLanguageList[]=eng-GB
SiteLanguageList[]=fre-FR
SiteLanguageList[]=nor-NO

这意味着站点区域被设置为"eng-GB“,默认语言为英文,最优先语言为英文,其次为法文和挪威语。安装向导会把这些配置写入公共和管理站点入口的"site.ini.append.php"中。对两个站点入口,"TextTranslation"选项都会被禁用,因为使用了"eng-GB"区域选项。安装向导会在管理站点入口的"site.ini.append.php"中添加下面一行配置:

ShowUntranslatedObjects=enabled

这会告诉系统管理界面中可以使用所有翻译语言。

可以用管理界面添加新的翻译语言。例如:在“设置-语言”部分添加德语。这种语言不会在公共站点显示因为它还不是站点语言(没有在"SiteLanguageList[]"数组中配置)。但是,清除缓存后你可以在管理界面中使用德语创建对象,因为管理站点入口的"ShowUntranslatedObjects"选项被启用。

EzpublishDYY2.jpg

  • 改变语言优先级

站点入口的"site.ini.append.php"中的"SiteLanguageList[]"指定站点语言。语言在列表中的顺序揭示了它们的优先级。排在上面的语言有更高的优先级。系统首先会尝试用最优先的语言显示内容。如果对象不存在于这种语言中,系统会按优先级依次尝试其它语言。如果对象不存在于任何一种站点语言,它不会被显示,除非被标记为“总是可用”且站点入口的“显示未翻译内容”选项被启用。要修改站点语言的优先级,编辑"site.ini.append.php"并重新排序"SiteLanguageList"数组中的元素。

假设您公共站点入口使用以下配置:

[RegionalSettings]
SiteLanguageList[]
SiteLanguageList[]=eng-GB
SiteLanguageList[]=fre-FR
SiteLanguageList[]=ger-DE
SiteLanguageList[]=nor-NO

如果一篇文章存在于法语和挪威语中,系统会根据站点语言的优先级用法语显示这篇文章。如果把文章翻译为德语,这种行为也不会改变。但是,如果将文章翻译为英文,那么它会被显示为英文。如果把"SiteLanguageList[]=nor-NO"移动到顶端,挪威语会成为最优先语言。这会要求系统优先显示挪威语内容并只有在挪威语内容不存在时才会用其它语言显示内容。

  • 使用多个公共站点入口

在前一个例子中,只用到一个公共站点入口。一个多语言站点通常会使用几个公共站点入口。如果站点内容存在于例如:英文和法文,那么建议使用如下两个公共站点入口:

EzpublishDYY3.jpg

现在,假设希望在站点中使用挪威语。在本例中,可以添加挪威语作为翻译语言,创建一个新的站点入口"no"并在"site.ini.append.php"中作如下配置:

[RegionalSettings]
SiteLanguageList[]
SiteLanguageList[]=nor-NO

这会告诉系统,这个站点唯一的站点语言为挪威语。换言之,如果文章不存在于挪威语中,则不会被显示。当然,也可以添加如下配置:

SiteLanguageList[]=eng-GB

在本例中,挪威语为"no"站点入口的最优先语言,英语为次优先语言。

EzpublishDYY4.jpg

只存在于英语中的文章会在三个站点入口中显示为英语。如果文章之存在于挪威语,它只会在"no"站点入口中显示。

假设用法语创建一个新文章"Lundi"(法语星期一的意思)。这篇文章会在"fr"站点入口中显示,但是不会在"gb"和"no"站点入口中显示(因为法语不是另外两个站点的站点语言)。如果把这篇文章翻译为挪威文"Mandag",那么这篇文章可以在"no"站点入口中显示,但是仍然不能在"gb"站点入口中显示。如果再将它翻译为英文"Monday",它会在"gb"站点入口中显示,但是不会影响到"fr"和"no"站点入口,因为英文是它们的第二优先语言。

管理翻译语言[ ]

管理界面允许为站点管理翻译语言。这可以通过管理全局翻译语言列表来达到。要访问翻译语言列表,在管理界面中点击“设置”标签,然后点击左侧的“语言”链接(也可以通过"/content/translations"直接访问)下图演示了这个列表。

EzpublishDYY5.jpg

列表的最后一列包含翻译数字信息(例如:多少对象被翻译成这种语言)。上图显示所有对象只存在于英文中,但还没有被翻译成法语和挪威语。如果点击语言名,系统会显示关于这种语言和区域的配置。

  • 添加新语言

可以通过点击“添加语言”按钮,从“翻译”下拉框中选择需要的语言来达到。注意,这个下拉框中的内容取决于"share/locale"中INI 文件的内容。如果希望使用的语言不在这里,需要首先添加缺失区域。

EzpublishDYY6.jpg

点击“确定”按钮保存您的修改。清除缓存后,将可以为您的内容使用这种语言。

  • 删除语言

只有在没有任何对象使用某个语言时,才能删除这种语言(当“翻译”这一列为"0")。

要从系统中删除一种或多种语言,勾选第一列中的复选框并点击“删除所选”按钮。

可翻译的类属性[ ]

从3.9.0 版本开始,编辑类的时候可以翻译类属性名。用户用不同语言编辑对象时,类属性标签会被用对应的翻译显示。例如:如果一个类用来保存英文和挪威语的汽车信息,类属性可以被翻译从而“颜色”属性会被显示为"Color"或"Farge"。

可以用任何被安装的语言(通过安装向导或管理界面安装)创建类。创建类时所使用的语言会被设置为类的主语言。类主语言的类名和类属性名不能被删除。但是,如果类存在于多种语言,您可以修改类的主语言,因而非主语言的类名和类属性名可以被删除。可以在类视图的“翻译”窗口修改主语言或删除类的翻译。

  • 用不同语言创建类

管理界面允许您用不同的翻译语言创建内容类。参阅如下步骤。

1. 在管理界面中访问“设置”标签,点击左侧的“类”再选择希望创建类的类组。应该可以看到若干已经存在于这个组中的类。

2. 从页面底端的下拉框中选择用于创建类的语言。点击“新建类”按钮(参阅下图)。

EzpublishDYY7.jpg

如果希望使用的语言不在下拉框中,确认它在全局翻译列表中。参阅“管理翻译语言”章节了解如何添加语言到全局翻译列表。注意,新加的语言在清除缓存后才能生效。

3. 系统会显示类编辑界面,右上角会显示类的主语言。指定类名,类标识符,对象名模式和容器标记,然后用页面底端的下拉框添加希望使用的类属性。

  • 将类翻译为多种语言

管理界面允许您将内容类的类名和属性名翻译成任何一种可用的翻译语言。参阅如下步骤。

1. 在管理界面中,点击希望编辑的类的类名,会显示类的显示界面。

2. 从下拉框中选择“另一种语言”并点击“编辑”按钮。如下图。

EzpublishDYY8.jpg

系统会显示语言选择页面(如下图)。

EzpublishDYY9.jpg

用单选按钮选择语言(在上图挪威语被选中),还可以选择翻译源。可以选择"None"或者其它现存的语言作为翻译源。如果选择了某个现存语言作为翻译源,系统会从选定的语言中复制类名和属性名,可以随后修改它们(否则,必须手动输入所有内容)。

3. 点击“编辑”按钮后,系统会显示类的编辑界面,你可以在这个界面中编辑类名和类属性名。结束后,点击“确认”按钮保存修改。

  • 用不同语言编辑类

可以用任何现存语言编辑类。参阅如下步骤。

  • 使用“编辑”按钮

1. 在管理界面中,找到要编辑的类,点击类名,系统会显示类查看视图。

2. 从下拉框中选择语言然后点击“编辑”按钮。系统会显示类编辑界面,可以在这里修改类名和属性名。修改结束后,点击“确定”保存修改。

  • 用翻译窗口

1. 在管理界面中,找到要编辑的类,点击类名,系统会显示类查看视图。

2. 页面顶端的水平开关可以控制不同窗口的可见性。点击“翻译”开关显示翻译窗口(参阅下图)

EzpublishDYY10.jpg

开关的蓝色背景表示开关被打开,因而“翻译”窗口被启用。下图演示了这个窗口的外观(在本例中有三种现存语言)。

EzpublishDYY11.jpg

找到需要编辑的语言,然后点击语言右侧的编辑图标。系统会显示类编辑界面。

  • 修改主语言

如果类存在于多种语言中,那么您可以选择其中任何一种语言作为主语言。

1. 在管理界面中,找到要编辑的类,点击类名,系统会显示类查看视图。

2. 启用翻译窗口,用单选框选择新的主语言,点击“设置主语言”按钮。

  • 删除语言

可以从类中删除语言(除了主语言外)。可以在翻译窗口中完成。用复选框勾选要删除的语言,然后点击“删除所选项”按钮。

可翻译的国家名[ ]

从3.9 版本开始,可以把国家名翻译成不同语言。例如:当使用挪威区域时,可以要求系统用"Frankrike"代替"France",用"Norge"代替"Norway"显示国家名。下例演示了如何做到。

如果希望在挪威区域中用挪威语翻译“法国”和“挪威”,参阅如下步骤。

1. 在"share/locale"目录中复制"nor-NO.ini"到"nor-NO@custom.ini"。

2. 在"[RegionalSettings]"下添加如下配置:

[CountryNames]
Countries[]
Countries[FR]=Frankrike
Countries[NO]=Norge

3. 设置站点区域为"nor-NO@custom"(参阅“配置站点区域”文档了解更多)清除系统缓存后,系统会用挪威语显示法国和挪威国名。下图显示了翻译后的国名在编辑"ezcountry"数据类型时的显示效果。

EzpublishDYY12.jpg

参考来源[ ]

EZ Publish使用手册导航

EZ Publish安装卸载

EZ Publish正常安装 | EZ Publish手动安装 | EZ Publish自动安装 | EZ Publish安装向导 | EZ Publish虚拟主机设置 | EZ Publish使用扩展 | EZ Publish的卸载

EZ Publish的使用

模板使用:

EZ Publish节点模板 | EZ Publish系统模板 | EZ Publish Pagelayout页头信息 | EZ Publish Pagelayout变量 | EZ Publish 模板注释 | EZ Publish 模板变量类型 | EZ Publish 模板变量用法 | EZ Publish 调查数组和对象 | EZ Publish 模板控制结构 | EZ Publish 函数与操作符 | EZ Publish URL处理 | EZ Publish 内容提取 | EZ Publish 模板重设系统
系统功能: EZ Publish 系统记帐 | EZ Publish 策略功能 | EZ Publish 多语言使用(一) | EZ Publish 多语言使用(二) | EZ Publish 集群的使用 | EZ Publish 安装包的使用 | EZ Publish Cronjob脚本的使用 | EZ Publish 多货币功能 | EZ Publish 通知功能
其他功能: EZ Publish 增值税(VAT)系统 | EZ Publish 改进的商品配送系统 | EZ Publish 多语言URL别名 | EZ Publish 登录后高级重定向 | EZ Publish 检索引擎 | EZ Publish WebDAV | EZ Publish 视图缓存

EZ Publish常见问题

EZ Publish 安装常见问题 | EZ Publish 使用常见问题

EZ Publish其他

EZ Publish内部结构 | EZ Publish内容与界面 | EZ Publish内容管理(一) | EZ Publish内容管理(二) | EZ Publish配置模型 | EZ Publish模块与视图 | EZ Publish URL 翻译 | EZ Publish 界面 | EZ Publish访问控制 | EZ Publish网络商店 | EZ Publish工作流