FAQ(常见问题解答)
激活时出现致命错误
对我们而言,幸运的是,WordPress已经预料到事情会有意外,并随附供调试工具以显示出现的问题。 请查看调试WPML页面,了解如何使用不同的调试资源以及何处报告问题。
Read more »为什么字符串翻译不显示?
要使字符串翻译起作用,您的主题(和插件)必须让文本通过翻译调用。 要了解如何将文本包含于GetText调用中,请参阅此常见问题解答,以便WPML可以翻译它们。
Read more »使用WPML是否有任何限制?
WPML是根据GPL许可使用的。这意味着您可以随意处理其代码。 只要您喜欢,您可以在任意多的网站上任意使用它,甚至修改其代码。
Read more »标签: 59
安装后内容丢失
当您激活WPML时,它将语言属性添加到所有的现有内容。 如果激活过程被中断,因为没有语言,一些内容可能会丢失。阅读此常见问题解答,了解如何重复初始化过程并再次显示您的所有内容。
Read more »
使用字符串翻译
如果您的小组件含有可翻译的字符串,您将可通过WPML编辑译文,但无法保证在网站上显示译文。 方法 1) 使用WordPress的过滤器 WPML使用标准的WordPress过滤器,并翻译您筛选的内容。 默认情况下,所有标准的WordPress小组件都应用过滤器。 当您创建自己的小组件时,您需要确保发生同样的情况。 例如,要将过滤器应用到小组件的标题,请使用这个: $wtitle = apply_filters(‘widget_title’, $wtitle); WPML连接到apply_filters调用,将使这个字符串变得可通过字符串翻译页面翻译。 方法 2) 手动注册字符串 或者,您可以手动使用WPML的字符串翻译功能。 您可以注册字符串进行翻译,然后在显示时查找其译文。 要注册字符串,请使用 icl_register_string 调用。 icl_register_string($context, $name, $value) $context – 插件的名称,使用人们可辨识的格式 $name –字符串的名称,帮助用户(或译员)了解正在翻译的内容。 $value – 需要翻译的字符串。 然后,当您显示文本时,请使用 icl_t 以同时显示译文: icl_t($context, $name, $value) 方法 3) 对硬编码字符串使用gettext 上述两个方法最适合动态生成的文本。 用户通过WordPress的管理面板可以编辑这些文本。 如果您有硬编码在PHP中的静态文本,您可以使用gettext调用,如: <?php _(‘Hello world’,'cool_theme’); ?> WPML挂钩到gettext调用,使这些文本变得可通过字符串翻译界面进行翻译。 请注意,此方法仅适用于在主题中不能进行编辑并且固定的文本。
Read more »
文本显示为 ???????
如果您网站上的非英文字符显示为问号,大多数情况是您数据库的字符编码不是UTF – 8。 如果您正在使用PHPMyAdmin,您的wp_posts表的结构应当如下显示: 如果您看到一个不同的collation值,这意味着字符编码是错的。这将导致无法正确显示文本,因为浏览器不知道如何显示非英文字符。 修复方法很简单。 您只需运行ALTER语句,该语句将应用到您的所有数据,将其从当前编码更改为UTF-8。执行此操作的简单方法是使用Convert WP Database to UTF-8插件。 此插件运行下面的SQL语句: ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ALTER TABLE $table CHANGE $field_name $field_name $field_type CHARACTER SET utf8 COLLATE utf8_bin 正如您可能想到的,执行此操作之前最好备份您的数据库。 最后,为确保您以后始终使用UTF- 8,请编辑您的 wp-config.php 文件,正确设置字符集定义。 应当如下显示: /** Database Charset to use in creating database tables. */ define(‘DB_CHARSET’, ‘utf8′);
Read more »语言位于不同域的服务器设置
WPML可处理来自不同域或子域的不同语言。 为了使之工作,需要在您的Web服务器上进行一些设置。 我们将首先谈论其工作原理,让您了解如何在自己的服务器上进行设置。 当收到请求时,会发生以下情况: DNS将网站的托管位置告诉浏览器。 Web服务器获取请求,并决定让哪个虚拟主机应答。 虚拟主机运行WordPress和WPML。WPML告诉WordPress为每种语言返回哪个页面。 要使位于不同域的语言起作用,所有语言都需要指向安装的同一个WordPress。 您需要设置DNS和Apache配置以做到这一点。 如果您发现自己正在编辑.htaccess,试图将来自某个域的请求重定向到其他域,那么您做错了。 因为只安装了一个WordPress,所以没有什么内容需要重定向。 1) 设置DNS 您需要为不同的语言注册所有域或子域。 您如何执行此操作在很大程度上取决于您的主机托管控制面板,但最终的结果总是相同的。 所有域必须转到同一个Web服务器。 2) 设置Web服务器 在我们的示例中,我们将使用Apache,并解释配置文件看起来是怎样的。 您的服务器可能有一个基于Apache的控制面板,它为Apache的配置文件增加了漂亮的图形控制。 如果您无法确定如何使用控制面板实施以下操作,您可以从这里复制示例并询问您的托管服务提供商。 最简单的方法是对所有域使用单一的VirtualHost条目,使用ServerAlias指令让Apache以同一虚拟主机应答不同的域。 例如: <VirtualHost *> DocumentRoot /your_wp_install_directory/wordpress ServerName www.english-domain.com ServerAlias www.french-domain.fr … your other stuff here … </VirtualHost> 这告诉Apache,安装了一个WordPress应答来自www.english-domain.com和www.french-domain.fr的请求。那些完全不同的域或子域没关系。 如果您不知道如何在虚拟主机文件中设置ServerAlias(也许是因为您无法直接访问它),你可以设置两个 VirtualHost 部分,这两个部分都指向完全相同的DocumentRoot(WordPress的安装路径),但带有不同的ServerName值。 您甚至可以不用WPML进行此设置(推荐)。 转到这两个域,确定您可以看到您的WordPress网站。 注:许多共享的主机托管服务提供商不会让您直接编辑Apache的配置文件。 在此情况下,您可以尝试创建指向同一物理WordPress安装的cPanel附加域。 3) 告诉WPML您在域中使用不同的语言 一旦此设置起作用,您可以告诉WPML用它来确定语言。 转到WPML->语言。在那里,为语言选择“各语言使用不同的域”。WPML将向您询问每个语言的域。请输入、验证并保存。 WPML在语言字段中设置的默认值为带有区域名称的子域。您可以用您的实际域名覆盖它。
Read more »如何优化MySQL查询
如果译文页面的显示比原文页面要慢,您有几件事情可以做。 首先,一定要检查问题的起因。 我们使用调试查询插件检查数据库访问和PHP处理。 当您看到异常大量的查询时,请检查下列可能起因。 字符串翻译跟踪 WPML让您查看可翻译字符串出自何处。 这是一个强大的功能,但也很占资源。 转到WPML->字符串翻译,并确保没有选中“跟踪字符串在网站上的出现位置”。 此功能将导致SQL查询您网站中的每个GetText字符串。 只有当您以管理员身份登录时才会进行这些查询。 自动ID调整 WPML可以将硬编码的ID自动转换到当前语言。 您可以通过WPML->语言->使主题多语化来控制这个。 如果选中“为多语功能调整ID”,一旦主题尝试加载带有特定ID的项目时,WPML将执行SQL查询。 这往往是必需的,但您可以自己优化。 您可以禁用此选项并使用icl_object_id和WPML API的其他函数,将您的主题变成多语化。
Read more »
语言在不同目录中的服务器设置
当您启用“不同语言使用不同目录”这个功能时,就是让WPML将译文安排在看起来不同的虚拟目录中。例如: www.example.com www.example.com/es/ www.example.com/ja/ 为了使之起作用,必须启用Apache的重写模块,站点需要使用一个“巧妙”的永久结构(例如,不同于默认的永久链接的任何东西)。 然后,转到WPML->语言,并选择“不同语言在不同目录中”。 常见错误 确保您没有进行以下任何操作。 1) 在您的网站中创建真实的目录 您无需在您安装的WordPress中创建真实的目录,或安装WordPress几次。 实际上,如果您这样做,不同语言在不同目录中将无法正常工作。 这些目录是虚拟的。 与任何物理路径不同,它们并不存在。 2) 重定向到其他目录 类似于创建真实的目录,一些人会编辑.htaccess文件以添加重定向规则。 您不应这样做。 WPML动态创建其自己的重定向规则。
Read more »标签: 58
翻译wp_options中的条目
许多主题和插件将文本保存在 wp_options 表中。 WPML使它们可通过字符串翻译模块进行翻译。 现在我们就进行说明。 假设您的代码是这样的: <?php echo(get_option(“footer_text”)) ?> 要翻译此文本,您无需编辑任何代码。 您需要启用WPML的字符串翻译模块(在多语CMS程序包中提供)。 选择要翻译的wp_options条目 要告诉WPML此字符串需要翻译。 创建一个语言配置文件,将它保存在您的主题/插件的根目录。 该文件声明哪些wp_options条目、自定义类型和自定义字段是多语言的。 翻译 一旦选择了要翻译的字符串,转到WPML->字符串翻译。您可以使用上下文过滤器以只找到相关的字符串。 务必点击您已翻译的每个字符串旁边的翻译完成复选框。只有完成的翻译才会显示在公开页面上。 此外请注意,当原文发生变化时,译文的状态会自动恢复为未完成。您可以使用字符串翻译屏幕中的显示过滤器来选择需要翻译的字符串。
Read more »