Translate YAML
Locale Files

Upload your .yml files, edit or auto-translate in the browser, and export back to the structure your app expects.

No credit card required14-day free trialTracking-free service
translations.en.yml
# Authentication screen auth: login: title: Sign in to your account email_label: Email address password_label: Password submit: Log in forgot_password: Forgot your password? register: title: Create an account submit: Sign up # Dashboard dashboard: welcome: Welcome back, {name}! notifications: empty: You have no new notifications unread: You have {count} unread notifications
# Authentication screen
auth:
  login:
    title: Sign in to your account
    email_label: Email address
    password_label: Password
    submit: Log in
    forgot_password: Forgot your password?
  register:
    title: Create an account
    submit: Sign up

# Dashboard
dashboard:
  welcome: Welcome back, {name}!
  notifications:
    empty: You have no new notifications
    unread: You have {count} unread notifications

Why teams use YAML for translations

YAML uses indentation instead of braces and commas, so translation files stay readable the same way a Rails or Symfony locale file looks in a code editor. That readability is also why YAML is a good format for reviewing translation changes in a pull request: a one-line edit shows up as a one-line diff, not a wall of reformatted JSON.

On import, a nested key like home: interface: signup is recognized automatically and joined into a single home.interface.signup translation key. Export it back to plain YAML, or turn on a nested export and get the original indentation-based structure again.

translations.yml (multi-language)
en: hello-world: Hello World! home.interface.signup: Signup pl: hello-world: Witaj świecie! home.interface.signup: Zarejestruj się
en:
  hello-world: Hello World!
  home.interface.signup: Signup
pl:
  hello-world: Witaj świecie!
  home.interface.signup: Zarejestruj się

No file restructuring

However your project stores translations, we read it

YAML translation files come in more than one shape. SimpleLocalize supports the common ones on both import and export.

One file per language

The default layout: translations_en.yml, translations_pl.yml, and so on.

Multi-language file

Every language in one file, grouped under a top-level en:, pl:, es: block.

Nested export

Get indentation-based nesting back on download, instead of flat dot-notation keys.

Nested languages

Combine nesting and multi-language output, with each language nested under its key.

Translate a YAML file end to end

Terminal
simplelocalize upload \ --apiKey PROJECT_API_KEY \ --uploadFormat yaml \ --uploadLanguageKey en \ --uploadPath ./translations_en.yml
simplelocalize upload \
  --apiKey PROJECT_API_KEY \
  --uploadFormat yaml \
  --uploadLanguageKey en \
  --uploadPath ./translations_en.yml

Upload your source file

1
Push your English (or any source language) YAML file to SimpleLocalize with the CLI, or drag and drop it into the web editor. Nested keys are recognized and joined with a dot automatically.
Project languages
Source language: en Target languages: - pl (Polish) - de (German) - es (Spanish) - fr (French)
Source language: en
Target languages:
  - pl (Polish)
  - de (German)
  - es (Spanish)
  - fr (French)

Add your target languages

2
Choose which languages you're shipping in the project settings. Every imported key is now ready for translation across all of them, with the source text shown for reference.
translations.pl.yml (auto-translated)
auth: login: title: Zaloguj się do swojego konta email_label: Adres e-mail password_label: Hasło submit: Zaloguj forgot_password: Nie pamiętasz hasła?
auth:
  login:
    title: Zaloguj się do swojego konta
    email_label: Adres e-mail
    password_label: Hasło
    submit: Zaloguj
    forgot_password: Nie pamiętasz hasła?

Auto-translate, then review

3
Run auto-translation with DeepL, Google Translate, OpenAI, Claude or Gemini to fill in every language in one pass, then have a reviewer step through the QA checks before anything ships.
Terminal
simplelocalize download \ --apiKey PROJECT_API_KEY \ --downloadFormat yaml \ --downloadPath ./translations_{lang}.yml \ --downloadOptions WRITE_NESTED
simplelocalize download \
  --apiKey PROJECT_API_KEY \
  --downloadFormat yaml \
  --downloadPath ./translations_{lang}.yml \
  --downloadOptions WRITE_NESTED

Download in the shape you need

4
Export one file per language, or every language combined, flat or nested. The output matches whatever your app's YAML loader already expects, no post-processing required.

For developers

A localization platform,
not just a file converter

A YAML file gets your team to the first upload. SimpleLocalize covers everything after: translation, review and automation.

CLI and CI/CD sync

Keep YAML files in sync with a couple of commands, so translations can be pulled into any pipeline alongside your code.

AI auto-translation

Translate new strings with DeepL, Google Translate, OpenAI, Claude or Gemini, then review before publishing.

Editor built for teams

Invite translators and reviewers into one shared editor, with comments, history and QA checks along the way.

REST API for automation

The same import and export logic is available over the REST API, so a script or a backend job can sync files without the CLI.

SimpleLocalize connects your code to professional translations

More conversions

Convert YAML to other formats

Free online converter, no account required. Upload a YAML file and download it in the format you need.

Start translating YAML files

  • Nested keys recognized on import, restored on export
  • One file per language, or every language combined
  • 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 YAML translations

Does SimpleLocalize keep my nested YAML structure?

Nested keys are joined with a dot into a single key on import, so they are editable like any other key. Add the WRITE_NESTED option on export to get indentation-based nesting back.

Can I keep all languages in one YAML file?

Yes, with the MULTI_LANGUAGE option: one file with a block per language code. Combine it with LANGUAGES_NESTED to nest the language codes under each key instead.

Which frameworks use YAML for translations?

Ruby on Rails and Symfony both use YAML as their default locale format, and static site generators like Jekyll and Hugo use it for page and content translations.

Does auto-translation change my keys or structure?

No. Auto-translation only changes the string values. Keys and the export structure you choose stay exactly as configured.