我设法将我的客户网站本地化为西班牙语到法语:
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让我感到困惑。
任何建议表示赞赏。
答案 0 :(得分:2)
你不需要任何这些。请查看以下链接,特别是“使用其他语言创建联系表单”
部分答案 1 :(得分:1)
我认为您的问题的解决方案在于能够在Contact Form 7模板中运行PHP。您可以通过编写自己的短代码然后将其添加到CF7中来完成此操作。
首先,设置shortcode,以便在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');
(免责声明:我没有测试过这个!)
然后您可以使用plugin like this one,以便可以将短代码添加到CF7模板区域。使用此插件,您必须定义要用作“键”的代码,例如:
e_text key='e_text'
然后您应该能够在CF7表单模板和电子邮件模板中使用e_text短代码。
答案 2 :(得分:1)
感谢JunkMyFunk的建议。我试图实现这个,但遇到了一些问题。
我最终使用以下方法找到了解决方法:
使用以下条件语句显示每种语言的正确联系表单。
<?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"]');
}
?>
感谢您的帮助 -
答案 3 :(得分:0)
这不起作用的原因是因为从v4.4.1开始CF7插件再次执行not include language语言环境,这些都是在worpdress翻译GlotPress中维护的。因此,您需要手动安装区域设置,为您要为其创建表单的每种语言都安装一个区域设置。然后,您可以在信息中心网址中添加locale
属性,以新语言创建表单,例如德语区域设置de_DE,
http://<your-domain>/wp-admin/admin.php?page=wpcf7-new&locale=de_DE
或者,您可以使用CF7 PolyLang module,它允许您使用PolyLang插件(recommended by WP)管理不同语言的CF7表单。 PolyLang是WPML的替代品,