Ich habe gerade mit i18n angefangen, um meine Website in Node zu übersetzen. Ich habe ein wenig verloren, wie man Text übersetzt, der generiert wird, nachdem das DOM geladen und die Datei gerendert wurde (wie wenn ein Benutzer auf eine Schaltfläche klickt).i18n Übersetzung von dynamisch hinzugefügtem Text
Ich verstehe, dass i18n ist ein serverseitiges Modul und mein neuer Text generiert wird auf der Client-Seite.
Ich laufe auch Express, wenn das hilft.
Was ich tun möchte, ist in der Lage, Text zu übersetzen, der von Javascript auf der Client-Seite generiert wurde. Betrachten Sie eine beliebige Taste:
INDEX.JADE
form.feedback-r
a#submitclientiddd.button.button-primary #{i18n.__('Reply')}
// Other Jade Stuff Here
script(src='javascripts/clientside.js', type='text/javascript')
CLIENT SIDE JS
$("#posts").on("submit", "form.feedback-r", function(e) {
actbutton.html("Sending").addClass("feedback").removeClass('send_reply').prop("disabled", true);
});
... AJAX FUNCTION REQUEST AND ON SUCCESS ...
actbutton.html("Reply").addClass("success-text").prop("disabled", false);
SERVER SIDE JS
res.render('index', { title: 'Page Title', i18n: res});
- Erste Schaltfläche Text von Jade durch i18n gemacht mit (i18n .__ ('Antworten')) und ordnungsgemäß
- Nutzer klickt auf eine Schaltfläche
- Text geändert übersetzt über jQuery „Senden“, und nach einem AJAX-Request zurück auf „Antworten“
- Der Button Text länger zu lesen ist nicht übersetzt, da es dynamisch war erzeugt
Gibt es eine Möglichkeit, i18n auf der Client-Seite zu verwenden, um dieses Problem zu lösen? Im Idealfall würde Ich mag nur diese Seite auf dem Client tun, aber es funktioniert nicht:
actbutton.html(i18n.__('Reply'));
Hallo Nate! Danke für Ihre Hilfe! Ich habe meine Frage aktualisiert, um ein besseres Beispiel für mein Problem zu geben. –
Sehr interessante Lösung! Das einzige Problem, das ich hier sehe, ist, dass ich nicht in der Lage wäre, "Senden" zu übersetzen (wie oben im Beispiel), da es nicht definiert wäre. –
Wenn ich es richtig aufgestellt, so etwas wie dies sollte für Sie arbeiten: in JADE Vorlage: '' Taste (Daten übersetzt-en = '# {t (' buttons.sending ')}') = t ('buttons.hello') '' erklären: # {t ('buttons.sending')} die Funktion t() bewerten Zeichenfolge von i18 Gebietsschema Datei mit # {} Sie es in der Vorlage enthalten. –