【问题标题】:Javascript string translation for wordpresswordpress 的 Javascript 字符串翻译
【发布时间】:2017-09-19 05:20:12
【问题描述】:

我正在使用未准备好 WPML 的活动监视器插件,我需要在 javascript 文件中翻译错误消息。这是 app.js 文件中的代码块

function cmApp_validateForm()
{

    var signupContainerElem=jQuery("#cmApp_signupContainer");

    var errorElem = jQuery("#cmApp_emailError");
    var errorElemDOB = jQuery("#cmApp_dobError");
    var formElem = signupContainerElem.find("form");
    var processingMsgElem = signupContainerElem.find("div.cmApp_processingMsg");
    var successMsgElem = signupContainerElem.find("div.cmApp_successMsg");


    var errorMsgAr=[];
    var errorFieldSelectorAr=[];

    var errorMsg="";

    formElem.hide();
    errorElem.html("").hide();
    errorElemDOB.html("").hide();
    successMsgElem.hide();

    cmApp_showProcessing();

    signupContainerElem.find("input,select").css("outline","none");

    // validate the email field. make sure it is not empty and that it is valid. if invalid, add to the error array and outline the field in red
    var email = jQuery("#cmApp_signupEmail").val();

    if (email.length < 1) {
        errorMsg = "Geef een geldig e-mailadres in";
        errorMsgAr[errorMsgAr.length]="Please provide correct email";
        jQuery("#cmApp_signupEmail").focus().css("border" , "2px solid #D95350");
    }
    else {
        if (!cmApp_validateEmail(email)) {
            errorMsgAr[errorMsgAr.length]="This is an invalid email";
            errorFieldSelectorAr[errorFieldSelectorAr.length]="#cmApp_signupEmail";
            jQuery("#cmApp_signupEmail").focus().css("border","2px solid #D95350");
        }
    },

我尝试使用此示例进行翻译,以使其在 sting 翻译中可用。

// Register the script
wp_register_script( 'some_handle', 'path/to/myscript.js' );

// Localize the script with new data
$translation_array = array(
    'some_string' => __( 'Some string to translate', 'plugin-domain' ),
    'a_value' => '10'
);
wp_localize_script( 'some_handle', 'object_name', $translation_array );

// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );

但我不明白我应该填写什么“一些句柄”以及对象名应该是什么?或者有什么简单的翻译方法吗?

谁能解释我如何翻译这些错误文本?

提前谢谢你。

【问题讨论】:

    标签: javascript wordpress wpml


    【解决方案1】:

    'some_handle' 只是您用于通过 WordPress 注册脚本的名称,可以是任何名称,只要确保句柄遵循无空格等规则即可。

    'object_name' 是要声明为翻译对象的 JavaScript 变量名。

    例如

    $translate_array['a'] = __('string_a'); 
    

    如果您的对象名称是“translation_obj”,您将能够在客户端 JavaScript 中检索 translation_obj.a

    翻译由 WordPress 和您选择的多语言插件完成。阅读有关国际化的更多信息:https://codex.wordpress.org/I18n_for_WordPress_Developers

    【讨论】:

    • 我试过你说的,它显示在字符串翻译中但没有翻译文本:( 有没有可以根据语言翻译的外部jquery或javascript函数?
    • 不,翻译不是自动完成的(我们希望)。您需要安装多语言插件,您需要在其中自己进行字符串翻译。 WPML wpml.org 就是这样一个多语言插件。但老实说,如果翻译很少,我强烈建议您编写自己的自定义代码来处理翻译。也许只是读取语言字符串数组文件。在我看来,WPML 资源非常繁重,而且相当臃肿。
    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多