Effortless localization using Google Sheets

Use Google Sheets to store and manage your translation strings. Localeasy talks to the Google Sheets API, and formats your sheet to a localization resource you can use in your app or website.

Set up within minutes

Free of charge


Unlimited users

Change tracking


Familiar UI

CI integration

Set up within minutes

1Create a Google Sheet

Simply duplicate the template sheet, which is configured for two example languages: English and Dutch. You can change the languages you need by adding additional columns, and putting the language specifier in the header row.

Template sheet

2Add view-only rights for Localeasy

Go to the Share options of your sheet, and enable the public view-only link.

3Call the Localeasy endpoint

Make a GET request to https://localeasy.dev/generate, including the following query parameters

  • sheet: The ID of the Google Sheet that contains your translations.
  • format: The format of the translation file that you want to receive. Must be one of the supported formats.
  • locale: The locale that you want to receive. The value of this parameter must correspond to a column in your sheet.
  • nest-by: Optional - The separator you want to use if you want entries to be nested. See Advanced: nesting.
  • variant: Optional - The translation variant that you want to receive. See Advanced: variants.
  • gid: Optional - If you're using multiple tabs on one Google Sheet, this is the gid of the tab you want to use.

+Optional: Integrate with your build system or CI

Integrating this with your build system or CI is incredibly easy. Just make a curl request to the Localeasy endpoint and redirect the output to a file in your codebase!


Using the example sheet from step 1, we can retrieve a formatted .json file by making a GET request to this URL: https://localeasy.dev/generate?sheet=1lf71Q7J_By6_X46u-wisU5G3KoZx_uD8PX4PkYyVzOk&format=json&locale=en&nest-by=.&variant=web Try and see

Supported formats

Localeasy supports the following output formats:

Advanced features

Variants per platform

If you're sharing translations between multiple platforms, you might want to provide different translations per platform for some strings. For example, on iOS you want to refer to the "App Store", while on Android you want to refer to the "Play Store". Localeasy supports this using variants.

Each translation entry can have multiple variants, denoted by a hash symbol. For example: you can create two entries called mykey#ios and mykey#android. When calling the Localeasy endpoint, include the variant query parameter with either ios or android. Localeasy will then return the correct entries, stripping out the variant suffix.

Universal placeholders

When using the cocoa-strings format, Localeasy will automatically convert placeholders to the Cocoa specific format. This means you don't have to use %@ for iOS and %s for Android. You can always use the universal placeholder %s, Localeasy will take care of the conversion.


Some output formats support nesting of translation entries. Entries can be nested by specifying a separator in the nest-by parameter.