How To: Contributing Language Translations to FreeNAS

FreeNAS is used in 99% of the countries in the world, and after almost nine years in service and countless community contributions, the legacy FreeNAS GUI was translated into over 50 languages. With the 11.2 Release, a shinier, snappier, and more user-friendly Angular-based GUI was introduced. As with any major GUI rewrite, it requires that translations be updated to match. We have a few done so far, but we could use help making sure our users around the world can still use FreeNAS in their native language. If you are a multilingual FreeNAS fan, a great way to get involved and help contribute is to assist in the translation from the original English into another language. 

We’ve made this process very simple. Here’s how you can contribute:

First, you’ll need to log into GitHub, and create a “fork” of the FreeNAS webui repo: 

https://github.com/freenas/webui

In the new repo fork, go to the “src/assets/i18n” directory and select a language file to see translations from English to that language. For example, “fr.po” is for English to French translations.


Clicking the “Edit” icon within the GitHub interface takes you to a web-based file-editor, allowing you to translate the file directly. The file is filled with strings that look like this:

msgid ” Check Notifications for more details.”

msgstr ” Consultez la section notifications pour plus de détails.”

In this example, the tag “msgid” contains the original English string that is being replaced by a French translation. The next line contains “msgstr”, which is the translated string that appears in the UI when “French” is chosen as the default language.

There are many text strings to translate from English, so it’s usually not optimal to try and do them all at once. It’s a good idea to periodically save your work by filling the form at the bottom of the webpage and clicking “Commit changes”.

When you’ve made significant progress on translating text strings, the last step is to send your translations to us to include in the product. Go to your GitHub repo and find the option on the first page to create a pull request. This is how you can get your changes merged into FreeNAS and ready for the next major release. 

For more details about translating FreeNAS, see the “Translation” section of the FreeNAS User Guide.

3 Comments

  1. Evert van den Bos

    Good call. I have not much need for a translation myself. I am pretty much used to it that most of the software and tools I use are in English anyway, but I can see how it would be usefull for a lot of people. So I start with the translation to Dutch today. Cheers.

    Reply
  2. Evert van den Bos

    So I started with the translation to Dutch. And almost immidately I have a couple of questions:

    One is about context. Is there any quick way to get insight of what message is related to what function so I can see it in the right context? Take for example the word “service”. In Dutch I can translate that to several words and even phrases all depending on the context.

    Another question is about the length of a line and the number of lines within a message to translate. I attempt to copy the same structure as the english messages but sometimes I just need more words in Dutch to express the correct meaning. Is it better to add an extra line (my preferred choise) or is it better to just put in a longer line? In other words: what are the limitations for the lenght of a line and the number of lines within a message?

    Reply
  3. Evert van den Bos

    Two more questions I am afraid. Sorry if I strech your resources.

    Is the message system able to handle diacritics? It can be important for the meaning to use them. For example “één” translates as “one” in English while “een” translates as “a” in English.

    Are the labels for the button faces etc. in the translation as well? Some of the messages are relating to clickable stuff like buttons and I am not sure if I should translate them as well. It’s kind of odd to translate a label in the message if the label itself is not translated.

    Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

iXsystems values privacy for all visitors. Learn more about how we use cookies and how you can control them by reading our Privacy Policy.