info_i_25x25.png Due to unforeseen weather conditions we are experiencing higher chat wait times. Remember you can also submit a ticket and one of our support representatives will get back to you as soon as possible. We apologize for the inconvenience.

Translation Projects - General Information


 Overview


In this article you will find the most common questions and general information about the Community Sourced Translation Projects, conducted in the Beta Forum, in the Translations section. The UBNT Translator Team is formed by Community users who volunteer their time and expertise to improve the UBNT experience for other users all around the world.

NOTES & REQUIREMENTS:
Please subscribe to this thread in the Community: Translations - General Information. This is where announcements are made. Comments are disabled in this thread so you won't receive unnecessary email notifications.

Table of Contents


1. General Information

2. Rules of the Game

3. FAQs & General Considerations

4. Our Projects

5. Terms and Conditions

6. Related Material


General Information


Back to Top

Translations are done in a Web Based Application called Transifex. We moved to Transifex from OneSky in February, 2018. See this thread for information specific to Transifex: Getting to Know Transifex . To access the different projects you must be added by an 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 need Beta access to participate in the project, and to be able to access the Translation forum. If you're not sure how to get Beta access, take a look at this article: How To Sign Up for Early Access.

These two articles are a good read to get you started on Transifex:

A useful link to have handy is the Microsoft Terminology Collection, when you're unsure of a technical term this can be used as a guide. In some countries IT language remains in English and that is acceptable if it is commonly known and referred to in this way. 


Rules of the Game


Back to Top

1) Language Coordinators, Reviewers and Translators: We accept any number of volunteers in each language team. The Coordinator's main tasks will include:

  1. Save a phrase after discussing different options with the team. Note: phrases that have been saved, cannot be changed by another Translator. Reviewers and Coordinators will be able to change saved translations.
  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 menu 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 Community thread. This in order to keep email notifications of big threads to the minimum. Some existing language-specific threads are the following, but either find yours or begin a new one for your language in Translations:

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 don't have anyone else to ask. Be team-players.

4) If you disagree with someone's translation and want to change it, use your language thread to discuss 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 Language Coordinator will take everyone's vote in consideration and make the final decision if a consensus cannot be reached. 

5) Unlike OneSky, Transifex phrase comments are shared by all languages, so be sure to post in English so everyone can join in on the conversation!

6) Make sure to enjoy this project! Remember this is all volunteer work! Feel free to contact me about anything pertaining Translations: 


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?

6. I have questions! Where and how to ask?


1. The infamous ON/OFF Toggle

Screen_Shot_2017-03-07_at_4.35.43_PM.png

In most translation projects you will bump into the ON/OFF Toggle. These are usually found in the Preferences panel of the GUI. On the translating platform, 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:

true.png

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?

Transifex has a very user friendly way of translating plurals. You can see a Community post about it here: Pluralized Phrases. And a Transifex help center article here. There will be cases where you still need to translate macros, read on for an explanation on that.

All GUIs will have some bracket-filled phrases that make no sense. These are macros with variables and placeholders. We can't translate everything, otherwise the system will not find the word it is searching for to substitute it with each specific case. 

Examples:

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, 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}}

Screen_Shot_2017-03-07_at_4.47.43_PM.png

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}}

Screen_Shot_2017-03-07_at_4.53.06_PM.png

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í}}

Screen_Shot_2017-03-07_at_4.40.28_PM.png

 


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):

Screen_Shot_2017-01-03_at_12.58.24_PM.png

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

Screen_Shot_2017-01-03_at_12.57.31_PM.png

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.

Screen_Shot_2017-01-03_at_1.05.16_PM.png

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

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 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. If you see a suggestion in this section that is incorrect, please tag UBNT-AlexCaldas on the community and let me know! We can clean these up so they don't appear any longer, or even add the word we WANT Transifex to suggest.

info_i_25x25.png Note: Always double-check the Suggested phrase you are selecting. Transifex 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

6. I have questions! Where and how to ask?

All questions are welcome! The best place to ask is in the Translations forum, in the specific thread for that project. So if it's a UCRM translation project question, ask it in the UCRM thread. Feel free to tag me (UBNT-AlexCaldas) if needed, or whichever UBNT developer is mentioned in the introductory post of that thread. Or if not, just go ahead and ask, your fellow translators will come to the rescue. Always include the project name, the Transifex phrase ID, as well as the phrase itself. This makes it easier and faster to get responses and will later on help others find answers.

On that topic: before you ask, always search. You can search for the phrase using the Community's regular search bar.

info_i_25x25.png Note: Do not use the phrase ID number, for some reason the Community does not like searching for numbers and you will not find anything.

To make it easier, make sure to narrow down the search by filtering with Location > BETA > Translations, and you will always find the answers in the thread's Replies, so expand by clicking on Show results in replies.

Screen_Shot_2017-10-11_at_3.26.35_PM.png

Click image to view in large in a new tab.


Back to FAQs & General Considerations


Our Projects

UniFi Controller  |  UniFi Hotspot  |  UniFi SDN  |  UniFi Cloud Key  |  Account  |  UCRM  |  airFiber WebUI |  UniFi iPhone/iPad App  |  AmpliFi iPhone/iPad  |  AmpliFi Play Store App  |  FrontRowOS  |  FrontRow iPhone/iPad FrontRow Android


Back to Top

UniFi Controller 18,559 words* · Community Thread  ·  


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.

Interface

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. 

Screen_Shot_2016-12-02_at_11.00.36_AM.png

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

Screen_Shot_2016-12-02_at_11.01.31_AM.png

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. 

Screen_Shot_2016-12-02_at_11.03.05_AM.png

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 "UniFi.app" in Finder ("/Applications/UniFi.app")
  3. Click right mouse button on "UniFi.app" and select "Show package contents" - it should open new finder window with content of UniFi app
  4. Navigate to "/Applications/UniFi.app/Contents/Resources/webapps/ROOT/app-unifi/locales"
  5. Unpack attachment and move unpacked folder ("de_DE") to "/Applications/UniFi.app/Contents/Resources/webapps/ROOT/app-unifi/locales" (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/UniFi.app/Contents/Resources/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 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 UniFi.zip

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.  

Screen_Shot_2017-01-03_at_9.31.37_AM.png

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. 

Screen_Shot_2017-01-03_at_9.35.48_AM.png

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. 

Screen_Shot_2017-01-03_at_9.27.18_AM.png

UniFi Hotspot Portal  379 words* · Community Thread  ·

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

UniFi SDN 3,098 words* · Community Thread  · 

The landing page of https://unifi.ubnt.com 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.

Screen_Shot_2017-01-03_at_9.27.18_AM.png

UniFi Cloud Key 702 words* · Community Thread 

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 584 words* · Community Thread 

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

Screen_Shot_2017-03-08_at_2.44.28_PM.png

UCRM 12,777 words* · Community Thread  · 

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 https://dev-ucrm-billing-demo.ubnt.com/login and select the language from the dropdown, then click Administrator to log in. You can also change the language within UCRM by going 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. When you're done using the demo, please logout so it reverts 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: http://symfony.com/doc/current/components/translation/usage.html#component-translation-pluralization

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,132 words* · Community Thread  · 

The airFiber UI. We can now switch languages ourselves. First go here:

http://201.218.146.84/

username: ubnt

password: ubnt2017

Then go to Settings > System and choose the language from the drop down menu for Interface Language. This is not changed locally, so when one translator changes the language, it changes for everyone. So when you are finished checking your language, please change it back to English so the next translator knows he is free to check his own work.

UniFi - iPhone/iPad App 6,656 words* · Community Thread  ·

This is for the iPhone/iPad UniFi App of the Controller. In the Projects view it is nestled under UniFi. The contact for this project is @UBNT-Jonge.

Some points to take in consideration:

  • Left-to-right text is not yet supported, so Arabic languages might need to wait.
  • We can't really use the nice variables like in the controller (e.g. {{device}}), except in Events. Instead we usually have something like %[email protected] or %2$d. You will see notes for some phrases to explain what those variables contain (e.g. "argument 1 is formatted localized date"). You should not change those 4 characters, only their order, otherwise it will cause the app to crash.
  • Regarding capitalization, follow your languages grammar rules, so our app will match with the rest of the iOS system. If in doubt check out how words are capitalized in your phone's Settings for example. 

ULabs Translations Community Thread

All ULabs translations share the same Community thread, but will have different OneSky project links. Find those below. ULabs are for our consumer market, so the tone and words used will be more informal and not so technical. See more about these products in their websites: https://amplifi.com and https://www.frontrow.com/

OneSky project name and link Number of words* Quick Description  
AmpliFi iPhone/iPad 870 AmpliFi's iOS app.  
AmpliFi Play Store App 1,914 AmpliFi's Android app.  
FrontRowOS 1,600 The FrontRow camera's device operative system. The size of the screen is very small, must take this into account when translating.  
FrontRow iPhone/iPad 3,228 FrontRow's iOS app. The phone must be paired with the FrontRow camera, and the app controls the device, as well as edits, shares, downloads media.   
FrontRow Android  2,775  FrontRow's Android app. The phone must be paired with the FrontRow camera, and the app controls the device, as well as edits, shares, downloads media.   

 


Terms & Conditions


Back to Top

YOU MUST READ AND AGREE TO BE BOUND TO THE TERMS AND CONDITIONS ACCOMPANYING THIS ARTICLE BEFORE SUBMITTING ANY TRANSLATIONS.

TERMS AND CONDITIONS.

GENERAL CONDITIONS: TRANSLATIONS MAY NOT BE SUBMITTED BY ANY RESIDENTS OF ANY COUNTRY SANCTIONED BY THE OFFICE OF FOREIGN ASSETS CONTROL (OFAC) OF THE US DEPARTMENT OF THE TREASURY AND WHERE PROHIBITED BY LAW.  All federal, state, provincial and local laws and regulations apply. Ubiquiti reserves the right to disqualify any participant in Ubiquiti’s sole discretion.  All additional guidelines, terms, or rules on the Ubiquiti website , including the Terms of Service and the Privacy Policy, are incorporated by reference into these terms and conditions and you are agreeing to accept and abide by them by submitting any translation.

INTELLECTUAL PROPERTY RIGHTS: As between Ubiquiti and the participant, Ubiquiti retains ownership of all intellectual and industrial property rights (including moral rights) in and to any of the translations submitted.  To the extent ownership does not automatically vest in Ubiquiti, participant hereby irrevocably assigns fully to Ubiquiti, its subsidiaries, agents and partner companies, all existing and future right, title and interest in and to the translations worldwide, in each case, for the full duration of such right, title and interest, including without limitation the entire duration of the author’s economic rights in copyright. The Participant agrees, at any time, to sign all instruments reasonably necessary to effect such assignment.

INDEMNIFICATION.   To the maximum extent permitted by law, each participant indemnifies and agrees to keep indemnified Ubiquiti, its subsidiaries, agents and partner companies at all times from and against any liability, claims, demands, losses, damages, costs and expenses resulting from any act, default or omission of the participant and/or a breach of any warranty set forth herein. To the maximum extent permitted by law, each participant agrees to defend, indemnify and hold harmless Ubiquiti, its subsidiaries, agents and partner companies a from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorney’s fees) arising out of or accruing from (a) any material uploaded or otherwise provided by the participant that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, (b) any misrepresentation made by the participant in connection with the translation submission; (c) any non-compliance by the participant with these terms and conditions; (d) claims brought by persons or entities other than the parties to these terms and conditions arising from or related to the participant’s involvement with the translation submission; (e) acceptance, possession, misuse or use of any reward or participation in any translation submission; or (f) any malfunction or other problem with the Community site.

NOT AN OFFER OR CONTRACT OF EMPLOYMENT: Under no circumstances shall the submission of a translation, the awarding of a prize or reward, or anything in these Terms and Conditions be construed as an offer or contract of employment with Ubiquiti, its subsidiaries, agents and partner companies.

GOVERNING LAW AND JURISDICTION: These terms and conditions shall be governed by, subject to, and construed in accordance with the laws of the State of New York, United States of America, excluding all conflict of law rules. If any provision(s) of these terms and conditions are held to be invalid or unenforceable, all remaining provisions hereof will remain in full force and effect. To the extent permitted by law, the rights to litigate, seek injunctive relief or make any other recourse to judicial or any other procedure in case of disputes or claims resulting from or in connection with any translation submission are hereby excluded, and all participants expressly waive any and all such rights. All disputes arising out of or in connection with any translation submission shall be finally settled under the Rules of Arbitration of the International Chamber of Commerce by one or more arbitrators appointed in accordance with said rules. The place of arbitration shall be New York, New York, USA and the language of the arbitration shall be English.


Related Material


Back to Top

Translations - General Information (Please subscribe to this thread for announcements)

Getting to Know Transifex 

Translation Community Forum

ULabs Translations: AmpliFi & FrontRow

UCRM Translation Community Thread

airFiber Translation Community Thread

UniFi Translations (UniFi Controller, UniFi SDN, UniFi Hotspot & Cloud Key)

UniFi Video Translation

UniFi - iPhone/iPad App Translation