如果您的小组件含有可翻译的字符串,您将可通过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调用,使这些文本变得可通过字符串翻译界面进行翻译。 请注意,此方法仅适用于在主题中不能进行编辑并且固定的文本。