EZ Publish/EZ Publish 多语言使用(二)
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
多语言对象[ ]
以下步骤描述了如何创建多语言对象,使对象总是可用,设置对象的初始化/主语言等等。
- 创建新对象
管理界面允许用任何语言创建对象。在“在此创建”界面中从语言下拉框中选择语言作为对象的初始化/主语言然后点击“在此创建”按钮(参阅下图)。
如果需要的语言不在下拉框中,参阅如下步骤:
1. 在翻译语言列表页面添加需要使用的语言。如果仍然没有所需要的语言,参阅“管理翻译语言”小节。
2. 确保管理界面站点入口的"site.ini.append.php"中包含如下配置:
ShowUntranslatedObjects=enabled
- 改变初始化/主语言
如果对象存在于多种语言,可以选择其中一种作为初始化/主语言。在“翻译窗口”中用单选按钮选择语言然后点击“设置为主语言”按钮。
- 改变对象可用性
要令对象总是可用,在对象查看视图中的翻译窗口勾选“如果没有优先翻译则使用主语言”复选框然后点击“更新”按钮。
- 类的默认对象可用性
可以在类级别设置默认对象可用性。默认情况下,可用性对“文件夹”,“用户”,“用户组”,“图片”,“文件”等类启用,因而这些类的新对象会被默认设置为“总是可用”。注意,无论类的设置如何,这一属性都可以为每个对象单独重新配置。下例演示了如何做到。
例
假设需要创建一些英文文章,但是需要它们在任何站点入口都可以显示,无论站点入口使用何种语言。可以对“文章”类启用“总是可用”属性,从而每个新创建的文章默认都成为“总是可用”的对象。下图揭示了如何做到:
1. 访问管理界面中的“设置”标签,点击左侧的“类”并选择"Content"类组。应该会看到所有指派到这个组中的类。如下图。
找到“文章”类,然后点击类右侧的编辑图标。系统会显示类编辑界面。
2. 勾选“默认对象可用性”复选框然后点击“确定”按钮保存修改
注意:这一修改不会影响已经存在的对象。只有新文章会受到影响。
使用翻译[ ]
可以用翻译窗口查看对象存在的语言。以下步骤揭示了您可以如何创建,编辑和删除对象翻译。
- 编辑翻译
所有内容的编辑都是通过对象编辑界面完成的。在编辑或创建对象时,这个界面会自动显示。如果一个对象存在于多种语言,可以选择编辑的语言。以下步骤揭示了可以如何用不同方法编辑现存翻译。
- 用翻译窗口
1. 找到要编辑的对象,换言之,确保对象正在被查看。
2. 启用对象的翻译窗口。点击语言右侧的编辑按钮。系统会显示编辑界面。
- 使用“子项目”窗口
1. 找到对象的父节点。换言之,确保对象的父节点在被查看。
2. 在“子项目”窗口中找到要编辑的对象。点击编辑图标。系统会显示语言选择界面。
3. 在“现存语言”框架中用单选按钮选择要编辑的语言然后点击“编辑”按钮。系统会显示编辑界面
- 语言选择界面
语言选择界面(全视图或精简视图)在你需要选择编辑/创建语言时显示。下图演示了一个存在于英文和法文的文件夹的语言选择界面。
语言选择单选按钮被分为两组。“现存语言”组包含了对象已经存在的语言。这个列表允许选杂编辑已经存在的语言。“新语言”组包含没有被用过的语言。后者允许将对象翻译成还不存在的语言。添加新翻译的时候,可以选择翻译源。如果选择"None"以外的某种语言,编辑界面会包含翻译界面,而不是显示为标准编辑界面。用内容树和上下文菜单
1. 通过左侧的内容树定位需要编辑的对象
2. 点击对象图标(鼠标左键)来激活上下文菜单
3. 访问“编辑”子菜单,然后选择要编辑的语言。如下图。
上图演示了一个存在于英文和法文的文件夹的上下文菜单。选择语言后,系统会显示编辑界面。
- 使用“编辑”按钮
1. 在管理界面中定位要编辑的对象。换言之,确保对象在被查看。
2. 在预览窗口中从下拉框中选择需要编辑的语言然后点击“编辑”按钮(参阅下图)。
系统会显示编辑界面。
- 使用书签
1. 确保书签正被显示(用"+"符号打开书签窗口)。
2. 定位需要编辑的对象然后点击它的图标激活上下文菜单。
3. 访问“在...编辑”子菜单然后选择需要编辑的语言。系统会显示编辑界面。
- 编辑多语言
系统其实可以允许编辑同一个对象的多个版本。一个草稿只包含一种语言的对象属性数据。当草稿被发布时,系统复制早期版本中的翻译到发布版本中。下图演示了当用户编辑一个有三种语言的文章时版本窗口(这个界面可以通过点击“我的帐号”标签里左侧的“我的草稿”来显示)的外观。
同一个对象的不同翻译可以被分别创建和编辑并被不同编辑并行修改(一个用户同一时间只可以编辑同一个对象的一个版本和一个翻译)。
- 添加新翻译
可以在管理界面中将对象翻译为任何翻译语言。以下步骤揭示了如何用不同方法翻译对象。使用“子项目”窗口
1. 在管理界面中定位到对象的父节点。
2. 查看“子项目”窗口然后找到要编辑的对象。点击对象的编辑按钮。语言选择界面会被显示。在“新语言”中选择语言,然后点击“编辑”按钮。系统会显示编辑界面。
- 使用节点树和上下文菜单
1. 在左侧节点树中定位要编辑的对象
2. 点击对象图标激活上下文菜单
3. 访问“编辑”子菜单然后选择“其他语言”。系统会显示精简版语言选择界面。它包含对象不存在的一组语言(参与下图)和一组翻译源。
选择需要编辑的语言。同时可以选择一种现存语言作为翻译源。点击“编辑”按钮后,系统会显示编辑界面。
- 使用“编辑”按钮
1. 在管理界面中定位需要编辑的对象。
2. 在预览窗口中从下拉框中选择“另一种语言”然后点击“编辑”按钮。系统会显示语言选择界面的精简版。
选择需要的语言然后点击“编辑”按钮。系统会显示编辑界面。
- 使用书签
1. 确保书签被显示(使用"+"标志打开窗口)。
2. 定位需要编辑的对象然后点击它的图标激活上下文菜单。
3. 访问“在...编辑”子菜单然后选择“另一种语言”。系统会显示语言选择界面的精简版。选择需要的参数然后点击“编辑”按钮。系统会显示编辑界面。
数位算法[ ]
以下文字揭示了一些与数位算法相关的技术细节。这些算法被用于语言过滤与排序。
系统在"ezcontent_language"数据库表中保存了所有翻译语言的信息。语言由2 的指数标识。例如:他们的ID 为2,4,6,8,16,32 等等。(2^0)被用来“总是可用的”对象。当对象被标记为“总是可用”,即使对象的语言不在站点语言中("SiteLanguageList"数组),对象仍然会被显示。
"always_available"字段
"ezcontentclass"数据库表中有一个"always_available"字段(默认为0),它被用来控制是否将这个类的新对象设置为“总是可用”。如果某个类的这个字段的值为"1",则所有这个类的新对象都会被标记为“总是可用”。注意,之后这个标记可以在对象级别修改。类中的设置只会影响新对象的"总是可用”标记的 初始值。
"language_mask"字段
在"ezcontentobject"数据库表中保存关于对象的信息时,系统用一个特殊的数据类型的字段"language_mask"来对象最后被发布版本的语言。这个字段包含了对象所有语言ID 的和再加上"1",如果对象是永远可用的。当创建新对象时,则为初始化语言的ID 加上默认的"alwasy_available"的值(在类中指定)。
每次对象的语言配置被修改时,它的"language_mask"都会被更新。通常在添加或删除翻译的时候。
例
假设有两种翻译如下:
这允许内容对象使用以下可能的"language_mask": Language
在"ezcontentobject_version"数据库表中保存对象版本的信息时,"language_mask"字段包含语言ID 的和。加上"alwasy_available"的值。
"initial_language_id"字段
"ezcontentobject"数据库表中有一个"initial_language_id"字段,它用来保存对象的初始化语言ID。当在"ezcontentobject_version"数据库表中保存关于对象版本的信息时,系统记录将当前版本的语言ID 保存在"initial_language_id"字段。
"language_id"字段
当在"ezcontentobject_attribute“数据库表中保存对象属性的信息时,系统在"language_code"字段中保存语言代码(例如:"eng-GB"),而"language_id"则用来保存语言ID。
基于语言的权限[ ]
"content"模块的"create“和"edit"函数支持语言级别的权限。例如,可以配置系统来允许一组用户用英文和挪威文创建和翻译对象,而另一组用户之被允许将现存的内容翻译成法文。"read"函数支持语言级别的权限,因而对象的所有翻译都可以被有"read"权限的用户访问。
content/create
"create"函数的“语言”限制控制当对象被创建时,哪些语言可以被使用。下图演示了策略编辑界面。本例中,只允许在某些分区中创建法语文章。
content/edit
"edit"函数的“语言”限制控制可以用哪几种语言编辑对象。它也控制哪些翻译可以被添加到对象中。下图演示了一个策略编辑界面。本例中,只允许编辑法语内容(文章)或添加法语的翻译到现存文章中。
与"content/read"函数组合(不支持语言限制),本例中的策略允许任何文章被从任何语言翻译成法语。
下图演示了这种组合。注意,只负责翻译的用户不需要访问"create"函数。