Перевод строки Javascript для wordpress

Я использую плагин монитора кампании, который не готов к 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' );

Но я не понимаю, что я должен заполнить «какой-то дескриптор» и каким должно быть имя объекта? Или есть какой-нибудь простой способ перевести это?

Может ли кто-нибудь объяснить, как я могу перевести этот текст ошибки?

Заранее спасибо.


person Zaheen    schedule 18.09.2017    source источник


Ответы (1)


'some_handle' — это просто имя, которое вы используете для регистрации своего скрипта через WordPress, может быть любым, просто убедитесь, что дескриптор соответствует правилам, таким как отсутствие пробела и т. д.

'object_name' – это имя переменной JavaScript, которое будет объявлено как объект перевода.

e.g.

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

Если имя вашего объекта 'translation_obj', вы сможете получить translation_obj.a в клиентском JavaScript.

Перевод выполняется WordPress и его многоязычным плагином, который вы выбираете. Подробнее об интернационализации: https://codex.wordpress.org/I18n_for_WordPress_Developers.

person TurtleTread    schedule 18.09.2017
comment
Я попробовал то, что вы сказали, это отображается в переводе строки, но не переводит текст :( Есть ли какая-либо внешняя функция jquery или javascript, которая может переводить в соответствии с языком? - person Zaheen; 19.09.2017
comment
Нет, перевод не делается автоматически (мы желаем). Вам необходимо установить многоязычные плагины, в которых вам нужно самостоятельно выполнять переводы строк. WPML wpml.org — такой многоязычный плагин. Но, честно говоря, я настоятельно рекомендую просто написать свой собственный код для обработки переводов, если переводы минимальны. Возможно, просто прочитайте файл массива языковых строк. WPML очень требователен к ресурсам и, на мой взгляд, довольно раздут. - person TurtleTread; 19.09.2017