Lokalise supports most popular iOS, Android, and Web development string file formats. If you would like us to extend support to a new format or format version, just drop us a line.

Getting started

To get started, click the Upload menu item:

Alternatively you can use our CLI, API or GitHub/GitLab integrations to upload the files. Lokalise will match keys and translations from the files where possible.

Before uploading

To upload one or more files, click Select a file and choose them from your PC. It is also possible to choose the whole directory. Finally, you can click Copy-paste data and place file contents into the text box.

Lokalise will detect translation files languages automatically. Certain file formats provide language settings. If not, our system will use Google Translate detection engine to detect the proper language from translations. 

For compatibility reasons, Lokalise will also scan the filenames for language codes (marked in green below).

Once the detection is done, review the filenames and detected languages, and make corrections as needed. To rename a file, click on it an enter a new name:

In this example Lokalise automatically provided a special placeholder %LANG_ISO% which means "language ISO code". Thus, once you export translation keys, the language code will be inserted properly in the filename.

It is not mandatory to use a language code in filenames, however. If you keep files organized by folders with language codes, you can set the required bundle structure on the Downloads page later.

Upload options

There are a handful of upload options that you may enable or disable as needed:

  • Replace \n with line break — in some programming environments new line in the text is marked with a \n character. It simply means that the text after this character should start with a new line. However, it may confuse some interpreters. So it may be a good idea to get rid of \n and turn it into line breaks inside Lokalise editor. When you are going to export translations back, these line breaks can be replaced with \n once again.

  • Convert to universal placeholders — sometimes in your translations you may use special placeholders to represent a dynamically inserted value. You will probably want to store all platform keys in a single Lokalise project. However, each platform (say, Web or Android) requires placeholders to be written in a specific way. Conveniently, Lokalise allows to convert these placeholders into a universal format. When you export your translation files, these universal placeholders will be replaced back with platform-specific ones.

  • Detect ICU plurals — ICU is a special library for internationalization. ICU’s special format for plurals is widely used for representing word’s declension depending on some variable count. If you enable this option, Lokalise detects ICU expressions and shows them in the interface. To learn more about ICU message format, please check out our blog post.

  • Tag keys — if you would like to tag the affected translation keys, enable this option. Choose the existing tags or enter new ones. Then decide which keys should be tagged: inserted (newly created ones), updated (existing ones with the values being updated), or skipped (existing ones that were not modified).

  • Differentiate keys by file — enable this option if you don’t want to merge similar keys from different files. Remember that in Lokalise you are not working directly with the uploaded files. The platform extracts information from your files, parses it, stores it inside the system and exports it on demand by generating files again.

  • Fill empty keys with key names — if some keys do not have any value yet, the key itself will act as a value. You may update that value later, of course.

  • Hide from contributors — if you would like to make the newly added keys invisible to the project’s contributors, enable this option. In this case the keys will be visible to project admins only. Later the hidden keys can be made visible to everyone.

  • Custom translation statuses — this option will become visible only if you have enabled custom translation statuses feature in your project settings. When this option is checked, you'll be able to select which statuses should be assigned to inserted, updated, or skipped keys.

  • Enable automations — use automations for the uploaded keys. To learn more about automations, please check the corresponding documentation.

  • Pre-translate with 100% TM matches — while doing translations, you will probably find yourself in a situation when you are starting to translate the same phrases and sentences. Lokalise remembers your translations and analyzes match between the text you have already translated and text from the uploaded file. If the system detects a 100% match, it will automatically translate keys in the files you’ve uploaded.

  • Replace modified translations — suppose you are uploading a translation file which has a handful of translation keys that were already added to the project. By default, Lokalise uploader will keep the values under such keys intact. However, if you do want to update translations under already existing keys, enable this option.

  • Enable cleanup mode — when this option is enabled, Lokalise will delete all keys with their translations that are not found in the uploaded file. Be careful with this option! Before the upload happens, you will be asked to confirm deletion for extra protection. Please note that this mode takes filenames and platforms into consideration. Suppose, your project contains multiple keys assigned to a file named %LANG_ISO%.json and a handful of keys not assigned to any filename. If you upload a %LANG_ISO%.yml file containing new keys, all existing entries will be preserved as they are assigned to a different file (or not assigned to any file at all). However, existing entries assigned to the %LANG_ISO%.yml file will be removed.

Starting the upload

When all filenames and languages look correct, adjust the upload settings and click Import the files. The upload process will be performed in the background so you may navigate to another page. To view the status of your upload click More > Activity in the main menu.

Active processes tab lists all the currently running imports and other jobs. You may cancel the process by clicking the Cancel button.

Once the import finishes, the corresponding job will be moved under the Finished processes tab.

Click on a process to see more details:

  • What files were imported.

  • How many keys were inserted, updated, and skipped.

  • What languages were imported.

  • What was the status for each file.

To remove all finished processes from the list, press Clear. Please note, that all finished processes older than 48 hours will be automatically cleared from the list.

Custom language codes

If you are using a custom language code, e.g. sk-SK instead of the standard sk, please do the following after the upload succeeds:

  • Go to your project

  • Click on the language flag in the top menu

  • Choose Language settings...

  • Enable the Custom language code switch

  • Set the desired language code

Looking for CLI tool upload/download examples? Check out the Filenames article.

Did this answer your question?