Modul zur Verarbeitung der Übersetzungszuordnung
Mit dem Modul zur Verarbeitung der Übersetzungszuordnung kannst du Crowdins Standardmechanismus zur Zuordnung überschreiben, wenn du Übersetzungen für Nicht-Schlüssel-Wert-Dateien (z. B. HTML oder MD) hochlädst.
Standardmäßig ordnet Crowdin hochgeladene Übersetzungen automatisch den vorhandenen Source-Strings zu. Wenn du dieses Modul in deiner Crowdin-App verwendest, kannst du diesen Prozess abfangen und deine eigene Zuordnungslogik anwenden, beispielsweise mithilfe eines Zuordnungsdienstes eines Drittanbieters. Damit hast du die volle Kontrolle darüber, wie Übersetzungen bei komplexen Dokumentformaten den entsprechenden Source-Strings zugeordnet werden.
Du kannst Zugriff auf dieses Modul für eine der folgenden Benutzerkategorien gewähren:
Für Crowdin:
- Nur ich (also der Projektinhaber)
- Ich, Projektmanager und Entwickler
- Ausgewählte Benutzer
Für Crowdin Enterprise:
- Nur Organisationsadministratoren
- Organisationsadministratoren, Projektmanager und Entwickler
- Ausgewählte Benutzer
{ "modules": { "file-translations-alignment": [ { "key": "your-translations-alignment-module-key", "url": "/translations-alignment", "signaturePatterns": { "fileName": "^.+\.html$", "fileContent": "<html.*>" } } ] }}key | Typ: Erforderlich: ja Beschreibung: Kennung des Moduls innerhalb der Crowdin-App. |
url | Typ: Erforderlich: ja Beschreibung: Die relative URL, die beim Hochladen einer Übersetzung aufgerufen wird. |
signaturePatterns | Typ: Beschreibung: Enthält reguläre Ausdrücke für |
Kommunikation zwischen der App zur Verarbeitung der Übersetzungszuordnung und Crowdin
Abschnitt betitelt „Kommunikation zwischen der App zur Verarbeitung der Übersetzungszuordnung und Crowdin“Beim Hochladen einer Übersetzungsdatei für ein Nicht-Schlüssel-Wert-Format erkennt das System anhand des Parameters signaturePatterns ein geeignetes Modul zur Verarbeitung der Übersetzungszuordnung. Crowdin sendet anschließend eine HTTP-Anfrage an die URL der App ($baseUrl. $url).
Diese Anfrage enthält zwei Hauptarrays: sourceStrings (aus dem Projekt) und translationStrings (aus der hochgeladenen Übersetzungsdatei geparst). Die Aufgabe der App besteht darin, diese beiden String-Mengen zu verarbeiten, die Zuordnung durchzuführen und eine strukturierte Antwort zurückzugeben, die die Übersetzungen den korrekten IDs der Source-Strings zuordnet.
Anfrage an die App zur Verarbeitung der Übersetzungszuordnung
Abschnitt betitelt „Anfrage an die App zur Verarbeitung der Übersetzungszuordnung“Beispiel für die Nutzlast der Anfrage:
// max request payload - 5 MB// wait timeout - 2 minutes{ "jobType": "translation-alignment-file", "organization": { "id": 1, "domain": "{domain}", "baseUrl": "https://{domain}.crowdin.com", "apiBaseUrl": "https://{domain}.api.crowdin.com" }, "project": { "id": 1, "identifier": "your-project-identifier", "name": "Your Project Name", "userId": 1, "sourceLanguageId": "en", "targetLanguageIds": [ "ja", "uk", "et" ], "createdAt": "2030-01-15T07:00:00+00:00", "updatedAt": "2030-01-15T07:00:15+00:00", "lastActivity": "2030-01-15T10:12:13+00:00", "description": null, "url": "/project/your-project-identifier", "cname": null }, "sourceLanguage": { "id": "en", "name": "English", "editorCode": "en", "twoLettersCode": "en", "threeLettersCode": "eng", "locale": "en-US", "androidCode": "en-rUS", "osxCode": "en.lproj", "osxLocale": "en", "pluralCategoryNames": [ "one", "other" ], "pluralRules": "(n != 1)", "pluralExamples": [ "1", "0, 2-999; 1.2, 2.07..." ], "textDirection": "ltr", "dialectOf": null }, "targetLanguages": [ { // Language object for the translation being aligned. Has the same structure as sourceLanguage. } ], "file": { "id": 4219, "name": "en.html", "title": null, "path": "/en.html", "type": "html32", "isMultilingual": false, "status": "active", "revision": 1, "branchId": null, "directoryId": 0 }, "sourceStrings": [ { "id": 1234567, "text": "Welcome!", "context": "Document Title\r\nXPath: \/html\/head\/title" } // other source strings ... ], "translationStrings": [ { "id": null, "text": "Ласкаво просимо!", "context": "Document Title\r\nXPath: \/html\/head\/title" } // other translation strings ... ]}Eigenschaften:
jobType | Typ: Wert: Beschreibung: Gibt die Aktion des Moduls zur Verarbeitung der Übersetzungszuordnung an. |
file | Typ: Beschreibung: Enthält Informationen über die Source-Datei in Crowdin, in die die Übersetzungen hochgeladen werden. |
targetLanguages | Typ: Beschreibung: Ein Array, das das Sprachobjekt der hochgeladenen und zugeordneten Übersetzungsdatei enthält. |
sourceStrings, sourceStringsUrl | Typ(sourceStrings): Typ(sourceStringsUrl): Beschreibung: Parameter für die Source-Strings aus der Originaldatei. |
translationStrings, translationStringsUrl | Typ(translationStrings): Typ(translationStringsUrl): Beschreibung: Parameter für die aus der hochgeladenen Übersetzungsdatei geparsten Strings.
|
Die App muss ihre benutzerdefinierte Zuordnung durchführen und eine Antwort mit einem translations-Array zurückgeben. Dieses Array ordnet jeden Übersetzungstext seiner entsprechenden sourceStringId zu.
Beispiel für die Nutzlast der Antwort:
// max response payload - 5 MB// wait timeout - 2 minutes{ "data": { "translations": [ { "sourceStringId": 1234567, "text": "Ласкаво просимо!" }, // other translation mappings... ], // or use translationsUrl for large payloads "translationsUrl": "https://app.example.com/jKe8ujs7a-aligned.ndjson" // new-line delimited json file with aligned translations }, "error": { "message": "Optional error message" }}Eigenschaften:
data.translations, data.translationsUrl | Typ(data.translations): Typ(data.translationsUrl): Beschreibung: Parameter zur Übergabe der zugeordneten Übersetzungen.
|
data.translations.sourceStringId | Typ: Beschreibung: Die numerische ID des Source-Strings, auf den die Übersetzung angewendet werden soll. |
data.translations.text | Typ: Beschreibung: Der anzuwendende Übersetzungstext. Für Strings mit Pluralformen muss dies ein Objekt sein, dessen Schlüssel den Pluralkategorien der Zielsprache entsprechen (z. B. |
error.message | Typ: Beschreibung: Eine Fehlermeldung, die von der App an Crowdin übergeben wird und für einen Benutzer in der UI sichtbar ist. |