Moduli

I moduli consentono alle app di estendere l’interfaccia utente di Crowdin Impresa, creare integrazioni con i servizi esterni, etc.

Supported Modules

  • Modulo delle integrazioni – inserisci una nuova pagina d’integrazione su Crowdin Imprese.
  • Modulo dei pannelli di Crowdsourcing – crea pannelli aggiuntivi sulla pagina pubblica di crowdsourcing.
  • Editor-panels module – create additional panels in the Editor.
  • Modulo del menu d’organizzazione – crea una nuova sezione nel pannello sinistro della home page dell’Area di Lavoro.
  • Modulo del menu del progetto – crea una nuova sezione nel pannello sinistro della home page del Progetto.
  • Modulo della MT (Traduzione Automatica) Personalizzata – connetti i motori di traduzione automatica non ancora supportati di default su Crowdin Imprese.
  • Modulo degli strumenti – inserisci la pagina di un nuovo strumento su Crowdin Imprese.
  • Modulo dei rapporti – crea rapporti aggiuntivi sulla pagina dei Rapporti.
  • Custom File Format module – add a custom file format import and export support.

More Crowdin Apps modules are coming soon.

Integrations Module

Il modulo delle integrazioni consente di creare e inserire una nuova integrazione nel progetto di Crowdin Imprese. Puoi trovarlo nelle Integrazioni > Personalizzate. This module is available to project members with manager permissions (or higher).

Integration module structure:

{
  "integrations": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "description": "Module description",
      "logo": "/logo.png",
      "url": "/integration-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

description

Type: string

Descrizione: La descrizione leggibile dall'uomo di cosa fa il modulo.
La descrizione sarà visibile nell'UI di Crowdin Imprese.

logo

Type: string

Required: yes

Descrizione: L'URL relativo al logo delle integrazioni che sarà mostrato nell'UI di Crowdin Imprese.
La risoluzione consigliata è di 48x48 pixel.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Modulo dei pannelli di Crowdsourcing

Il modulo dei pannelli di crowdsourcing consente di creare schede aggiuntive sulla pagina pubblica di crowdsourcing del progetto. Per operare con questo modulo, assicurati che il tuo progetto soddisfi i seguenti requisiti:

  • Il flusso di lavoro del progetto contiene la fase di Crowdsourcing.
  • Il progetto è pubblicato sulla pagina d’impostazioni di Crowdsourcing.

Questo modulo è disponibile per tutti gli utenti autorizzati.

La struttura del modulo del pannello di Crowdsourcing:

{
  "crowdsource-panels": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "url": "/crowdsource-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

Editor-panels Module

The editor-panels module allows creating additional tabs in the Editor. When using this module in your Crowdin app, you can choose the Editor mode where you’d like the additional tabs to be displayed. Editor-panels module is available only to the project members that have access to the Editor.

Editor-panel module structure:

{
  "editor-panels": [
    {
      "key": "your-module-key",
      "position": "right",
      "name": "Module name",
      "modes": ["translate", "proofread"],
      "url": "/editor-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

position

Type: string

Required: yes

Allowed values: right

Description: The position where the module will be placed.

name

Type: string

Required: yes

Description: The human-readable name of the module.

modes

Type: array

Required: yes

Allowed values: assets, review, translate, proofread

Description: The Editor's mode list where the module will be available.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Modulo del Menu d’Organizzazione

Il modulo del menu d’organizzazione consente di creare una nuova sezione nel pannello sinistro della pagina home dell’Area di Lavoro. Questo modulo è disponibile solo agli admin dell’organizzazione.

Struttura del modulo del menu d’organizzazione:

{
  "organization-menu": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "url": "/organization-page",
      "icon": "/images/icon.png"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

icona

Type: string

Required: yes

Descrizione: L'URL relativo all'icona della nuova sezione che sarà mostrato nell'UI di Crowdin Imprese.
La risoluzione consigliata è di 24x24 pixel.

Modulo del Menu del Progetto

Il modulo del menu del progetto consente di creare una nuova sezione nel pannello sinistro della home pagine del progetto. This module is available to selected project roles.

Struttura del modulo del menu del progetto:

{
  "project-menu": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "url": "/project-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Custom MT (Machine Translation) Module

This module helps you connect machine translation engines that are not supported by Crowdin yet. Once you create this kind of app, you’ll be able to pre-translate your content with the connected MT or enable translation suggestions made by it to be shown in the Editor for translators.

Custom MT module structure:

{
   "custom-mt": [
     {
            "key": "custom-mt",
            "name": "Custom MT",
            "url": "/translate"
      }
    ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

url

Type: string

Required: yes

Description: The relative URL to the content page of the module that will be integrated with Crowdin.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Tools Module

Il modulo degli strumenti consente di creare e inserire la pagina di un nuovo strumento nel progetto di Crowdin Imprese. Puoi trovarlo nella sezione Strumenti. This module is available to project members with manager permissions (or higher).

Tools module structure:

{
  "tools": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "description": "Module description",
      "logo": "/logo.png",
      "url": "/tools-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

description

Type: string

Descrizione: La descrizione leggibile dall'uomo di cosa fa il modulo.
La descrizione sarà visibile nell'UI di Crowdin Imprese.

logo

Type: string

Required: yes

Descrizione: L'URL relativo al logo dello strumento che sarà mostrato nell'UI di Crowdin Imprese.
La risoluzione consigliata è di 48x48 pixel.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Reports Module

Il modulo dei rapporti consente di creare e inserire un nuovo rapporto nel progetto di Crowdin Imprese. Puoi trovarlo nelle Traduzioni > Rapporti. This module is available to project members with manager permissions (or higher).

Reports module structure:

{
  "reports": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "description": "Module description",
      "logo": "/logo.png",
      "url": "/reports-page"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

description

Type: string

Descrizione: La descrizione leggibile dall'uomo di cosa fa il modulo.
La descrizione sarà visibile nell'UI di Crowdin Imprese.

logo

Type: string

Required: yes

Descrizione: L'URL relativo al logo dello strumento che sarà mostrato nell'UI di Crowdin Imprese.
La risoluzione consigliata è di 48x48 pixel.

url

Type: string

Required: yes

Descrizione: L'URL relativo alla pagina del contenuto del modulo che sarà integrata nell'UI di Crowdin Impresa.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

Custom File Format Module

Use this module to add support of new custom file formats. It’s implemented by delegating a source file parsing to an app with a custom file format module. Quando le traduzioni sono completate, Crowdin Imprese passa un file sorgente e un’insieme di stringhe con le traduzioni all’app del formato del file di Crowdin per la generazione dei file di traduzione. This module is available to project members with manager permissions (or higher).

Custom File Format module structure:

{
  "custom-file-format": [
    {
      "key": "your-module-key-type-xyz",
      "type": "type-xyz",
      "url": "/process",
      "multilingual": true,
      "signaturePatterns": {
        "fileName": "^.+\\.xyz$",
        "fileContent": "<properties>\\s*<property\\s+name=.*value=.*/>"
      }
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

type

Type: string

Required: yes

Description: The custom file format identifier. Can be used in API to force the processing of the files by the Custom file format app. If the type parameter is used in API, the signaturePatterns will be ignored.

url

Type: string

Required: yes

Description: The relative URL triggered on file import, update, translation upload, and export.

multilingual

Type: bool

Required: no

Allowed values: true, false. Default is false

Descrizione: Questo parametro è usato per combinare il contenuto di più lingue in una richiesta caricando e scaricando le traduzioni nel tuo progetto di Crowdin Imprese.

signaturePatterns

Type: object

Description: Contains fileName and/or fileContent regular expressions used to detect file type when uploading a new source file via UI (or via API without specified type parameter). If the file matches regular expressions, it's labeled as a custom format file.

Note: fileContent regular expression checks only the first 64 KB of the file content.

Comunicazione tra l’App del Formato File Personalizzato e Crowdin Imprese

On the initial file import, the system detects custom file format using the signaturePatterns or type parameters and makes an HTTP request to the app’s URL ($baseUrl . $url) for further processing. Then app processes the file in a custom format and responds to the system. The requests and responses to and from the custom file format apps have two-minute timeouts. The maximum request and response payload size is limited to 5 MB.

Request to the App

Request payload example:

// carico utile di richiesta max- 5 MB
// timeout d'attesa - 2 minuti
{
    "jobType": "parse-file | 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": "Il Nome Del Tuo Progetto"
    },
    "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": [{
        // same structure as for sourceLanguage, empty when uploading a new source file, one element for import_translations & export, can be more for miltilingual files
    }],
    "strings": [...], // for the build-file jobs, array of segments
    "stringsUrl": "https://tmp.downloads.crowdin.com/strings.ndjson", // for the build-file jobs, file with segments, in new-line delimited json format
}

Properties:

jobType

Type: string

Possible values: parse-file, build-file

Description: Specifies the action that should be executed by the app.
parse-file job is used for initial source file upload, source file update, and translation upload. For parse-file jobs, the system passes a source file to the app and expects a parsed source string array in the response.
build-file job is used for translation download. For build-file jobs, the system passes a source file and a string array with translations to the app and expects a generated translation file in the response.

file.content, file.contentUrl

Type: string

Description: Parameters used to pass the base64 encoded source file content (file.content) or a source file public URL (file.contentUrl).
Either of these two parameters can be used (Note: Maximum request payload limit is 5 MB).

strings, stringsUrl

Type(strings): array

Type(stringsUrl): string

Description: Parameters used for translations download (for build-file job type only). strings - translation strings array. stringsUrl - public URL to a new-line delimited json with translation strings.
Either of these two parameters can be used (Note: Maximum request payload limit is 5 MB).

Expected Response from the App for the parse-file Job Type

Response payload example:

// max response payload - 5 MB
// wait timeout - 2 minutes
{
    "data": {
        "strings": [...], // segments array
        "stringsUrl": "https://app.example.com/jKe8ujs7a-segments.ndjson", // new-line delimited json file with parsed strings
        "preview": "VGhpbmdzIGFyZSBvbmx5IGltcG9zc2libGUgdW50aWwgdGhleSdyZSBub3Qu", // optional, base64 encoded content of preview html file, not supported if there are plural strings
        "previewUrl": "https://app.example.com/LN3km2K6M-preview.html", // optional, URL of preview html file, not supported if there are plural strings
    },
    "error": {
        "message": "Your error message"
    }
}

Properties:

data.strings, data.stringsUrl

Type(data.strings): array

Type(data.stringsUrl): string

Description: Parameters used to pass the parsed strings content.
data.strings - parsed strings array.
data.stringsUrl - public URL to a new-line delimited json with parsed strings.
Either of these two parameters can be used (Note: Maximum response payload limit is 5 MB).

preview, previewUrl

Type(preview): array

Type(previewUrl): string

Description: Parameters used to pass the optional HTML preview of the parsed strings content, which can be generated by the app. The generated HTML preview will be displayed in the Editor. See the HTML Preview file example.

Note: HTML preview won't be displayed in the Crowdin Editor if the app passes strings with plurals.

error.message

Type: string

Descrizione: Un messaggio d'errore che si può passare dall'app a Crowdin Imprese e sarà visibile a un utente nell'UI.

Expected Response from the App for the build-file Job Type

Response payload example:

// 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"
    }
}

Properties:

data.content, data.contentUrl

Type(data.content): string

Type(data.contentUrl): string

Description: Parameters used to pass the base64 encoded translation file content (data.content) or a translation file public URL (data.contentUrl).
Either of these two parameters can be used (Note: Maximum response payload limit is 5 MB).

error.message

Type: string

Descrizione: Un messaggio d'errore che si può passare dall'app a Crowdin Imprese e sarà visibile a un utente nell'UI.

Strings Array Structure

Below you can see an example of the strings structure expected from the app for parse-file job type and passed to the app for build-file job type.

Payload example:

// strings should be in "new-line delimited json" format if they passed by URL
[{ // non plural string
    "previewId": 1, // only for "parse-file" jobType, required when the HTML preview of the file is generated
    "id": 1, // only for "build-file" jobType
    "identifier": "string-key-1", // required
    "context": "Some context", // optional
    "customData": "max 4 KB of custom data", // optional
    "maxLength": 10, // optional, default null
    "isHidden": false, // optional, default false
    "hasPlurals": false, // optional, default false
    "labels": ["label-one", "label-two"], // optional, default []
    "text": "String source text", // required
    "translations": { // optional
        "uk": { // targetLanguage.id
            "text": "Переклад стрічки", // required
            "status": "untranslated | translated | approved" // optional, default "translated"
        },
        // can be other languages for multilingual, check "targetLanguages" in the request payload
    }
},
{ // plural string
    "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": { // 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",
            }
        }
    }
}]

Properties:

previewId

Type: integer

Required: yes (only for the parse-file job when the HTML preview of the file is generated)

Description: Numeric identifier of the string in the HTML Preview file. Used for parse-file job type only.

id

Type: integer

Descrizione: Identificativo numerico della stringa nel tuo progetto di Crowdin Imprese. Used for build-file job type only.

identifier

Type: string

Description: Unique string key within the file.

customData

Type: string

Description: Any custom data that need to be linked to the string. Added custom data will be exported along the corresponding strings on translation export.

HTML Preview of the file

HTML Preview of the file example:

<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>

Context Menu Module

The context menu module allows creating the item in the context menu where it’s possible. Currently, the module can be added to the following context menus:

  • Context menu item at Resources > TM > TM record.
  • Context menu item at Resources > Glossary > Glossary record.
  • Context menu item at Project home page > Language record.
  • Context menu item at Project > Content > Files > File record.
  • Context menu item at Project > Content > Screenshots > Screenshot record.
  • Context menu item at project home page > Language > File record.

Also, this module can perform the following types of actions:

  • Apri una finestra di dialogo modale con iframe incluso (visualizza il Modulo modale.).
  • Open a link in the new or the same tab.

Questo modulo è disponibile per tutti gli utenti autorizzati.

Context menu module structure:

{
  "context-menu": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "description": "Module name",
      "options": {
        "location": "/modal",
        "type": "modal"
      }
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module. Uses as Context menu text

description

Type: string

Description: A human-readable description of what the module does.
The description will be visible in the Crowdin UI.

options.location

Type: string

Required: yes

Allowed values: tm, glossary, language, screenshot, source_file, translated_file

Description: The location in UI where the context menu can be added.

options.type

Type: string

Required: yes

Allowed values: modal, new_tab, redirect

Description: The type of action this module will perform.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Description: Set of environments where a module could be installed.
This parameter is needed for cross-product applications.

The modal module allows creating a new modal dialog. The current module works only with the Context menu module that opens it.

Modal module structure:

{
  "context-menu": [
    {
      "key": "your-module-key",
      "name": "Module name",
      "url": "/module-url"
    }
  ]
}

Properties:

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module. Uses as Context menu text

url

Type: string

Required: yes

Description: The relative URL to the content page of the module that will be integrated into the UI.

environments

Type: string

Allowed values: crowdin, crowdin-enterprise

Descrizione: Definisci l'ambiente in cui sarà eseguito il modulo.
Questo parametro è necessario per le applicazioni interprodotto.

Add Modules to Your Crowdin App

Per usare un modulo nella tua app, dichiaralo nel file del tuo Descrittore dell’App nei moduli, includendo qualsiasi proprietà richiesta. The properties you include control the customization options for your module.

Struttura del modulo di base:

{
  "{module_type}": [
    {
      "key": "your-module-key",
      "name": "Nome del Modulo"
    }
  ]
}

Properties:

{module_type}

Type: string

Required: yes

Valori consentiti: integrations, crowdsource-panels, editor-panels, organization-menu, project-menu, custom-mt, tools, reports, custom-file-format

Descrizione: Il tipo di modulo che l'app di Crowdin usa.

key

Type: string

Required: yes

Description: Module identifier within the Crowdin app.

name

Type: string

Required: yes

Description: The human-readable name of the module.

Questo articolo è stato utile?