Best localization workflows for engineers?



  • Avatar

    Just thought I'd jump in and give our general work flow.

    For the most part, our workflow has three main parts.

    1. Generating PO files from code with the base language
    2. Uploading the base language to OneSky
    3. Downloading the translated PO files from OneSky and convert to the MO files that our 

    Whenever we deploy code to our servers we follow these steps to make sure that the languages are always using the most up-to-date translations from our translators.

    The code that we use for uploading and downloading the PO files is available publicly here.


    I suppose the only thing that might make this slightly quicker to use is if we could export a .MO file straight away.

  • Avatar

    Here is our workflow:

    1. Create a new project/subproject on OneSky web app
    2. Upload a hierarchical JSON file in the base language only once
    3. Translate by ourselves (specific business vocabulary)
    4. Download translations from API with Grunt plugin ( in separate locale JSON files
    5. Add/modify/delete keys on OneSky web app only
    6. Repeat 3 to 6

    The key fact is that we upload the base language only once in a project lifetime. After that, we only change the keys via OneSky interface. This to avoid conflicts between the source base language file and the translated base language file.

  • Avatar
    Maggie @ OneSky

    Thanks Grégoire! What language is your app built on and how did you generate that JSON file? 

  • Avatar

    Our base language is english, and our targeted languages are french, german and simplified chinese.

    Me made the JSON file manually. The keys are uppercased, with underscores between terms, like "MY_NEW_KEY". For plurals, we add "_plural" at the end. When we need more context, we make child objects. Then OneSky concatenates the tree by joining the terms with a dot, which gives for example: "PAGE1.HEADER.MENU.USER_plural".


  • Avatar
    sunny yadav

    Nice to share the here for fun.

Please sign in to leave a comment.