Scopri come configurare l’internazionalizzazione Java, tradurre i file .properties e automatizzare il tuo flusso di lavoro di localizzazione Java.
Come funziona l’internazionalizzazione Java
Il sistema i18n di Java si basa su due elementi:
.propertiesfile che memorizzano le tue stringhe tradotte- La classe
ResourceBundleche carica il file corretto in fase di esecuzione in base al locale dell’utente
Quando la tua app viene eseguita, ResourceBundle controlla il locale dell’utente e carica automaticamente il file corrispondente. Se manca una traduzione, torna al file predefinito in modo che nulla si interrompa.
Richiamare una stringa nel codice è semplice:
ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.FRENCH);
String greeting = bundle.getString("welcome.message");Questo è l’intero meccanismo. Il resto del lavoro di localizzazione avviene nei file .properties stessi, ed è per questo che strutturarli correttamente è importante.
Configurazione del tuo Resource Bundle
Un resource bundle è un insieme di file .properties che condividono un nome base comune. Il nome base è la parte del nome del file prima del suffisso del locale ed è ciò che ResourceBundle.getBundle() usa per trovare il file corretto in fase di esecuzione.
messages.properties # default (usually English)
messages_fr.properties # French
messages_de.properties # German
messages_es.properties # Spanish
Qui, messages è il nome base. Puoi chiamarlo come vuoi, ma dovrebbe riflettere ciò che il file contiene. Le applicazioni più grandi spesso utilizzano più resource bundle per mantenere le cose organizzate:
src/main/resources/
messages.properties
errors.properties
emails.propertiesJava si aspetta un modello di denominazione specifico: basename_language.properties o basename_language_COUNTRY.properties per varianti regionali.
messages_fr.properties # French
messages_fr_CA.properties # French (Canada)
messages_pt_BR.properties # Portuguese (Brazil)I codici lingua seguono ISO 639-1 e i codici paese seguono ISO 3166-1. Usare il formato sbagliato significa che ResourceBundle non troverà il file in fase di esecuzione.
Strutturazione dei file Java .properties
Ogni riga in un file .properties è una coppia chiave-valore separata da =.
welcome.message = Welcome to our application
error.login.invalid_credentials = Invalid username or password
form.submit.button = SubmitOltre a utilizzare coppie chiave-valore, è importante sapere che il modo in cui scrivi il tuo file sorgente influisce direttamente sulla qualità delle tue traduzioni. Alcune best practice si applicano sempre, indipendentemente dal fatto che tu stia traducendo manualmente o utilizzando uno strumento di traduzione AI come PTC.
1
Usa chiavi chiare e descrittive
Le chiavi dovrebbero rendere ovvio dove e come viene utilizzata una stringa. Questo è importante quando gestisci centinaia di stringhe su più file.
Uso errato delle chiavi:
btn1 = Submit
msg2 = ErrorUso corretto delle chiavi:
form.submit.button = Submit
error.login.invalid_credentials = Invalid username or password2
Usa i placeholder per il contenuto dinamico
Scrivi la frase completa nel tuo file .properties e usa segnaposto numerati per il contenuto variabile invece di concatenare stringhe nel codice.
Errato (nel codice):
"Hello, " + username + "! You have " + count + " new messages."
Corretto (nel file .properties):
dashboard.greeting = Hello, {0}! You have {1} new messages.Molte lingue cambiano l’ordine delle parole e le regole di concordanza, quindi dividere le frasi in frammenti rende impossibile una traduzione corretta.
3
Gestisci la pluralizzazione con ChoiceFormat
Alcune stringhe cambiano a seconda di un valore numerico. Invece di scrivere chiavi separate per singolare e plurale, usa un pattern ChoiceFormat direttamente nel tuo file .properties:
messages.count = {0,choice,0#no messages|1#one message|1<{0} messages}
Java elabora questo pattern in fase di esecuzione e restituisce la forma corretta in base al valore passato.
4
Escape dei caratteri speciali
Caratteri come =, :, # e \ hanno un significato speciale nei file .properties:
=o:separa le chiavi dai valori#o!inizia un commento\introduce sequenze di escape (come\nper la nuova riga)
Se devi usare questi caratteri in una stringa, usa l’escape con una barra rovesciata.
support.link = Visit us at https\://support.example.com5
Salva i file in UTF-8
Salva sempre i file .properties in UTF-8. Senza di esso, i caratteri non ASCII vengono corrotti e le traduzioni diventano illeggibili.
6
Mantieni tutto il testo visibile agli utenti fuori dal tuo codice
Se una stringa è visibile agli utenti, appartiene a un file .properties Le stringhe hardcoded non verranno tradotte e la tua app finirà per mostrare un mix di lingue.
Altre considerazioni sulla localizzazione Java
Non tutto ciò che deve essere localizzato si trova in un file .properties. Date, orari, numeri e valori di valuta vengono formattati nel codice in fase di esecuzione, e farli correttamente è importante tanto quanto le tue stringhe tradotte.
Java fornisce classi integrate per questo:
DateTimeFormatterper la formattazione di data e ora sensibile al localeNumberFormatper numeri, percentuali e valori di valuta
Poiché questa guida si concentra sui file .properties e sulla loro traduzione, non li tratteremo in modo approfondito qui. La documentazione ufficiale di Java per DateTimeFormatter e NumberFormat è un buon punto di partenza.
Traduzione dei file Java .properties
Una volta che il tuo file sorgente è pronto, hai alcune opzioni per farlo tradurre. La scelta giusta dipende dal tuo budget, dalla tempistica e da quanta automazione ti serve.
| Opzione | Tempi di consegna | Costo | Esigenze di manutenzione |
| Traduttori professionisti | Da giorni a settimane | Alta | Esportazione manuale, invio, ricezione e reintegrazione a ogni aggiornamento |
| Script di traduzione | Minuti | Bassa | Richiede revisione – i segnaposto possono rompersi, il contesto per le traduzioni potrebbe essere sbagliato |
| Traduzione AI (come PTC) | Minuti | Bassa | Le traduzioni sensibili al contesto si sincronizzano automaticamente tramite Git o CI/CD |
Con PTC, le traduzioni di qualità umana sono pronte in pochi minuti e non c’è abbonamento: paghi solo per ciò che traduci. Per iniziare, ottieni 20.000 parole tradotte in due lingue gratuitamente, senza carta di credito.
Dopo la registrazione, un wizard di configurazione ti guida attraverso le basi: una breve descrizione della tua applicazione, le tue lingue di destinazione e il tuo file .properties. L’intero processo richiede circa 5 minuti. Per una procedura completa, consulta la nostra guida introduttiva.
Dopo che PTC ha terminato la traduzione, vai alla scheda Resource Files e scarica un file ZIP con i file .properties tradotti.
Aggiungi questi file nella cartella src/main/resources del tuo progetto, insieme al tuo file sorgente originale. In fase di esecuzione, ResourceBundle seleziona automaticamente il file corretto in base al locale dell’utente. Non devi modificare il tuo codice.
Mantenere sincronizzate le traduzioni Java .properties
Tradurre il tuo file .properties una volta è semplice. E per quanto riguarda il mantenimento delle traduzioni aggiornate man mano che la tua applicazione evolve? Ogni volta che aggiungi una nuova stringa, aggiorni il testo esistente o rimuovi una chiave, i tuoi file tradotti devono riflettere quel cambiamento.
Farlo manualmente significa esportare i file, inviarli per la traduzione, aspettare e reintegrarli ogni volta, ed è per questo che la maggior parte dei team alla fine lo automatizza.
PTC offre due modi per automatizzare il processo di traduzione:
Integrazione Git
Collega il tuo repository GitHub, GitLab o Bitbucket a PTC e monitorerà il tuo file .properties sorgente per le modifiche. Quando una stringa viene aggiunta o aggiornata, PTC la traduce automaticamente e consegna i file di traduzione aggiornati tramite una pull request. Le tue traduzioni rimangono sincronizzate senza passaggi manuali.
Integrazione CI/CD
Se preferisci mantenere tutto all’interno del tuo processo di build esistente, l’API di PTC ti consente di caricare il tuo file sorgente e recuperare le traduzioni come parte del tuo job CI. Ogni build produce traduzioni aggiornate automaticamente.
Entrambi gli approcci significano che aggiungere una nuova lingua in seguito è solo una modifica di configurazione, non un nuovo processo manuale.

Pronto a localizzare la tua app Java?
I tuoi file .properties sono la base del tuo flusso di lavoro di localizzazione Java. Struttura correttamente, mantieni le tue traduzioni sincronizzate e la tua app può supportare nuove lingue senza rallentare il tuo ciclo di rilascio.
Se non hai ancora provato PTC, la prova gratuita è un buon punto di partenza. 20.000 parole, due lingue, senza carta di credito richiesta.


Traduzione Java con AI
Ottieni traduzioni contestualizzate in pochi minuti
Carica file o automatizza tramite API o integrazione Git