Ich habe einen sehr einfachen Weg gefunden, die Übersetzung meiner Google Chrome Extension zu implementieren gilt nur für .json
, css
und js
Dateien.
Aber wie kann ich meinen html
Inhalt lokalisieren, zB im Popup oder in einem Optionsfenster?
Wie RobW in einem Kommentar bemerkt hat, eine Feature-Anfrage zum Hinzufügen von i18n-Unterstützung in HTML, das denselben Mechanismus verwendet, wurde erstellt, wurde jedoch aufgrund von Leistungs- und Sicherheitsbedenken zurückgewiesen. Daher können Sie nicht den gleichen Ansatz verwenden.
Das Problem erwähnt eine mögliche Problemumgehung: separate HTML-Seiten pro Sprache zu haben und zwischen ihnen im Manifest zu wechseln:
%Vor%Aber wenn das kein geeigneter Ansatz ist, besteht die einzige Möglichkeit darin, die Seite dynamisch über JavaScript zu übersetzen. Sie erwähnen eine Lösung, die einfachste Methode, indem Sie einfach nur die zu übersetzenden Elemente markieren mit IDs und ersetzen sie beim Laden der Seite.
Sie können auch komplexere Tools wie webL10n parallel zum Ansatz von Chrome einsetzen. Beachten Sie, dass Sie Chrome wahrscheinlich nur minimal implementieren sollten, damit Web Store weiß, dass das Element mehrere Sprachen unterstützt.
Was Sie tun würden, ist das.
Erstens, verwenden Sie in Ihrem HTML-Code dieselbe Syntax wie Chrome sonst wo. Dein Basis popup.html
wird also sein:
Stellen Sie dann die übliche Übersetzung in _locales\en\messages.json
:
Und schließlich wird Ihre popup.js
die tatsächliche Lokalisierung durchführen:
Aufbau von Ahmdos Antwort. Verwenden Sie ein Datenattribut, um ein fest codiertes Fallback zu ermöglichen.
%Vor% Stellen Sie dann die übliche Übersetzung in _locales\en\messages.json
:
Und schließlich wird Ihre localize.js
die tatsächliche Lokalisierung durchführen:
Das hartcodierte Fallback verhindert, dass die i18n-Tags sichtbar sind, während JavaScript die Ersetzungen durchführt. Hard-Coding scheint die Idee der Internationalisierung zu negieren, aber bis Chrome i18n direkt in HTML unterstützt, müssen wir JavaScript verwenden.
Eine Möglichkeit, Ihren Inhalt in Popup-HTML zu lokalisieren, besteht darin, ihn von javascript onLoad zu holen. Speichern Sie die Zeichenfolgen im _locales-Ordner unter verschiedenen von Ihnen unterstützten Sprachen wie hier hier und führen Sie chrome.i18n.getMessage ("messagename "), um die Variablenstrings zu holen und zu laden und sie mit javascript / jquery onLoad für jedes html-Element aus Ihrer background.js oder was auch immer Sie laden, bevor Ihre HTML-Seiten geladen werden.
Eine andere Problemumgehung - Sie können die Inhalts -Eigenschaft in css mit __MSG_myText
inside verwenden .
Tags und Links javascript html google-chrome google-chrome-extension internationalization