PTC (Private Translation Cloud) supporta vari formati di file di risorse che memorizzano testo traducibile come etichette di app, messaggi di errore e contenuti utente.
Di seguito, troverai esempi dettagliati di formati di file di risorse supportati per aiutarti a prepararli per la traduzione.
Formati di file di risorse supportati
- Gettext (POT, PO)
- JSON (JavaScript object notation)
- YAML (YAML ain’t markup language)
- Stringhe Android (XML)
- Stringhe Apple
- stringsdict Apple
- Cataloghi di stringhe Apple (xcstrings)
- File di proprietà Apple
- Proprietà Java
- CSV (Magento / Adobe Commerce)
- XLIFF (XML localization interchange file format)
Gettext (POT, PO)
Panoramica tecnica
Estensioni file:
- .pot (Portable Object Template): questo file funge da modello, elencando tutte le stringhe traducibili nella lingua originale.
- .po (Portable Object): questo file contiene le traduzioni effettive sia nella lingua originale che in quella di destinazione.
Casi d’uso comuni:
- Progetti open source, come temi e plugin di WordPress
- Internazionalizzazione Python
Struttura:
Ogni file .po contiene elementi chiave:
- msgid: La stringa originale nella lingua di origine
- msgstr: La traduzione corrispondente nella lingua di destinazione
Esempio
po
msgid "Hello, world!"
msgstr "Hola, mundo!"
JSON (JavaScript object notation)
Panoramica tecnica
Estensione file:
- .json
Casi d’uso comuni:
- Applicazioni web (React, Angular, Vue.js)
- App per dispositivi mobili (iOS, Android)
Struttura:
- Coppie chiave-valore
I file JSON spesso memorizzano il testo in semplici coppie chiave-valore. Ogni chiave rappresenta la stringa originale e ogni valore contiene la traduzione.
Esempio
File della lingua di originejson
json
{
"welcome_message": "Welcome to our app!",
"error_message": "Something went wrong. Please try again."
}
In un file tradotto, i valori cambiano nella lingua di destinazione:
json
{
"welcome_message": "¡Bienvenido a nuestra aplicación!",
"error_message": "Algo salió mal. Inténtalo de nuevo."
}
Array JSON
JSON supporta anche array per memorizzare più stringhe correlate, come elenchi di passaggi o opzioni. Ogni elemento nell’array rappresenta una stringa traducibile.
File della lingua di origine:
json
{
"steps": [
"Open the app.",
"Log in to your account.",
"Select your profile."
]
}
File con traduzioni:
json
{
"steps": [
"Abre la aplicación.",
"Inicia sesión en tu cuenta.",
"Selecciona tu perfil."
]
}
YAML (YAML ain’t markup language)
Panoramica tecnica
Estensione file:
.yaml o .yml
Casi d’uso comuni:
- Applicazioni Ruby on Rails (per la gestione di stringhe traducibili)
- Applicazioni web e generatori di siti statici (ad es. Jekyll, Hugo)
- File di configurazione per pipeline CI/CD e progetti software
Struttura:
YAML utilizza una struttura pulita e indentata per le coppie chiave-valore. Ogni chiave rappresenta la stringa originale e il valore contiene la traduzione.
Esempio
File della lingua di origine
yml
welcome_message: "Welcome to our app!"
error_message: "Something went wrong. Please try again."
In un file YAML tradotto, i valori cambiano nella lingua di destinazione:
yml
welcome_message: "¡Bienvenido a nuestra aplicación!"
error_message: "Algo salió mal. Inténtalo de nuevo."
Stringhe Android (XML)
Panoramica tecnica
Estensione file:
.xml
Casi d’uso comuni:
- App per dispositivi mobili Android (stringhe e messaggi dell’interfaccia utente)
Struttura:
I file di stringhe XML Android seguono un formato strutturato, con ogni stringa racchiusa tra tag <string> e identificata da una chiave univoca.
Esempio
File della lingua di origine
xml
<resources>
<string name="welcome_message">Welcome to our app!</string>
<string name="error_message">Something went wrong. Please try again.</string>
</resources>
Quando viene tradotto, cambiano solo i valori all’interno dei tag, mentre le chiavi rimangono le stesse:
xml
<resources>
<string name="welcome_message">¡Bienvenido a nuestra aplicación!</string>
<string name="error_message">Algo salió mal. Inténtalo de nuevo.</string>
</resources>
Stringhe Apple
Panoramica tecnica
Estensione file:
.strings
Casi d’uso comuni:
- Applicazioni iOS e macOS (stringhe dell’interfaccia utente, messaggi di sistema, ecc.)
Struttura:
Ogni file .strings utilizza un semplice formato chiave-valore in cui la chiave è il testo originale nell’app e il valore contiene la traduzione. Puoi aggiungere commenti per fornire contesto ai traduttori.
Codifica:
Codifica UTF-16 per impostazione predefinita, con la possibilità di convertire i file .strings nella codifica UTF-8
Esempio
Lingua di origine:
strings
/* Welcome message shown on the home screen */
"welcome_message" = "Welcome to our app!";
/* Error message when something goes wrong */
"error_message" = "Something went wrong. Please try again.";
In un file tradotto, i valori cambiano per riflettere la lingua di destinazione, mentre le chiavi rimangono nella lingua di origine:
strings
/* Welcome message shown on the home screen */
"welcome_message" = "¡Bienvenido a nuestra aplicación!";
/* Error message when something goes wrong */
"error_message" = "Algo salió mal. Inténtalo de nuevo.";
stringsdict Apple
Panoramica tecnica
Estensione file:
.stringsdict
Casi d’uso comuni:
- Applicazioni iOS e macOS (gestione di forme plurali, contenuti dinamici o linguaggio basato sul genere)
Struttura:
Un file .stringsdict utilizza dizionari nidificati per definire più versioni di una stringa in base ai valori delle variabili. Ti consente di fornire versioni sia singolari che plurali di un messaggio in base a un valore numerico.
Esempio
File della lingua di origine:
xml
<plist version="1.0">
<dict>
<key>apples_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@apples@</string>
<key>apples</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>%d apple</string>
<key>other</key>
<string>%d apples</string>
</dict>
</dict>
</dict>
</plist>
Nella versione tradotta, cambiano solo i valori per le forme plurali nella lingua di destinazione, mentre le chiavi rimangono le stesse:
xml
<plist version="1.0">
<dict>
<key>apples_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@apples@</string>
<key>apples</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>%d manzana</string>
<key>other</key>
<string>%d manzanas</string>
</dict>
</dict>
</dict>
</plist>
Cataloghi di stringhe Apple (XCStrings)
Panoramica tecnica
Estensione file:
.xcstrings
Casi d’uso comuni:
- Qualsiasi app per piattaforma Apple destinata a iOS 15/macOS 12/tvOS 15/watchOS 8/visionOS 1 o versioni successive
Struttura:
XCStrings memorizza tutte le traduzioni in un singolo file basato su JSON. Il livello radice definisce i metadati come la lingua di origine e il tipo di catalogo. Ogni voce corrisponde a una chiave di stringa, che può includere note per gli sviluppatori e altri metadati. All’interno di ogni voce, le localizzazioni sono nidificate per lingua, con campi per il testo tradotto e lo stato. Puoi anche includere regole di pluralizzazione, placeholder e variazioni specifiche del dispositivo per ogni lingua.
Esempio
Lingua di origine:
json
{
"sourceLanguage" : "en",
"strings" : {
"welcome_message" : {
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Welcome to our app!"
}
}
}
}
},
"version" : "1.0"
}
Le traduzioni sono memorizzate nello stesso file con la stessa struttura della proprietà di localizzazione della lingua di origine:
json
{
"sourceLanguage": "en",
"strings": {
"welcome_message": {
"extractionState": "extracted_with_value",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Welcome to our app!"
}
},
"es": {
"stringUnit": {
"state": "translated",
"value": "¡Bienvenido a nuestra app!"
}
},
"de": {
"stringUnit": {
"state": "translated",
"value": "Willkommen bei unserer App!"
}
},
"el": {
"stringUnit": {
"state": "translated",
"value": "Καλώς ήρθατε στην εφαρμογή μας!"
}
}
}
}
},
"version": "1.0"
}
File di proprietà Apple
Panoramica tecnica
Estensione file:
.plist
Casi d’uso comuni:
- Applicazioni iOS e macOS (testo dell’interfaccia utente, impostazioni di configurazione)
Struttura:
I file .plist organizzano i dati in un formato strutturato basato su XML. Per la localizzazione, memorizzano coppie chiave-valore in cui la chiave identifica la stringa e il valore contiene il testo che si desidera tradurre.
Esempio
Lingua di origine:
xml
<plist version="1.0">
<dict>
<key>welcome_message</key>
<string>Welcome to our app!</string>
<key>error_message</key>
<string>Something went wrong. Please try again.</string>
</dict>
</plist>
Nel file tradotto, i valori cambiano per riflettere la lingua di destinazione:
xml
<plist version="1.0">
<dict>
<key>welcome_message</key>
<string>¡Bienvenido a nuestra aplicación!</string>
<key>error_message</key>
<string>Algo salió mal. Inténtalo de nuevo.</string>
</dict>
</plist>
Proprietà Java
Panoramica tecnica
Estensione file:
.properties
Casi d’uso comuni:
- Applicazioni web basate su Java
- Applicazioni desktop create con Java
- Localizzazione di elementi dell’interfaccia utente, messaggi di errore e prompt di sistema
Struttura:
I file di proprietà Java utilizzano una struttura chiave-valore in cui ogni chiave rappresenta un identificatore per una stringa traducibile e il valore contiene il testo effettivo.
Codifica:
Codifica ISO-8859-1 (Latin-1) per impostazione predefinita, ma puoi anche utilizzare la codifica UTF-8 per supportare una gamma più ampia di caratteri. I caratteri speciali spesso devono essere sottoposti a escape quando si utilizza ISO-8859-1.
Esempio
Lingua di origine:
properties
welcome_message=Welcome to our app!
error_message=Something went wrong. Please try again.
Nella versione tradotta, i valori cambiano per riflettere la lingua di destinazione, mentre le chiavi rimangono le stesse:
properties
welcome_message=¡Bienvenido a nuestra aplicación!
error_message=Algo salió mal. Inténtalo de nuevo.
CSV (Magento / Adobe Commerce)
Panoramica tecnica
Estensione file:
.csv
Casi d’uso comuni:
- Magento e Adobe Commerce per la gestione di descrizioni di prodotti, etichette dell’interfaccia utente e altre stringhe traducibili
- Importazione ed esportazione di grandi volumi di dati di localizzazione in piattaforme di e-commerce
Struttura:
I file CSV sono costituiti da righe, con ogni riga che rappresenta una coppia chiave-valore. La prima colonna contiene la chiave (di solito un identificatore o una stringa originale) e la seconda colonna contiene la traduzione corrispondente.
Esempio
Lingua di origine:
csv
"welcome_message","Welcome to our store!"
"error_message","Something went wrong. Please try again."
Nella versione tradotta, la seconda colonna cambia per riflettere la lingua di destinazione, mentre le chiavi rimangono le stesse:
csv
"welcome_message","¡Bienvenido a nuestra tienda!"
"error_message","Algo salió mal. Inténtalo de nuevo."
XLIFF (XML localization interchange file format)
Panoramica tecnica
Estensione file:
.xliff
Casi d’uso comuni:
- Localizzazione di software e siti web
- Sistemi di gestione della traduzione
- Sistemi di gestione dei contenuti (CMS) e strumenti di authoring
Struttura:
Ogni file .xliff contiene in genere elementi chiave all’interno di un formato XML strutturato:
<source>
: Contiene la stringa originale nella lingua di origine<target>
: Contiene la traduzione corrispondente nella lingua di destinazione.<trans-unit>
: Definisce ogni unità di traduzione, raggruppando le coppie<source>
e<target>
. Ogni<trans-unit>
può avere metadati aggiuntivi, come identificatori, informazioni di contesto e stato.
Esempio
<xliff version="1.2">
<file source-language="en" target-language="es">
<body>
<trans-unit id="1">
<source>Hello, world!</source>
<target>Hola, mundo!</target>
</trans-unit>
</body>
</file>
</xliff>
Come PTC traduce i tuoi file di risorse
Una volta avviata una prova gratuita, tradurre i tuoi file di risorse con PTC è semplice. Scegli tu come gestire le traduzioni, fornisci il contesto e PTC offre traduzioni di qualità umana alla velocità e al costo di una macchina.
Scopri di più nella nostra guida introduttiva.