Google translate сохраняет языковые настройки в файл cookie

#javascript #cookies #mootools #google-translate

#javascript #файлы cookie #mootools #google-translate

Вопрос:

Можно ли будет сохранить настройки google.translate в cookie? Например, я меняю свой язык с «английского» на «испанский» и перехожу на другие страницы (например. О моем сайте, и он по-прежнему сохранит свой язык «испанский». Мне нужна помощь в том, как это реализовать, я знаю, что это возможно, я просто не знаю, как это правильно реализовать.

Здесь(http://jsbin.com/esiga3 ) код, над которым я сейчас работаю». Мне нужно, чтобы он определял, установлен ли файл cookie для этого языка, и если нет, он создаст файл cookie для настройки языка.

Я думаю, что можно временно установить языковые настройки api Google translate на стороне пользователя, используя какой-либо javascript или cookie.

Спасибо!

Ответ №1:

с несколькими улучшениями, чтобы избежать плохих переводов и т.д. Или проблем с переводом с английского на английский. http://jsfiddle.net/F248G/3

 // Set the original/default language
var lang = "en";
var currentClass = "currentLang";

// Load the language lib
google.load("language", 1);

// When the DOM is ready....
window.addEvent("domready", function() {
    // Retrieve the DIV to be translated.
    var translateDiv = document.id("languageBlock");
    // Define a function to switch from the currentlanguage to another
    var callback = function(result) {
        if (result.translation) {
            translateDiv.set("html", result.translation);
        }
    };

    // is language set? if so, auto translate
    (function() {
        // to avoid "lost in translation" on stacking up, i.e.
        // translate from english to spanish, then from translated spanish back to english or others
        // with errors, always use english as base language.

        if (!translateDiv.retrieve("orig_en")) {
            translateDiv.store("orig_en", translateDiv.get("html"));
        }

        // check cookie and if so, translate and set new base language
        var toLang = Cookie.read("googleLang");
        if (toLang amp;amp; toLang != lang) {
            google.language.translate(translateDiv.retrieve("orig_en"), lang, toLang, callback);
            lang = toLang;
        }
    })();

    // Add a click listener to update the DIV
    $$("#languages a").addEvent("click", function(e) {
        // Stop the event
        if (e) e.stop();
        // Get the "to" language
        var toLang = this.get("rel");

        if (toLang === lang)
            return;

        // Set the translation into motion
        google.language.translate(translateDiv.get("html"), lang, toLang, callback);
        // Set the new language
        lang = toLang;
        // Add class to current
        this.getSiblings().removeClass(currentClass);
        this.addClass(currentClass);
        // ... and add here the code to save the last choice
        Cookie.write("googleLang", toLang, {
            path: "/"
        });
    });
});
  

конечно, вы могли бы просто посмотреть на http://mootools.net/docs/core/Utilities/Cookie

Комментарии:

1. нет. обновленный ответ. очевидно, что вам нужно больше, чем фрагменты… tbh Я переписываю это только потому, что думаю, что смогу сам найти применение этому фрагменту кода в качестве основы для некоторой многоязычной работы.

2. Ты потрясающий чувак, большое спасибо за помощь! Я рылся в Интернете, чтобы найти какую-нибудь хорошую ссылку на эту проблему, но я не могу найти ни одной хорошей. И да, ваш фрагмент был бы действительно удобен 🙂 Еще раз спасибо.