# Localization

Localized to Japanese

## Localize to another language Set the `localization` [form setting](https://docs.forms.md/getting-started/settings) to a supported language code and write your questions, descriptions, etc., in that language—everything will be automatically translated. Here's an example form in Japanese: ```javascript import { Composer } from "formsmd"; const composer = new Composer({ id: "my-form", localization: "ja" }); composer.opinionScale("nps", { question: "当社の製品を友人や同僚に推薦する可能性はどの程度ありますか?", required: true }); ``` Generates the following Markdown-like syntax: ``` #! id = my-form #! localization = ja nps* = OpinionScale( | question = 当社の製品を友人や同僚に推薦する可能性はどの程度ありますか? ) ``` *** ## Supported language codes The following language codes are supported: | Language | Code | | ------------------------------------------------------------------------------------------------------------ | ------ | | English (default) | `"en"` | | Arabic (please also set the `dir` [form setting](https://docs.forms.md/getting-started/settings) to `"rtl"`) | `"ar"` | | Bengali | `"bn"` | | German | `"de"` | | Spanish | `"es"` | | French | `"fr"` | | Japanese | `"ja"` | | Portuguese | `"pt"` | | Mandarin Chinese | `"zh"` | *** ## Dynamic translations Use the handy `translate()` function to define all of the translation strings as you create the form. Here's the function overview: ``` translate(localization: string, translations: object) ``` It takes the ISO alpha-2 language code as the first argument (`localization`) and an object of `translations` as the second argument. In the example below, the form will be in English or Japanese depending on the language code in the user's local storage (so user preference). ```javascript import { translate, Composer, Formsmd } from "formsmd"; function getFeedbackFormTemplate(localization) { // Pass the localization as a form setting const composer = new Composer({ id: "my-form", localization: localization }); // Define the translations in the opinion scale function composer.opinionScale("nps", { question: translate(localization, { en: "How likely are you to recommend our company's products to friends and colleagues?", ja: "当社の製品を友人や同僚に推薦する可能性はどの程度ありますか?" }), required: true }); return composer.template; } // Pass the localization from local storage const formsmd = new Formsmd( getFeedbackFormTemplate(localStorage.getItem("localization")), document.getElementById("my-form-container"), {} ); formsmd.init(); ```

Form in English

Same form in Japanese

*** ## Adding support for a new language In order to add support for a new language, the language needs to be added to the `translations` object in the [`src/translations.js`](https://github.com/formsmd/formsmd/blob/main/src/translations.js) file. The key for this entry would be the language code, and the value would be a JSON object containing translations required for creating the forms. Once this entry is in place, the language would be supported after the project is rebuilt using `npm run build`. {% hint style="info" %} If you want a specific language to be supported, please create a PR by adding an entry in [`src/translations.js`](https://github.com/formsmd/formsmd/blob/main/src/translations.js), or just create an issue containing all of the relevant translations. {% endhint %}