Add-In für Dateien im JSON-Format (JavaScript Object Notation)

JSON (JavaScript Object Notation) ist ein kompaktes Austauschformat. Das Add-In für JSON-Dateiformate ist ab Service Pack 8 (SP8) von SDL Passolo verfügbar.

Das mit SP8 eingeführte JSON-Add-In unterstützte zunächst nur RESJSON- und ARB-Dateiformate. Das Add-in für JSON-Dateiformate ist ab Passolo Service Pack 9 (SP9) verfügbar

JSON ist für Menschen einfach zu lesen und zu schreiben und für Maschinen einfach zu parsen (Analysieren von Datenstrukturen) und zu generieren.

Es basiert auf einer Untermenge der JavaScript-Programmiersprache, Standard ECMA-262, dritte Edition, Dezember 1999.

JSON ist ein Textformat, das komplett unabhängig von Programmiersprachen ist, aber vielen Konventionen folgt, die Programmierern aus der Familie der C-basierten Sprachen (inklusive C, C++, C#, Java, JavaScript, Perl, Python und vielen anderen) bekannt sind.

Diese Eigenschaften machen JSON zur idealen Sprache für den Datenaustausch. Weitere Informationen zum JSON-Format finden Sie unter

{

"menu":

{

"id": "fileId",

"value": "File",

"popup":

{

"menuItem":

[

{ "value": "New", "onclick": "CreateNewFile()"},

{ "value": "Open", "onclick": "OpenFile()"},

{ "value": "Close", "onclick": "CloseFile()"}

]

}

}

}

Der JSON-Dateiparser von Passolo unterstützt die Formate Windows JavaScript-Ressourcen (RESJSON) und Application Resource Bundle (ARB).

Parser für JSON-Dateien (JavaScript Object Notation)

Der JSON-Dateiparser ist der wichtigste Parser im JSON-Add-In. Er kann alle Texteinträge in JSON-Dateien parsen, sofern diese im korrekten Format vorliegen. Als Beispiel dient die folgende JSON-Struktur, die das Add-in näher beschreibt:


{

"Addin":

{

"product": "Passolo",

"name": "JSON Add-in",

"supportedParsers":

{

"parsers":

[

{

"name": "json", 

"description": "JavaScript Object Notation"

},

{

"name": "arb", 

"description": "Application Resource Bundle"

},

{

"name": "resjson", 

"description": "Windows JavaScript Resources"

}

]

}

}

}

Die Ressourcenansicht für die obige Datei sieht wie folgt aus:

Bearbeiten von JSON-Textressourcen:

C-artige Kommentare

Das JSON-Standardformat unterstützt keine C-artigen Kommentare. C-artige Kommentare in einer JSON-Datei machen die Datei ungültig. Passolo kann solche Kommentare jedoch unterstützen, solange sie korrekt geschrieben werden.

Stellen Sie sich folgendes Szenario vor: Ein englischsprachiger Entwickler möchte diese JSON-Datei ins Deutsche übersetzen. Er sendet diese JSON-Datei an einen Übersetzer, der aus dem Englischen ins Deutsche übersetzt, und hinterlässt in der Datei Entwicklerkommentare, damit der Übersetzer weiß, welcher Text nicht übersetzt werden.

Dazu verändert er die JSON-Datei ein wenig, indem er den jeweiligen Texten Kommentare hinzufügt.


{
"Addin":
{
"product": "Passolo",
"name": "JSON Add-in",
"supportedParsers":
{
"parsers":
[
{
"name": "json", 
// Please only translate this
"description": "JavaScript Object Notation"
},
{
"name": "arb", 
// Please only translate this
"description": "Application Resource Bundle"
},
{
"name": "resjson", 
// Please only translate this
"description": "Windows JavaScript Resources"
}
]
}
}
}

Die Kommentare, die der JSON-Datei hinzugefügt wurden, erscheinen nun in der Passolo-Textliste:

Ebenso weiß der Übersetzer nun, dass er nur bestimmte Texte übersetzen soll, wie unten gezeigt:

Die erzeugt Zieldatei wird wie folgt aussehen:


{
"Addin":
{
"product": "Passolo",
"name": "JSON Add-in",
"supportedParsers":
{
"parsers":
[
{
"name": "json", 
"description": "JavaScript Objekt Notenschrift"
},
{
"name": "arb", 
"description": "Anwendung Ressourcenpaket"
},
{
"name": "resjson", 
"description": "Windows-JavaScript-Ressourcen"
}
]
}
}
}

Bei Betrachtung der erzeugten Datei fällt neben den Text-Übersetzungen auf, dass die Kommentare gelöscht wurden, da sie vom JSON-Format nicht unterstützt werden und die Zieldatei gültig sein muss.

RESJSON-artige Kommentare

Neben C-artigen Kommentaren können in standardmäßigen JSON-Dateien auch RESJSON-artige Kommentare vorkommen. Passolo muss entsprechend eingerichtet werden, damit sie korrekt verarbeitet werden.

Der englischsprachige Entwickler möchte vielleicht Kommentare in einer JSON-Datei hinterlassen:

{
"addin": "JSON Add-in", 
"_addin.comment": "This is the add-in's name", 
"json_parser":
{
"name": "json",
"_name.comment": "This is the name of the parser",
"description": "JavaScript Object Notation",
"_description.comment": "This is the description of the parser"
},
"arb_parser":
{
"name": "arb",
"_name.comment": "This is the name of the parser",
"description": "Application Resource Bundle",
"_description.comment": "This is the description of the parser"
},
"resjson_parser":
{
"name": "resjson",
"_name.comment": "This is the name of the parser",
"description": "Windows JavaScript Resources",
"_description.comment": "This is the description of the parser"
}
}

Der Übersetzer sieht die Kommentare des Entwicklers in Passolo:

Wenn die Option Kommentare nicht in Zieldateien schreiben aktiviert ist, sieht die übersetzte Datei folgendermaßen aus:

{
"addin": "JSON Add-in", 
"json_parser":
{
"name": "json",
"_name.comment": "This is the name of the parser",
"description": "JavaScript Object Notation",
},
"arb_parser":
{
"name: "arb",
"description": "Application Resource Bundle",
},
"resjson_parser":
{
"name: "resjson",
"description": "Windows JavaScript Resources",
}
}

Parser für RESJSON-Dateien (Windows JavaScript Resources)

Falls das JSON-Add-In wie oben beschrieben aktiviert ist, kann Passolo RESJSON-Dateien (*.resjson) automatisch lesen und schreiben. RESJSON-Dateien sind Textdateien im UTF-8-Format. Sie wurden von Microsoft für Metro-Apps in Windows 8 eingeführt. Eine RESJSON-Datei wird im JSON-Format (JavaScript Object Notation) gespeichert und enthält Texte, die häufig für die Lokalisierung der App-Benutzeroberfläche verwendet werden. Entwickler erstellen meist verschiedene RESJSON-Dateien (z. B. resources.resjson) in Ordnern namens /en-US/, /fr-FR/, /ja-JP/ usw. Jede resources.resjson-Datei enthält lokalisierte Texte in der jeweiligen Sprache. Ein Texteintrag in einer RESJSON-Datei kann folgende Struktur aufweisen:

{

"greeting": "Hello",

"_greeting.comment": "A welcome greeting.",

"_greeting.source": "Hello"

}

Ressourcen in RESJSON-Dateien

Mehrere Texteinträge werden aus der RESJSON-Datei ausgelesen und bilden die String Table. Die String Table enthält alle zu übersetzenden Einträge. Der ausgangssprachliche Text wird aus dem mit "_" beginnenden und mit ".source" endenden Schlüssel ausgelesen. Die Übersetzerkommentare werden extrahiert und in Passolo in der Textliste des Übersetzungsfensters angezeigt. Die Übersetzerkommentare bleiben in der Zieldatei unverändert erhalten.

Übersetzen von Pluralformen

Die Texteinträge in RESJSON-Dateien können Informationen zu Pluralformen in der Datei enthalten. Passolo unterstützt diese Funktion und bietet mehrere Einträge zur Übersetzung an, je nach Einstellungen der Quell-/Zielsprache.

Beispiel:

Englisch (en) und Deutsch (de) haben zwei Pluralformen (eins, weitere), während Japanisch nur eine Pluralform kennt (weitere). Walisisch (cy) und Arabisch (ar) sind die einzigen Sprachen, in denen alle Pluralformen vorkommen (null, eins, zwei, drei, wenige, viele, weitere).

Ein Eintrag in englischer Sprache (Pluralformen: eins, weitere) kann folgende Form haben:

{

"greeting": "Hello_value",

"_greeting.comment": "A welcome greeting.",

"_greeting.source": "Hello_source",

 

"farewell": "Goodbye",

"_farewell.comment": "A goodbye.",

 

"PLURAL": "{'one': 'element', 'other': 'elements'}"

"_PLURAL.comment": "A comment for the pluralisation forms"

In diesem Fall sind die ersten beiden Einträge „normal“, während der dritte zwei Pluralformen hat (eins, weitere mit den Werten Element bzw. Elemente). Alle Pluralformen werden in der Textliste angezeigt, nicht vorhandene Werte werden in Form von leeren Zeichenfolgen dargestellt, sodass alle Pluralformen in alle Zielsprachen übersetzt werden können. Alle Pluralformen werden gemäß der folgenden Regel in der Textliste generiert: [plural_Id].[plural_Form].

Fehlende Werte bzw. nicht unterstützte Pluralformen werden als Leertext angezeigt. Aus diesem Grund sollten Sie die Option zur Anzeige von Leertext in der Übersetzungsliste aktivieren. Hierfür wählen Sie in Passolo Datei > Optionen. Klicken Sie im Dialogfeld Optionen auf Ansicht und dann bei der Option Anzeige leerer Texte in der Übersetzungsliste auf Immer. Klicken Sie anschließend auf OK.

In diesem Fall werden PLURAL.zero, PLURAL.one, PLURAL.two, PLURAL.few, PLURAL.many and PLURAL.other generiert. Wenn die Plural-ID Kommentare aufweist (wie in unserem Beispiel), wird dieser Kommentar auf alle [plural_Id].[plural_Form]-Texte wie folgt angewendet:

Japanisch kennt nur eine Pluralform, nämlich weitere. Bei Übersetzungen ins Japanische ist nur die weitere-Pluralform zu übersetzen. Die anderen Pluralformen werden beim Schreiben der Zieldatei ignoriert.

Die oben angegebene Beispieldatei würde wie folgt übersetzt werden:


{

"greeting": "今日は",
	

"_greeting.comment": "A welcome greeting.",

"_greeting.source": "Hello_source",

 

"farewell": "ごきげんよう",
	

"_farewell.comment": "A goodbye.",

 

"PLURAL": "{'other': '要素'}",
	

"_PLURAL.comment": "A comment for the pluralisation forms"

}

Parser für Dateien im ARB-Format (Application Resource Bundle)

Application Resource Bundle ( kurz ARB) ist ein Format von Lokalisierungsressourcen, das einfach (basiert auf JSON), erweiterbar (Vokabular kann ohne Auswirkungen auf vorhandene Tools und Verwendung ergänzt werden) und direkt einsetzbar ist (Anwendungen können direkt von diesem Format auf die Ressource zugreifen, ohne dass diese in ein anderes Format konvertiert werden müssen).

Im ARB-Format liegen zu lokalisierende Ressourcen als JSON-Objekt vor. Jede Ressource hat einen Ressourceneintrag, der durch einen Schlüssel und einen optionalen Attributeintrag mit entsprechendem Schlüssel identifiziert wird.

ARB-Dateien liegen, wie vom JSON-Standard vorgegeben, standardmäßig im UTF-8-Format vor. Beispiel einer ARB-Datei (in englischer Sprache):

{

"@@locale": "en_US",

"@@context": "System Administration page",

"HOME_PAGE_TITLE": "Home page!",

"HOME_PAGE_USER_NAME": "Welcome {{user.name}}!",

"HOME_PAGE_DRAWING_COUNT": "{'0': 'You have no Drawings.', 'one': 'You have 1 Drawing.', 'other': 'You have {} Drawings.'}",

"@HOME_PAGE_DRAWING_COUNT": {

"type": "text",

"description": "Number of drawings",

"source_text": "{'0': 'You have no Drawings.', 'one': 'You have 1 Drawing.', 'other': 'You have {} Drawings.'}",

"placeholders": {

"COMMENTSNUM": {

"example": "7",

"description": "number of comments. should be bigger than 1"

}

}

}

}

Der ARB-Dateiparser unterstützt die folgenden Eigenschaften:

- Unterstützung von Plural- und Genusformen (Pluralformen werden getrennt ausgewiesen, um die Übersetzung zu erleichtern. Außerdem werden entsprechende Pluralformen in der Übersetzungsliste in allen Zielsprachen generiert.)

- CSS-Ressource

- Ressourcenattribute

- Vordefinierte Ressourcenattribute

- Globale Attribute

- Angepasste Attribute

- Ressourcenverknüpfung

- Ein- und mehrzeilige Kommentare in der Datei

Ressourcen in ARB-Dateien

Mehrere Texteinträge werden aus der ARB-Datei gelesen und bilden die Texttabelle. Die String Table enthält alle zu übersetzenden Einträge. Die Ressourcenkennung (links vom Doppelpunkt) ist in Passolo wie üblich sichtbar, der String auf der rechten Seite ist der zu übersetzende Ressourcen-Wert.

Auf der obersten Ebene der ARB-Ressourcenstruktur kann eine Anzahl von „globaler“ Attribute definiert sein, die sich auf das Ressourcenpaket als Ganzes beziehen. Diesen Attributnamen ist die Zeichenfolge „@@“ vorangestellt, um Konflikte mit identischen Namen von Attributschlüsseln in den Ressourcen zu vermeiden. Diese Attribute werden von der Übersetzung ausgeschlossen, bleiben jedoch in der zielsprachlichen Datei erhalten.

Ressourcenattribute (IDs, die mit @ beginnen und mit einer anderen ID übereinstimmen) werden von der Übersetzung ausgeschlossen, aber für den Übersetzer sichtbar dargestellt, da sie beim Erstellen der Übersetzung helfen können. Weitere unterstützte Attributtypen sind: type, context, description, placeholders, source_text usw.

Unterstützung von Pluralformen

Wie bereits erwähnt, können die Texteinträge in ARB-Dateien Informationen zu Pluralformen enthalten. Passolo unterstützt diese Funktion und bietet mehrere Einträge zur Übersetzung an, je nach Einstellungen der Ausgangs-/Zielsprache.

Im Beispiel oben wird für HOME_PAGE_DRAWING_COUNT eine spezielle Syntax verwendet, die als Pluralform interpretiert wird. Einige Teile der Zeichenfolge wie z. B. "one", "other" werden nicht übersetzt.

Projekteinstellungen

Kommentare nicht in Zieldateien schreiben

Wenn diese Einstellung aktiviert ist, werden den Zieldateien keine Kommentare hinzugefügt.

Einstellungen für Quelldateien

Metadaten nicht in Zieldateien schreiben

Diese Einstellung wirkt sich nur auf die ARB- und RESJSON-Parser aus. Grund hierfür ist, dass die ARB- und RESJSON-Formate Kommentare von Haus aus unterstützen.

Wenn diese Einstellung aktiviert ist, werden den Zieldateien keine Metadaten hinzugefügt. Sie ist nur für ARB und RESJSON-Formate verfügbar. Wenn sie aktiviert ist, wird eine einfache JSON-Struktur erstellt, und alle Metadaten und Kommentare werden entfernt.