Wordpress 如何定位联系人表单7中的字段标签

Wordpress 如何定位联系人表单7中的字段标签,wordpress,localization,contact-form-7,Wordpress,Localization,Contact Form 7,我已成功将我的客户网站从西班牙语本地化为法语: …使用WPML插件和Gettext框架的组合。我唯一没有成功翻译的是联系表itslef上的标签: <p>Nombre<br /> <span class="wpcf7-form-control-wrap your-name"><input type="text" name="your-name" value="" class="wpcf7-text wpcf7-validates-as-requir

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

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

<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

电子邮件

Teléfono
…所以我要翻译的文本是“Nombre”-法语

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

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

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


…但这不起作用

(我通过admin将这些内容添加到wordpress中,而不是直接添加到.php文件中)

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


非常感谢您的建议。

我认为您的问题的解决方案在于能够在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');
e_text key='e_text'
(免责声明:我还没有测试过!)

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

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');
e_text key='e_text'

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

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

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

  • 安装
  • 为WP CF7中的每种语言创建一份联系表
  • 使用以下条件语句显示每种语言的正确联系方式

    <?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"]');   
    } 
    ?>
    

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


    这不起作用的原因是,从v4.4.1开始,CF7插件不再使用locale,而是将其保存在WorpAddress翻译中。因此,您需要手动安装区域设置,每个语言对应一个要为其创建表单的语言。然后,您可以通过在仪表板url中添加
    locale
    属性,以新语言创建表单,例如德语locale de_de

    
    http:///wp-admin/admin.php?page=wpcf7-新建(&locale=de_de)
    

    或者,您可以使用,它允许您使用插件()管理不同语言的CF7表单。PolyLang是WPML的替代品

  • 安装PolyLang插件并激活
  • 在仪表板设置->语言部分,将语言添加到多段语言设置中。对于您添加的每种语言,polylang都将以每种语言管理内容。您网站的访问者可以选择要查看的语言内容,或根据您选择的设置自动查看浏览器默认语言
  • 接下来,安装并激活CF7模块。它将查找您在polylang设置中设置的语言,并下载正确的CF7语言环境。它还将使管理这些语文的表格成为可能

  • 虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-我很抱歉,但在这种情况下,你也应该删除这个问题的第一个答案,它也只是一个链接,没有演示。不过,我将在我的答案中再添加一点,这样我们就不会在这里陷入无限循环。有一点建议是使用常量变量ICL_LANGUAGE_代码,而不是get_bloginfo('LANGUAGE')。ICL_语言_代码包含当前语言的快捷键,由WPML自己管理。因此,对于英语,它将返回“en”。