Translate Java
Properties Files

Upload your .properties files, translate values while keeping interpolation and comments intact, and export a file your JVM app loads without changes.

No credit card required14-day free trialTracking-free service
messages_pl.properties
# Polish user.hello=Witaj, {0} login.title=Zaloguj się login.email=Adres e-mail login.password=Hasło login.button=Zaloguj
# Polish
user.hello=Witaj, {0}
login.title=Zaloguj się
login.email=Adres e-mail
login.password=Hasło
login.button=Zaloguj

Why teams use Java Properties for translations

Each line pairs a key and a value with an equals sign, comments start with #, and one file holds one language, typically named like messages_pl-PL.properties. Java's standard library reads the format natively, so there is no parsing step at runtime.

Dynamic values use {0} positional interpolation, or named parameters like {name}, both read and written back exactly as they were.

Java code
Properties messages = new Properties(); messages.load( new FileInputStream("messages_en.properties") );
Properties messages = new Properties();
messages.load(
  new FileInputStream("messages_en.properties")
);

Beyond key and value

What SimpleLocalize keeps from your properties files

Automatic character escaping

Tabs, newlines, # and = are escaped on export and unescaped on import by default.

Spring Boot quote handling

Optional options keep single quotes safe with Spring's MessageSource, so MessageFormat parsing doesn't break.

UTF-8 by default

Files are encoded in UTF-8, matching the default Java has used since Java 9.

Interpolation preserved

Positional {0} and named {name} placeholders stay intact through auto-translation.

End-to-end workflow

Translate a properties file end to end

Upload a source messages_en.properties file, translate values while keeping interpolation intact, and download one file per language.

Terminal
simplelocalize upload \ --apiKey PROJECT_API_KEY \ --uploadFormat java-properties \ --uploadPath ./messages_en.properties
simplelocalize upload \
  --apiKey PROJECT_API_KEY \
  --uploadFormat java-properties \
  --uploadPath ./messages_en.properties

Upload your source properties file

1
Push messages_en.properties to SimpleLocalize with the CLI. Comments and {0} / {name} interpolation import as-is.
Terminal
simplelocalize download \ --apiKey PROJECT_API_KEY \ --downloadFormat java-properties \ --downloadPath ./messages_{lang}.properties \ --downloadOptions ESCAPE_SINGLE_QUOTES
simplelocalize download \
  --apiKey PROJECT_API_KEY \
  --downloadFormat java-properties \
  --downloadPath ./messages_{lang}.properties \
  --downloadOptions ESCAPE_SINGLE_QUOTES

Keep Spring Boot's MessageSource happy

2
If you use Spring's MessageSource, add ESCAPE_SINGLE_QUOTES on export (and UNESCAPE_SINGLE_QUOTES on import) so quotes survive MessageFormat parsing.
messages_pl.properties (auto-translated)
user.hello=Witaj, {0} login.title=Zaloguj się
user.hello=Witaj, {0}
login.title=Zaloguj się

Auto-translate every language

3
Run DeepL, Google Translate, OpenAI, Claude or Gemini across every target language, then review in the editor before anything is marked ready.
Terminal
simplelocalize download \ --apiKey PROJECT_API_KEY \ --downloadFormat java-properties \ --downloadPath ./messages_{lang}.properties
simplelocalize download \
  --apiKey PROJECT_API_KEY \
  --downloadFormat java-properties \
  --downloadPath ./messages_{lang}.properties

Download one file per language

4
Export lands as messages_{lang}.properties, ready to drop next to your existing bundles with no renaming step.

UTF-8 by default, XML on request

Java Properties files historically used ISO-8859-1 encoding, limited to a small character set. Since Java 9, the default changed to UTF-8, and SimpleLocalize encodes every properties file in UTF-8 to match. If your app still expects the older default, set the encoding explicitly.

A lesser-known option: *.properties content can also be represented as XML, using a <properties> root and one <entry> per key, still loadable through Java's native Properties class.

Properties as XML
<?xml version="1.0" encoding="utf-8"?> <properties> <entry key="hello-world">Witaj Świecie</entry> <entry key="sign-in">Zaloguj się</entry> </properties>
<?xml version="1.0" encoding="utf-8"?>
<properties>
  <entry key="hello-world">Witaj Świecie</entry>
  <entry key="sign-in">Zaloguj się</entry>
</properties>

For developers

A localization platform,
Spring Boot included

The details that break a hand-edited properties file are handled automatically on import and export.

Automatic character escaping

Special characters like tabs, newlines, # and = are escaped on export and unescaped on import, by default.

Spring Boot quote handling

Optional import and export options keep single quotes safe with Spring's MessageSource, so MessageFormat parsing doesn't break.

AI auto-translation

Translate new and changed messages with DeepL, Google Translate, OpenAI, Claude or Gemini.

CLI and REST API

Upload and download properties files from the CLI, or automate the same logic through the REST API.

SimpleLocalize connects your code to professional translations

Every JVM language

Where Java Properties is used

Read natively by every JVM-based language, and used for configuration as well as translations.

Java

Java

Spring Boot

Spring Boot

Play Framework

Play Framework

Micronaut

Micronaut

libGDX

libGDX

Quarkus

Quarkus

Android

Android

Scala

Scala

Kotlin

Kotlin

Groovy

Groovy

Not the only option

Alternatives to Java Properties

Property files are the JVM default, but SimpleLocalize supports the same project in any of these formats too.

Start translating Java Properties files

  • Character escaping and Spring Boot quote handling built in
  • UTF-8 by default, one file per language
  • Auto-translation with DeepL, Google, OpenAI, Claude and Gemini
Start for free
No credit card required5-minute setup
"The product
and support
are fantastic."
Laars Buur|CTO
"The support is
blazing fast,
thank you Jakub!"
Stefan|Developer
"Interface that
makes any dev
feel at home!"
Dario De Cianni|CTO
"Excellent app,
saves my time
and money"
Dmitry Melnik|Developer

Frequently asked questions about Java properties files

Are special characters escaped automatically?

Yes. Characters like \t, \n, \r, \f, backslash, # and = are escaped on export and unescaped on import by default, with no configuration needed.

How do I keep single quotes working with Spring's MessageSource?

Add the ESCAPE_SINGLE_QUOTES export option (and UNESCAPE_SINGLE_QUOTES on import) so single quotes survive MessageFormat parsing, and remember to set alwaysUseMessageFormat to true in your bean configuration.

What encoding does SimpleLocalize use?

UTF-8, matching the default Java has used since Java 9. Older ISO-8859-1 based projects should set their encoding explicitly if they haven't migrated.

Which frameworks use Java properties for translations?

Any JVM-based application: Java, Spring Boot, Kotlin, Scala and Groovy projects, plus tools like the Thymeleaf template engine, all read translations from .properties files.