# Developer's guide for internationalization *NOTE: All the files you created should be in UTF-8 encoding.* >**For the front-end i18n works,** 1. You need to create a JavaScript i18n source file under the diretory `/static/resources/js/services/i18n`, it should be named as `locale_messages__.js` with your localized translations. This file contains a JSON object named `locale_messages`, and the sample pattern should be like below, ``` var local_messages = { 'sign_in': 'Sign In' }; ``` **NOTE: Please refer the keys which already exist in other i18n files to make your corresponding translations as your locale.** 2. After creating this locale file, you should include it into the HTML page header template. In the file, `/views/sections/header-include.htm`. This template would be rendered by the back-end controller, with checking the current language (`.Lang`) value from the request scope, at each time there is only one script tag would be rendered at front-end page. ``` {{ if eq .Lang "zh-CN" }} {{ else if eq .Lang "en-US"}} {{ else if eq .Lang "-"}} {{ end }} ``` 3. Add the new coming language to the `I18nService` module. In the file, `/static/resources/js/services/i18n/services.i18n.js`, append new key-value item to the `supportLanguages` object. ``` var supportLanguages = { 'en-US': 'English', 'zh-CN': '中文', '-': '' }; ``` **NOTE: Don't miss to add a comma ahead of the new key-value item you've added.** >**For the back-end i18n works,** 1. Create a file under the directory `/static/i18n/`, named as `locale_-.ini`. **NOTE: Please refer the keys which already exist in other i18n files to make your corresponding translations as your locale.** 2. Add the new comming language to the `app.conf` file. In the file, `/Deploy/config/ui/app.conf`, append new item to the configuration section. ``` [lang] types = en-US|zh-CN|- names = en-US|zh-CN|- ``` >**Rebuild and start the Harbor project by using 'docker-compose' command.**