Translation Projects - General Information


In this article you will find the most common questions and general information about the Translation Projects, conducted in the Beta Forum, in the Translations section. We will continue to update this article as we go along.

Table of Contents

1. General Information

2. Rules of the Game

3. Our Projects

4. FAQs & General Considerations

5. Related Material

General Information

Back to Top

Translations are done in a Web Based Application called OneSky. To access the different projects you must be added by a Admin. If you are a native speaker of another language (other than English) and you wish to become involved in the Translation Project, you can volunteer in the appropriate thread in the Translation forum, or by contacting UBNT-AlexCaldas in the Community. You will have to have Beta access to participate in the project, and to be able to see the Translation forum. If you're not sure how to get Beta access, take a look at this article: How To Sign Up for Beta Access.

A small guide to start using OneSky can be found here. But an important point I would like to emphasize is that you just need to save your translated phrase by clicking on the checkmark, there is no need to finalize each phrase.

Rules of the Game

Back to Top

1) Moderators and Translators: We accept any number of volunteers in each language team. There will be one moderator appointed for each language. The moderator's main tasks will include:

  1. Finalize a phrase after discussing different options with the team. Note: phrases should only be finalized in cases in which several possible translations have been discussed by the language team, and a consensus has been reached. There is no need to finalize all phrases.
  2. Being the main point of contact between UBNT and the language team.
  3. Keep harmony and consistency in the translation. The language team may use the suggestions that appear in the right bar of the translating screen. Note: always review the accuracy of the suggestion before selecting it.

2) Discussions specific to one language should be taken care of in a separate thread or via OneSky Comments. This in order to keep email notifications of big threads to the minimum. Some existing language-specific threads:

3) That being said, be patient with one another! Sometimes a new translator doesn't know where to post a question, or one of our translators who are alone in their language doesn't have anyone else to ask. Be team-players.

4) If you disagree with someone's translation and want to change it, leave a comment on OneSky so they understand why and be open to discuss alternatives. Remember different countries or regions might have different ways of saying the same thing. Be open-minded. The Moderator will take everyone's vote in consideration and make the final decision, finalizing the phrase if necessary.

5) Make sure to enjoy this project! Remember this is all volunteer work! I appreciate what you all do so much, and I enjoy working with all of you. But I want to make sure that you do too. 

Our Projects

UniFi Controller  |  UniFi Hotspot  |  UniFi SDN  |  UniFi Cloud Key  |  Account  |  UCRM  |  airFiber WebUI

Back to Top

UniFi Controller 14,473 words* · Community Thread  ·  OneSky Project

Called just UniFi in OneSky. This is the translation of the UniFi Controller. It is our biggest project, the one with most active translators and most regular updates.


To change the language in the Controller. Go to the upper right hand corner, click on your username and select Preferences. Select the language from the drop-down menu. Close the Preferences screen by clicking on the X. 

How to check context and updated translations

For the UniFi controller translation there are several options. You can check the last updated version in the demo controller. Or you can get the most updated translations and upload them locally in your Controller.

To do so, follow these steps:

1. Contact UBNT-AlexCaldas and request for the translation file for your language. She will download it and send it to you. Before you can upload it in your controller you must prepare the files as follows:

2. Once you unzip the file, you will see 39 folders with different names, but inside each folder all the json files will have the same name (the abbreviation for your language). You need to change each json file name, to match the name of the folder it is in. 


3. Once you do that to all files in all folders, it will look like this: 


4. Next, transfer all json files out of those individual folders and into one same folder and name it with the abbreviation of your language. (In this example, it would be "de_DE" for German). You should have 39 files (or just the same number as there were folders originally) in this new folder you just created. 


5. Folder is ready, now follow these instructions to upload it in your Controller:

To test it on Mac:

  1. Stop UniFi Controller
  2. Find "" in Finder ("/Applications/")
  3. Click right mouse button on "" and select "Show package contents" - it should open new finder window with content of UniFi app
  4. Navigate to "/Applications/"
  5. Unpack attachment and move unpacked folder ("de_DE") to "/Applications/" (you have to confirm it as administrator)
  6. Rename "en" folder as "en-copy" (you have to confirm it as administrator) - you will need to restore English translations, so make sure that you followed this step
  7. Rename "de_DE" folder as "en" (you have to confirm it as administrator) - we are going to override English translations with German
  8. Start Controller and test changes
  9. When you are done with testing:
    • Stop UniFi Controller
    • Go back to Finder window with "/Applications/"
    • Remove "en" folder  (you have to confirm it as administrator)
    • Rename "en-copy" to "en" - this should restore original english translations

To test it on Windows:

  1. Stop UniFi Controller
  2. Navigate to "C:\Users\{user_name}\Ubiquiti UniFi\webapps\ROOT\app-unifi\locales\" - note that {user_name} should be replaced with actual user name
  3. Unpack attachment and move unpacked folder ("de_DE") to "C:\Users\{user_name}\Ubiquiti UniFi\webapps\ROOT\app-unifi\locales\"
  4. Rename "en" folder as "en-copy" (you have to confirm it as administrator) - you will need to restore English translations, so make sure that did this step
  5. Rename "de_DE" folder as "en" - we are going to override English translations with German
  6. Start Controller and test changes
  7. When you are done with testing:
    • Stop UniFi Controller
    • Go back to "C:\Users\{user_name}\Ubiquiti UniFi\webapps\ROOT\app-unifi\locales\"
    • Remove "en" folder  (you have to confirm it as administrator)
    • Rename "en-copy" to "en" - this should restore original english translations

To test on Linux:

1. Copy the file to you linux machine. Put it in the /tmp folder.

2. Extract the file with (depending on the file name) unzip

3. Backup the original folder sudo cp -avr /usr/lib/unifi/webapps/ROOT/app-unifi/locales/nl /usr/lib/unifi/webapps/ROOT/app-unifi/locales/nl.old

4. Remove al original files from the language folder sudo rm -f /usr/lib/unifi/webapps/ROOT/app-unifi/locales/nl/*.json

5. Copy all json files to the language folder sudo find /tmp/UniFi/ -name '*.json' -exec cp {} /usr/lib/unifi/webapps/ROOT/app-unifi/locales/nl  \;

6. Restart the controller sudo service unifi restart

How to See String Keys in the Controller

The UniFi devs created a special view for Translators. It is a hidden toggle in Preferences that will expose the string keys in the Controller instead of the phrases. It will appear in Preferences when you go in your browser (Chrome was used, and this is an older version of the Controller, the images will be slightly different to what you say nowadays) into View > Developer > Developer Tools > Console tab. Type in showHiddenPreferences=1 and hit enter. Voilà! If you click on the Preferences window again, you will see a switch called Debug translation key.  


Switch the toggle to On and there you go. You will have to repeat this again to make the hidden switch appear again so you can turn it off for your controller to return to normal. 


This works with Controller versions 5.4.7 and newer. If you have the correct version but it's still not working, try turning on the Force WebRTC On before launching your Controller, as shown below. 


UniFi Hotspot Portal  345 words* · Community Thread  ·  OneSky Project

The Hotspot Portal project creates translation options for the client's of the UniFi controller hotspot.

UniFi SDN 2,221 words* · Community Thread  ·  OneSky Project

The landing page of from where you can see your different controllers and you launch them. Change the language by clicking on your username avatar in the upper right hand corner, selecting Preferences and changing the language in the drop-down menu.


UniFi Cloud Key 660 words* · Community Thread  ·  OneSky Project

Another small project, will eventually translate the Configure your UniFi Cloud Key UI to match the translations done in the rest of UniFi. Waiting on devs to make a new release and add translations.

Account 451 words* · Community Thread  ·  OneSky Project

A small project, this is the translation for the login page for To change the translation, click on Language at the bottom of the screen, next to Terms of Service and Privacy Policy.


UCRM 8,615 words* · Community Thread  ·  OneSky Project

Our second biggest project. It is a WISP Management Tool, so there is some financial language mixed in with the usual networking language.

How to check context and updated translations

You may go to and use the credentials given in the login page. To change the language, go to System > Settings > Localization and change the Language from the drop-down menu, click Save. We all share the demo environment, so when someone changes the language we all see it. So, after using it to check your translation, make sure to switch the language back to English for the next user.


Some UCRM specific considerations

1. For phrases such as #30172926, translate around the > code: "Settings → Maintenance → Prepare an Export" So, in this case, you would translate the words in red:

Settings → Maintenance → Prepare an Export

2. Pluralization! If you encounter crashes (error 500) it may be caused by a missing translation for pluralization phrases for your language. For example, phrase #30175047:

%count% item|%count% items

In English, there are two forms, as you can see, separated by the pipe |

In your language, there might be more forms. If that's the case, please add the other forms separated by the pipe character. For example in Czech:

%count% polozka|%count% polozky|%count% polozek

The first one is for 1, second for 2-4, the last for 5-inf.

The proper translation will be automatically chosen (if they are ordered ascending), you just need to define all of them for your language. More info for this issue can be found here:

Read full post here

3. The word client actually means client, unlike the rest of the translations we've worked on, where client=device. In UCRM "client" refers to the WISP's customer.

airFiber WebUI 3,121 words* · Community Thread  ·  OneSky Project

The newest project. Just beginning now, it's the airFiber UI. To switch languages, we must contact @UBNT-Salvador and have him do it manually. To see the demo, go here:

username: ubnt

password: ubnt2017

FAQs & General Considerations

Back to Top

1. The infamous ON/OFF Toggle

2. What part of the macros do I need to translate?

3. Are there any macros I need to be extra careful with?

4. Do I need to Finalize my phrases on OneSky to save them?

5. How do I ensure consistency in my translation?

1. The infamous ON/OFF Toggle


In most translation projects you will bump into the ON/OFF Toggle. These are usually found in the Preferences panel of the GUI. On OneSky, it will just look like you're translating the word On, and then separately, translating the word Off. The toggles all follow the same graphic look, and will fit three characters at most. Pretty much all languages except English will have longer words for ON/OFF than that. This is what the Portuguese translation looked like when they translated On / Off as Ligado / Desligado:


Unfortunately, changing the size or shape of the toggles is not a possibility. Instead, you have three options:

  1. Just leave it as "On/Off" if you think it would be acceptable in your language. ON/OFF is pretty universal.
  2. Some translators opted for translating it to their language but shortening the word. In Portuguese, "Ligado/Desligado" became "LIG./DES."
  3. Find alternative words: yes/no, active/inactive, enable/disable...any of those and then maybe shortening it if necessary.
  4. You know your language and your people best. What would they understand the easiest? There is no right or wrong answer, adapt this to your language the best way you can.

Back to FAQs & General Considerations

2. What part of the macros do I need to translate?

All GUIs will have some bracket-filled phrases that make no sense. These are macros. We can't translate everything, otherwise the system will not find the word it is searching for to substitute it with each specific case. To find macros, you may use the search bar on OneSky and search for double closing brackets: }}, or for the pluralized macros, search for the word plural.


Everything in the inner brackets { } should be translated. In these examples, everything in red must be translated:

(UniFi Controller project, phrase #31488825)

{count, plural, one{1 IP address is} other{# IP addresses are}} invalid and must be fixed before this form can be submitted. Some errors may be on another page.

so, in Spanish this would be translated as:

{count, plural, one{1 dirección IP es inválida} other{# direcciones IP son inválidas}} y deben arreglarse antes de poder enviar este formulario. Algunos errores pueden estar en otra página.

These are a few common ones:

{count, plural, one{1 device} other{# devices}}?

{count, plural, one{1 client} other{# clients}}? 

or a longer phrase inside the innermost brackets:

{count, plural, one{is one item} other{are # items}}

What you would NOT translate are those in double brackets, but where there is no "inner bracket" phrase, these are placeholders and we don't translate them ever:

Send beacons at {{rate}} Mbps

You can't select the range greater than {{maxDays}} days.

Are you sure you want to force provision {{deviceName}}?

{{percent}}% Utilized

Some languages have more complicated pluralization than English. For example, look at the following phrase (UniFi project, phrase #23402489) used in the green health dials in the dashboard of the UniFi Controller.

In English, it's a pretty simple phrase. Where "active" won't change if it's one or more devices.

active {NUMBER, plural, one{device} other{devices}}


In Spanish however, the word for "active" also changes along with "device" if it's plural. The order of the words would also need to change: noun - adjective, instead of adjective-noun as in English. So the macro was modified in the following way to make it appear correctly in the dashboard as is seen in the image below.

{NUMBER, plural, one{equipo} other{equipos}} {NUMBER, plural, one{activo} other{activos}}


To translate it correctly to Czech, it's a completely different game: there is a different word for "active" depending on how many devices there are. If there is 1-4 devices it's one word, 5 or more it's another. So the Czech translator adjusted the macro like so, to get the results you see in the image below:

{NUMBER, plural, one{aktivní zařízení} =2{aktivní zařízení} =3{aktivní zařízení} =4{aktivní zařízení} other{aktivních zařízení}}


Whenever you change a word within a macro, you will get a warning that says: "Missing Placeholders: {NUMBER, plural, one{device} other{devices}}". You can click Save anyway after checking you have only translated the correct part of the phrase as described above. Macros are definitely tricky, and there isn't one clear rule for all. When in doubt, feel free to ask. 

Back to FAQs & General Considerations

3. Are there any macros I need to be extra careful with?

Yes! This happened specifically in the UniFi Controller translation, but you will want to be careful whenever you see a word attached to a macro. So User  [{{user}}] is not dangerous, you would translate the first User and leave the one inside the brackets in English. But, if it's User[{{user}}with no space between it, it's either a typo (missing space), or the whole thing is a macro that the system will search for to substitute with the localized info.

For example, there was an issue with the Events window in the UniFi Controller. When the user was using another language other than English, the names and link of the device clients weren't appearing. Instead, the controller was showing the MAC address. Compare the images below. 

In the English version (and the correct way it should appear):


This is what the Spanish translation looked like (notice the second event at 10:54 am):


This occurs when we translate the words that, although outside of the brackets [ ], are adjoining. The whole phrase is a macro. For example, look at the second event, at 10:54 am shown in my images above. In OneSky, that would be phrase ID# 23357820, UniFi project.


The way it appears in the English version is the way it should always work: the controller replaces User[{{user}}] with the alias (in this case my Kindle Smiley LOL) and the link to access this client's property panel. But in the second image, the Spanish translation, it doesn't find User[{{user}}], so it leaves El usuario and just plugs in the MAC address in place of [{{user}}]

The solution: leave the User[{{user}}part without translating, after all, that will not appear in the controller in your language, it will be replaced by the alias of the client as it does in the English version.  

Read a little more in the forum post

Back to FAQs & General Considerations

4. Do I need to Finalize my phrases on OneSky to save them?

 No. To save a translated phrase simply click on the checkmark in the blue box, or hit TAB to move on to the next phrase. Once you do, the option to "Finalize" will appear. This will lock the translation in place and only another Moderator or Admin will be able to "Unfinalize" the phrase to unlock it. Not only is it more time consuming to Finalize phrases, it is also more troublesome to correct them. So only Finalize a translation if there has been discussion and back and forth changing of a phrase.


Back to FAQs & General Considerations

5. How do I ensure consistency in my translation? 

One common issue is keeping consistency of a word throughout a project, or a phrase. There are many ways of translating a confirmation phrase like: "Are you sure you want to (delete/upgrade/forget/adopt) the client?" It will be important to translate the "Are you sure you want to" the same way throughout the project. This is specially difficult if there are several different people translating at the same time. You can use the Translation Memory section in the Suggestions bar at the right of the OneSky screen. This will give you suggestions of how a similar phrase has been translated in other Ubiquiti projects. You select the one you like by clicking on the translated phrase, and saving.

info_i_25x25.png Note: Always double-check the Suggested phrase you are selecting. OneSky will recommend similar phrases that may contain a few words in common, but not all.

*Number of words for each project is an approximation. This number will vary as more phrases are added or the original ones are updated. 

Back to FAQs & General Considerations

Related Material

Back to Top

Translation Community Forum

UniFi Translations & General Info Community Thread

UCRM Translation Community Thread

airFiber Translation Community Thread

Powered by Zendesk