Modul zum Generieren benutzerdefinierter Bundles
Verwende dieses Modul, um benutzerdefinierte Formate von Zieldatei-Bundles zu unterstützen. Der Generierungsprozess wird an deine Crowdin-App delegiert, die ein Modul zum Generieren benutzerdefinierter Bundles implementiert. Wenn die Übersetzungen bereit sind, sendet Crowdin die Übersetzungsdaten an deine App, die das generierte Bundle im gewünschten Format zurückgibt.
Du kannst Zugriff auf dieses Modul für eine der folgenden Benutzerkategorien gewähren:
Für Crowdin:
- Nur ich (also der Projektinhaber)
- Alle Projektmitglieder
- Ausgewählte Benutzer
Für Crowdin Enterprise:
- Nur Organisationsadministratoren
- Alle Benutzer in den Projekten der Organisation
- Ausgewählte Benutzer
{ "modules": { "custom-file-format": [ { "key": "your-module-key-type-xyz", "type": "type-xyz", "url": "/process", "multilingualExport": true, "stringsExport": true, "extensions": [ ".resx" ] } ] }}key | Typ: Erforderlich: ja Beschreibung: Kennung des Moduls innerhalb der Crowdin-App. |
type | Typ: Erforderlich: ja Beschreibung: Kennung des benutzerdefinierten Bundle-Typs. Kann in der API verwendet werden, um die Verarbeitung dieses Moduls beim Generieren von Übersetzungs-Bundles auszulösen. |
url | Typ: Erforderlich: ja Beschreibung: Die relative URL, die während des Übersetzungsexports aufgerufen wird. Crowdin sendet eine Anfrage an diese URL, um die Generierung des benutzerdefinierten Bundles zu starten. |
multilingualExport | Typ: Erforderlich: nein Zulässige Werte: Beschreibung: Ermöglicht den Export von Strings für mehrere Zielsprachen in einer einzigen Anfrage. Nützlich für Dateiformate, die mehrere Sprachen innerhalb desselben Bundles unterstützen. |
stringsExport | Typ: Erforderlich: ja Beschreibung: Muss für Bundle-Generator-Module auf |
extensions | Typ: Erforderlich: ja Beschreibung: Liste der Dateierweiterungen, die den generierten Bundles zugeordnet sind (z. B. |
Kommunikation zwischen der App zum Generieren benutzerdefinierter Bundles und Crowdin
Abschnitt betitelt „Kommunikation zwischen der App zum Generieren benutzerdefinierter Bundles und Crowdin“Wenn ein Benutzer den Export eines Übersetzungs-Bundles anfordert, sendet Crowdin eine HTTP-Anfrage an die konfigurierte URL der App ($baseUrl. $url) mit den erforderlichen Projekt-, Sprach- und Übersetzungsdaten. Die App verarbeitet die Daten und antwortet mit der generierten Bundle-Datei.
Für Anfragen und Antworten von und zu Apps zum Generieren benutzerdefinierter Bundles gilt ein Timeout von zwei Minuten. Die maximale Größe von Request- und Response-Payloads ist auf 5 MB begrenzt.
Beispiel für die Nutzlast der Anfrage:
// max request payload - 5 MB// wait timeout - 2 minutes{ "jobType": "build-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" }, "sourceLanguage": { "id": "es", "name": "Spanish", "editorCode": "es", "twoLettersCode": "es", "threeLettersCode": "spa", "locale": "es-ES", "androidCode": "es-rES", "osxCode": "es.lproj", "osxLocale": "es", "pluralCategoryNames": ["one"], "pluralRules": "(n != 1)" }, "targetLanguages": [ { // same structure as for sourceLanguage } ], "strings": [...], // array of segments "stringsUrl": "https://tmp.downloads.crowdin.com/strings.ndjson" // file with segments, in new-line delimited json format}Eigenschaften:
jobType | Typ: Mögliche Werte: Beschreibung: Gibt die Aktion an, die von der App ausgeführt werden soll. Für Bundle-Generator-Module immer auf |
strings, stringsUrl | Typ(strings): Typ(stringsUrl): Beschreibung: Enthält die Übersetzungsstrings für die Bundle-Generierung. Entweder |
Beispiel für die Nutzlast der Antwort:
// max response payload - 5 MB// wait timeout - 2 minutes{ "data": { "content": "TWF5IHRoZSBGb3JjZSBiZSB3aXRoIHlvdS4=", // base64 encoded translation file content "contentUrl": "https://app.example.com/p5uLEpq8p-result.xml", // translation file public URL }, "error": { "message": "Your error message" }}Eigenschaften:
data.content, data.contentUrl | Typ(data.content): Typ(data.contentUrl): Beschreibung: Verwende entweder Das Format der Datei hängt von deiner Implementierung ab. |
error.message | Typ: Beschreibung: Eine Fehlermeldung, die von der App an Crowdin übergeben wird und für einen Benutzer in der Benutzeroberfläche sichtbar ist. |
Unten siehst du ein Beispiel für die Struktur, die verwendet wird, um Übersetzungsstrings zur Generierung benutzerdefinierter Bundles an die App zu übergeben.
Payload Beispiel:
// strings should be in "new-line delimited json" format if they passed by URL[ { // non plural string "id": 1, // numeric identifier of the string in Crowdin "identifier": "string-key-1", // required: unique string key "context": "Some context", // optional: additional info for translators "customData": "max 4 KB of custom data", // optional: preserved on export "maxLength": 10, // optional, default null "isHidden": false, // optional, default null "hasPlurals": false, // optional, default false "labels": ["label-one", "label-two"], // optional, default [] "text": "String source text", // required: source content "translations": { // required: grouped by target language ID "uk": { // targetLanguage.id "text": "Переклад стрічки", // required: translation text "status": "untranslated | translated | approved" // optional, default "translated" }, // can be other languages for multilingual, check "targetLanguages" in the request payload } }, { // plural string "id": 2, "identifier": "string-key-2", "context": "Some optional context", "customData": "max 4 KB of custom data", "maxLength": 15, "isHidden": false, "hasPlurals": true, "labels": [], "text": { // keys from sourceLanguage.pluralCategoryNames "one": "One file", "other": "%d files", }, "translations": { "uk": { "text": { // keys from targetLanguage.pluralCategoryNames "one": "One file", "few": "%d файла", "many": "%d файлів", }, "status": { "one": "untranslated", "few": "translated", "many": "approved", } } } }]Eigenschaften:
id | Typ: Erforderlich: ja Beschreibung: Numerische ID des Strings in deinem Crowdin-Projekt. Für die Zuordnung von Übersetzungen erforderlich. |
identifier | Typ: Erforderlich: ja Beschreibung: Eindeutiger String-Schlüssel innerhalb der Datei. Erforderlich. |
text | Typ: Beschreibung: Source-String-Text. Erforderlich zum Generieren von Übersetzungen. Bei Strings mit Pluralformen ist dies ein Objekt mit den Pluralformschlüsseln aus |
customData | Typ: Erforderlich: nein Beschreibung: Beliebige benutzerdefinierte Daten, die mit dem String verknüpft werden müssen. Hinzugefügte benutzerdefinierte Daten werden zusammen mit den entsprechenden Strings beim Übersetzungsexport exportiert. |
translations | Typ: Erforderlich: ja Beschreibung: Erforderliche Übersetzungen für jede Zielsprache. Jede Sprach-ID wird einem Objekt mit einem Feld |