4

我设法将我的客户网站从西班牙语本地化为法语:

http://www.microcementoeuropeo.com

...结合使用 WPML 插件和 Gettext 框架。我唯一没有翻译成功的是联系表格上的标签:

<p>Nombre<br />
<span class="wpcf7-form-control-wrap your-name"><input type="text" name="your-name" value=""    class="wpcf7-text wpcf7-validates-as-required" size="40" /></span> </p>
<p>Email<br />
<span class="wpcf7-form-control-wrap your-email"><input type="text" name="your-email" value="" class="wpcf7-text wpcf7-validates-as-email wpcf7-validates-as-required" size="40" /></span> </p>
<p>Teléfono<br />

...所以我要翻译的文本将是“Nombre” - 法语。

我尝试了适用于其他硬编码领域的 gettext 方法:

 <p><?php _e('Nombre', theme_domain);?><br />

 <p><?php __('Nombre', theme_domain);?><br />

...但这不起作用。

(我通过管理员将这些添加到 wordpress 中,而不是直接添加到 .php 文件中)。

我熟悉创建 .po / .mo 文件,并且知道如何本地化普通的硬编码文本 - 但联系表 7 让我感到困惑。

任何建议表示赞赏。

4

4 回答 4

3

你不需要这些。检查下面的链接,特别是“创建不同语言的联系表”部分

您的语言的联系表格

于 2013-11-28T02:33:54.380 回答
1

我认为您的问题的解决方案在于能够在 Contact Form 7 模板中运行 PHP。您可以通过编写自己的短代码然后将其添加到 CF7 中来做到这一点。

首先,设置一个简码,以便您的翻译功能在 WP 内容区域中可用。就像是:

function e_text_shortcode( $atts ) {
    extract( shortcode_atts( array(
        'text' => 'something',
        'theme_domain' => 'something else',
    ), $atts ) );

    return _e($text, $theme_domain);
}
add_shortcode('e_text', 'e_text_shortcode');

(免责声明:我没有测试过这个!)

然后你可以使用一个像这样的插件,这样你就可以将短代码添加到 CF7 模板区域。使用此插件,您必须定义要用作“键”的代码,例如:

e_text key='e_text'

然后您应该能够在 CF7 表单模板和电子邮件模板中使用 e_text 短代码。

于 2012-02-06T19:57:18.410 回答
1

感谢 JunkMyFunk 的建议。我试图实现这一点,但遇到了一些问题。

我最终找到了使用以下方法的解决方法:

  1. 安装WPML 插件。
  2. 在 WP CF7 中为每种语言创建一个联系表
  3. 使用以下条件语句显示每种语言的正确联系表。

    <?php if(get_bloginfo('language')=='es-ES') 
    { 
    echo do_shortcode('[contact-form 1 "Contact form 1"]'); 
    } else {   
    echo do_shortcode('[contact-form 2 "Contact_form_2"]');   
    } 
    ?>
    

仍然感谢您的帮助-

于 2012-04-04T12:09:28.443 回答
1

这不起作用的原因是因为从 v4.4.1 开始,CF7 插件不再包含语言区域设置,而是在 worpdress 翻译GlotPress中维护。因此,您需要手动安装语言环境,为您要为其创建表单的每种语言安装一个语言环境。然后,您可以通过在仪表板 url 中添加属性来以新语言创建表单locale,例如对于德语语言环境 de_DE,

http://<your-domain>/wp-admin/admin.php?page=wpcf7-new&locale=de_DE

或者,您可以使用CF7 PolyLang 模块,该模块允许您使用PolyLang插件(由 WP 推荐)管理不同语言的 CF7 表单。PolyLang 是 WPML 的替代品,

  1. 安装 PolyLang 插件并激活。
  2. 在仪表板 Settings->Language 部分中,将语言添加到您的 polylang 设置中。您添加的每种语言,polylang 都会管理每种语言的内容。您网站的访问者将能够选择他们想要查看的语言内容,或者根据您选择的设置自动查看他们的浏览器默认语言。
  3. 接下来,安装 CF7 模块并激活它。它将查找您在 polylang 设置中设置的语言并下载正确的 CF7 语言环境。它还将支持以这些语言管理表格。
于 2016-05-06T08:57:50.070 回答