Moduler lader apps udvide Crowdin-UI’en, oprette integrationer med eksterne tjenester mv.
Flere Crowdin-apps moduler er på vej.
Integrationsmodulet muliggør oprettelse og indsættelse af en ny integration i Crowdn-projektet. Det kan findes på projekfanen Integrationer. Dette modul er tilgængeligt for projektmedlemmer med administratortilladelser (eller højere).
Integrationsmodulsstruktur:
{
"integrations": [
{
"key": "your-module-key",
"name": "Modulnavn",
"description": "Modulbeskrivelse",
"logo": "/logo.png",
"url": "/integration-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
description | Type: Beskrivelse: Klartekstbeskrivelsen af, hvad modulet gør. |
logo | Type: Required: yes Beskrivelse: Den relative URL til integrationenslogoet, der vil fremgå i Crowdin-UI'en. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Editor-paneler modul muliggør ekstra faner i Redigeringsværktøjet. Ved brug af modulet i Crowdin-appen kan den Editortilstand vælges, i hvilken de ekstra faner skal vises. Editor-paneler modulet er kun tilgængeligt for projektmedlemmer med adgang til Redigeringsværktøjet.
Editor-panelmodulstruktur:
{
"editor-panels": [
{
"key": "relevante-modulnøgle",
"position": "right",
"name": "Modulnavnet",
"modes": ["translate", "proofread"],
"url": "/editor-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
position | Type: Required: yes Gyldige værdier: Beskrivelse: Placeringen af modulet. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
modes | Type: Required: yes Gyldige værdier: Beskrivelse: Editor-tilstandslisten, hvorfra modulet kan vælges. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Ressourcemodulet muliggør oprettelse af et ekstra panel i projektejerens ressourcer. Dette modul er kun tilgængeligt for projektejere.
Ressourcemodulstruktur:
{
"resources": [
{
"key": "relevant-modulnøgle",
"name": "Modulnavn",
"url": "/resource-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Projektmenumodulet muliggør oprettelse af en ny fane i projektet. Modul er kun tilgængeligt for udvalgte projektroller.
Projektmenumodulstruktur:
{
"project-menu": [
{
"key": "relevant-modulnøgle",
"name": "Modulnavn",
"url": "/project-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Modul muliggør at tilslutte maskinoversættelsesmotorer, som endnu ikke understøttes i Crowdin. Når denne form for app er oprettet, vil man kunne præoversætte sit indhold med den tilsluttede MT eller aktivere oversættelsesforslag herfra til at blive vist i Redigeringsværktøjet for oversættere.
Tilpasset MT-modulstruktur:
{
"custom-mt": [
{
"key": "custom-mt",
"name": "Tilpasset MT",
"url": "/translate"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Værktøjsmodulet muliggør oprettelse og indsættelse af en ny værktøjsside i Crowdin-projektet. Modulet kan findes på projekfanen Værktøjer. Dette modul er tilgængeligt for projektmedlemmer med administratortilladelser (eller højere).
Værktøjsmodulstruktur:
{
"tools": [
{
"key": "relevant-modulnøgle",
"name": "Modulnavn",
"description": "Modulbeskrivelse",
"logo": "/logo.png",
"url": "/tools-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
description | Type: Beskrivelse: Klartekstbeskrivelsen af, hvad modulet gør. |
logo | Type: Required: yes Beskrivelse: Den relative URL til værktøjslogoet, der vil fremgå i Crowdin-UI'en. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Rapportmodulet muliggør oprettelse og indsættelse af en ny rapport i Crowdin-projektet. Modulet kan findes på projekfanen Rapporter. Dette modul er tilgængeligt for projektmedlemmer med administratortilladelser (eller højere).
Rapportmodulstruktur:
{
"reports": [
{
"key": "modulnøgle",
"name": "Modulnavn",
"description": "Modulbeskrivelse",
"logo": "/logo.png",
"url": "/reports-page"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
description | Type: Beskrivelse: Klartekstbeskrivelsen af, hvad modulet gør. |
logo | Type: Beskrivelse: Den relative URL til værktøjslogoet, der vil fremgå i Crowdin-UI'en. |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i Crowdin-UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Modulet muliggør tilføjelse af understøttelse for nye tilpassede filformater. Modulet implementeres uddelegering af en kildefilfortolkning til en app med et tilpasset filformatmodul. Når oversættelsen er fuldført, videregiver Crowdin et skema med oversættelser til appen Tilpasset filformat, der genererer oversættelsesfilerne. Dette modul er tilgængeligt for projektmedlemmer med administratortilladelser (eller højere).
Tilpasset filformatmodulstruktur:
{
"custom-file-format": [
{
"key": "relevant-modulnøgletype-xyz",
"type": "type-xyz",
"url": "/process",
"multilingual": true,
"signaturePatterns": {
"fileName": "^.+\\.xyz$",
"fileContent": "<properties>\\s*<property\\s+name=.*value=.*/>"
}
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
type | Type: Required: yes Beskrivelse: Den tilpasset filformat-identifikator. Kan bruges i en API til at tvinge behandlingen af filerne af den Tilpasset filformat-app. Bruges parameteren |
url | Type: Required: yes Beskrivelse: Den relative URL udløst ved filimport, opdatering, oversættelses-upload og -eksport. |
multilingual | Type: Required: no Gyldige værdier: Beskrivelse: Denne parameter bruges til at kombinere indholdet af flere sprog til én forespørgsel ved up- og download af oversættelser i Crowdin-projektet. |
signaturePatterns | Type: Beskrivelse: Indeholder Bemærk: Det regulære udtryk fileContent tjekker kun de første 64 KB af filindholdet. |
Ved første filimporten detekterer systemet tilpasset filformat vha. parametrene signaturePatterns
eller type
og fremsætter en HTTP-anmodning til appens URL ($baseUrl. $url
) for yderligere behandling. Derefter behandler appen filen i et tilpasset format og svarer systemet. Anmodninger og svar til og fra de tilpasset filformat-apps har to minutters timeout. Den maksimale anmodning og respons nyttelaststørrelse er begrænset til 5 MB.
Anmod om nyttelast-eks.:
// max request payload - 5 MB
// wait timeout - 2 minutes
{
"jobType": "parse-file | build-file",
"organization": {
"id": 1,
"domain": null,
"baseUrl": "https://crowdin.com",
"apiBaseUrl": "https://api.crowdin.com"
},
"project": {
"id": 1,
"identifier": "projekt-identifikator",
"name": "Projektnavnet"
},
"file": {
"id": 1,
"name": "file.xml",
"content": "VGhpcyBpcyBmaWxlIGNvbnRlbnQ=", // base64 encoded source file content
"contentUrl": "https://crowdin-tmp.downloads.crowdin.com/1/file.xml?aws-signature=..." // source file public URL
},
"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": [{
// samme struktur som for sourceLanguage, tom ved upload af en ny kildefil, ét element til import_translations og eksport, kan være flere til flersprogede filer
}],
"strings": [...], // til build-file job, segmentskema
"stringsUrl": "https://tmp.downloads.crowdin.com/strings.ndjson", // til build-file job, fil med segmenter, i new-line delimited json-format
}
Egenskaber:
jobType | Type: Gyldige værdier: Beskrivelse: Angiver den handling, der skal udføres af appen. |
file.content , file.contentUrl | Type: Beskrivelse: Parametre brugt til at videregive det base64-kodet kildefilindhold ( |
strings , stringsUrl | Type(strings): Type(stringsUrl): Beskrivelse: Parametre anvendt til download af oversættelser (kun til |
Svarnyttelasteks.:
// maks. svarnyttelast - 5 MB
// afventnings timeout - 2 min.
{
"data": {
"strings": [...], // skema over segmenter
"stringsUrl": "https://app.example.com/jKe8ujs7a-segments.ndjson", // new-line delimited json-fil med fortolkede strenge
"preview": "VGhpbmdzIGFyZSBvbmx5IGltcG9zc2libGUgdW50aWwgdGhleSdyZSBub3Qu", // valgfri, base64-kodet indhold af preview html-fil, uunderstøttet ved strenge i flertalsform
"previewUrl": "https://app.example.com/LN3km2K6M-preview.html", // valgfri, URL for preview html-fil, uunderstøttet ved strenge i flertalsform
},
"error": {
"message": "Egen fejlmeddelelse"
}
}
Egenskaber:
data.strings , data.stringsUrl | Type(data.strings): Type(data.stringsUrl): Beskrivelse: Parametre brugt til at videregive det fortolkede strengeindhold. |
preview , previewUrl | Type(preview): Type(previewUrl): Beskrivelse: Parametre brugt til at videregive den valgfrie HTML-forhåndsvisning af fortolkede strengeindhold, som kan genereres af appen. Den genererede HTML-forhåndsvisning vil fremgå i Redigeringsværktøjet. Se eks. med HTML-forhåndsvisning. Bemærk: HTML-forhåndsvisning vil ikke fremgå i Crowdins Redigeringsværktøj, hvis appen videregiver strenge med flertalsform. |
error.message | Type: Beskrivelse: En fejlmeddelelse, der kan videresendes fra appen til Crowdin og vil være synlig for brugeren i UI'en. |
Svarnyttelasteks.:
// maks. svarnyttelast - 5 MB
// afventningstimeout - 2 min.
{
"data": {
"content": "TWF5IHRoZSBGb3JjZSBiZSB3aXRoIHlvdS4=", // base64-kodet oversættelsesfilindhold
"contentUrl": "https://app.example.com/p5uLEpq8p-result.xml", // oversættelsesfils offentlige URL
},
"error": {
"message": "Egen fejlmeddelelse"
}
}
Egenskaber:
data.content , data.contentUrl | Type(data.content): Type(data.contentUrl): Beskrivelse: Parametre brugt til at videregive det base64-kodet oversættelsesfilindhold ( |
error.message | Type: Beskrivelse: En fejlmeddelelse, der kan videresendes fra appen til Crowdin og vil være synlig for brugeren i UI'en. |
Nedenfor ses et eks. på den strengestruktur forventet fra appen for parse-file
-jobtypen og videresendt til appen til build-file
-jobtypen.
Nyttelasteks.:
// strenge skal være i "new-line delimited json"-formatet, hvis de er videregivet via URL
[{ // ikke-flertalsform streng
"previewId": 1, // kun til "parse-file" jobType, kræves ved generering af HTML-forvisningen af filen
"id": 1, // kun til "build-file" jobType
"identifier": "string-key-1", // kræves
"context": "Some context", // valgfri
"customData": "max 4 KB of custom data", // valgfri
"maxLength": 10, // valgfri, standard er null
"isHidden": false, // valgfri, standard er false
"hasPlurals": false, // valgfri, standard er false
"labels": ["label-one", "label-two"], // valgfri, standard []
"text": "String source text", // kræves
"translations": { // valgfri
"uk": { // targetLanguage.id
"text": "Переклад стрічки", // kræves
"status": "untranslated | translated | approved" // valgfri, standard er "translated"
},
// kan være andre sprog ved flersproget, tjek "targetLanguages" i anmodningensindholdet
}
},
{ // flertalsstreng
"previewId": 2,
"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": { // nøgler fra sourceLanguage.pluralCategoryNames
"one": "One file",
"other": "%d files",
},
"translations": {
"uk": {
"text": { // nøgler fra targetLanguage.pluralCategoryNames
"one": "One file",
"few": "%d файла",
"many": "%d файлів",
},
"status": {
"one": "untranslated",
"few": "translated",
"many": "approved",
}
}
}
}]
Egenskaber:
previewId | Type: Required: ja (kun til jobbet Beskrivelse: Numerisk strengidentifikator i i HTML-forhåndsvisningsfilen. Kun brugt til |
id | Type: Beskrivelse: Numerisk strengidentifikator i Crowdin-projektet. Kun brugt til |
identifier | Type: Beskrivelse: Unik strengnøgle i selve filen. |
customData | Type: Beskrivelse: Evt. tilpassede data, som skal være tilknyttet strengen. Tilføjet tilpassede data vil eksporteres sammen de korresponderende strenge under oversættelseseksport. |
HTML-forhåndsvisning af filen
HTML-forhåndsvisning af fileks.:
<html lang="en">
<head>
<title>Optional Title</title>
<style>
table, th, td { border: 1px solid #aaa; }
</style>
</head>
<body>
<h1 style="text-align: center">HTML preview of the file</h1>
<table style="width: 100%">
<tr>
<th>Key:</th>
<th>Text:</th>
</tr>
<tr>
<td>Key 1</td>
<td><span id="string_preview_id_1">Source Text 1</span></td> <!-- 1 is previewId in strings json -->
</tr>
<tr>
<td>Key 2</td>
<td><span id="string_preview_id_2">Source Text 2</span></td> <!-- 2 is previewId in strings json -->
</tr>
</table>
</body>
</html>
Kontekstmenumodulet muliggør oprettelse af et punkt i kontekstmenu. Pt. kan modulet føjes til flg. kontekstmenuer:
Modul kan også udføre flg. handlingstyper:
Dette modul er tilgængeligt for alle godkendte brugere.
Kontekstmenumodulstruktur:
{
"context-menu": [
{
"key": "modulenøgle",
"name": "Modulnavn",
"description": "Modulnavn",
"options": {
"location": "/modal",
"type": "vinduedialog"
}
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. Bruger som kontekstmenutekst |
description | Type: Beskrivelse: Klartekstbeskrivelse af modulfunktionaliteten. |
options.location | Type: Required: yes Gyldige værdier: Beskrivelse: Placeringen i UI'en, hvor kontekstmenuen kan tilføjes. |
options.type | Type: Required: yes Gyldige værdier: Beskrivelse: Handlingstype udført af dette modul. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Vinduedialogmodulet muliggør at oprette en ny vinduedialog. Dette modul fungerer kun med kontekstmenumodulet, der åbner det.
Vinduedialogmodulstruktur:
{
"context-menu": [
{
"key": "modulnøgle",
"name": "Modulnavn",
"url": "/module-url"
}
]
}
Egenskaber:
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. Bruger som kontekstmenutekst |
url | Type: Required: yes Beskrivelse: Den relative URL til modulindholdssiden, der integreres i UI'en. |
environments | Type: Allowed values: Description: Set of environments where a module could be installed. |
Vil man bruge et modul i sin app, skal modulet erklæres i filen App Descriptor under moduler, herunder evt. krævede egenskaber. De inkluderede egenskaberne vil styre tilpasningsindstillingerne for modulet.
Basismodulstruktur:
{
"{module_type}": [
{
"key": "modulenøgle",
"name": "Modulnavn",
"description": "Modulbeskrivelse"
}
]
}
Egenskaber:
{module_type} | Type: Required: yes Gyldige værdier: Beskrivelse: Den af Crowdin-appen anvendte modultype. |
nøgle | Type: Required: yes Beskrivelse: Modul-identifikator i Crowdin-appen. |
navn | Type: Required: yes Beskrivelse: Modulnavn i simpel tekst. |
description | Type: Beskrivelse: Klartekstbeskrivelse af modulfunktionaliteten. |