Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time

Fab-manager translation documentation

This document will explain you what you need to know to contribute to the translation process of Fab-manager.

Table of contents
  1. Translation
    1.1. Using a TMS
    1.2. Using In-Context translation
    1.3. From the files
    1.3.1 Front-end translations
    1.3.2 Back-end translations
  2. Configuration
    2.1. Settings
    2.2. Applying changes


Using a TMS

We use Crowdin, a translation management system (TMS) to simplify translator's job in Fab-manager. You can access it at and start translating to one of the already configured languages. If you want to translate Fab-manager to a new language, just send us an email to and we'll add this new language to the TMS.

Using In-Context translation

To translate the front-end application (angularJS client), and the notifications, you can use Crowdin In-Context. This allows you to use Fab-manager as normally, but with the addition of small "edit" icons on the top-left corner of each text blocs. Clicking on this "edit" icon will open the Crowdin translation interface and you'll be able to translate or modify existing translations directly. You can access it at

From the files

You should not translate Fab-manager from the source files, because it will conflict with the TMS. Please refer to the TMS method for more details.

Nevertheless, if you add a new feature that requires some new translations, just add them to the english files. You'll be able to provide translations for other languages later, using our TMS.

Moreover, if you want to improve the english texts, you'll need to modify the english files.

To add or edit the english translations, check the files located in config/locales:

  • Front app translations (angular.js) are located in config/locales/app.SCOPE.en.yml. Where SCOPE has one the following meaning :
    • admin: translations of the administrator views (manage and configure the FabLab).
    • logged: translations of the end-user's views accessible only to connected users.
    • public: translation of end-user's views publicly accessible to anyone.
    • shared: translations shared by many views (like forms or buttons).
  • Back app translations (Ruby on Rails) are located in config/locales/en.yml.
  • Emails translations are located in config/locales/mails.en.yml.
  • Messages related to the authentication system are located in config/locales/devise.en.yml.

To prevent syntax mistakes while translating locale files, we STRONGLY advise you to use a text editor which support syntax coloration for YML and Ruby. As an example, Visual Studio Code, with the Ruby extension and the YAML extension will do the job.

Front-end translations

Front-end translations uses angular-translate with interpolations interpreted by MessageFormat. Please read the documentation about the ICU MessageFormat syntax before writing new strings.

To translate existing strings, you should use our translation management system.

Back-end translations

Back-end translations uses the Ruby on Rails syntax but some complex interpolations are interpreted by MessageFormat and are marked as it in comments. DO NOT confuse the syntaxes.

In each cases, some inline comments are included in the localisation files. They can be recognized as they start with the sharp character (#). These comments are not required to be translated, they are intended to help the translator to have some context information about the sentence to translate.

You will also need to translate the invoice watermark, located in app/pdfs/data/. You'll find there the GIMP source of the image, which is using Rubik Mono One as font. Use it to generate a similar localised PNG image which keep the default image size, as PDF are not responsive.

Also, please create a base.LOCALE.yml and fill it with the time-only format in use in your locale.

Finally, add your new locale and its derivatives to the available_locales array in initializers/locale.rb to make it available in Fab-manager.


In development, locales configurations are made in .env. In production, locales configuration are made in the config/env file. If you are in a development environment, your can keep the default values, otherwise, in production, values must be configured carefully.


Please refer to the environment configuration documentation

Applying changes

After modifying any values concerning the localisation, restart the application (ie. web server) to apply these changes in the i18n configuration.