LogoLogo
WebsitePricingGitHubSign up
  • Getting started
    • Installation and usage
    • Form settings
    • Options
    • Frequently asked questions
    • Spam protection
    • React
  • Customization
    • Theming
    • Localization
  • Input types
    • Text input
    • Email input
    • URL input
    • Telephone input
    • Password input
    • Number input
    • Select box
    • Choice input
    • Picture choice
    • Rating input
    • Opinion scale / Net Promoter Score®
    • Datetime input
    • Date input
    • Time input
    • File input
  • Content
    • Slide
    • Start slide
    • End slide
    • Markdown
    • Data binding
    • CSS utility classes
  • Integrations
    • Google Sheets integration
Powered by GitBook

© 2025 Forms.md | All rights reserved

On this page
  • Localize to another language
  • Supported language codes
  • Dynamic translations
  • Adding support for a new language

Was this helpful?

  1. Customization

Localization

Localize and translate your forms to other languages.

PreviousThemingNextText input

Last updated 4 months ago

Was this helpful?

Localize to another language

Set the localization 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:

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"

"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).

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();

Adding support for a new language

Once this entry is in place, the language would be supported after the project is rebuilt using npm run build.

Arabic (please also set the dir to "rtl")

In order to add support for a new language, the language needs to be added to the translations object in the 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.

If you want a specific language to be supported, please create a PR by adding an entry in , or just create an issue containing all of the relevant translations.

src/translations.js
src/translations.js
form setting
form setting
Localized to Japanese
Form in English
Same form in Japanese