Internationalisierung von HTML-Seiten für meine Google Chrome Extension

8

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?

    
c00000fd 23.08.2014, 22:42
quelle

5 Antworten

3

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.

    
Xan 13.08.2017, 16:25
quelle
22

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:

%Vor%

Stellen Sie dann die übliche Übersetzung in _locales\en\messages.json :

bereit %Vor%

Und schließlich wird Ihre popup.js die tatsächliche Lokalisierung durchführen:

%Vor%     
ahmd0 01.09.2014 19:38
quelle
6

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 :

bereit %Vor%

Und schließlich wird Ihre localize.js die tatsächliche Lokalisierung durchführen:

%Vor%

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.

    
Dan Jones 01.10.2016 19:41
quelle
0

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.

    
Lavixu 24.08.2014 15:34
quelle
0

Eine andere Problemumgehung - Sie können die Inhalts -Eigenschaft in css mit __MSG_myText inside verwenden .

    
Vitaly Zdanevich 07.02.2018 14:09
quelle