Linguists are Habitica contributors who help translate the website and mobile apps into different languages. The following article offers basic information as well as a series of tips and tricks that will help Linguists bring Habitica to new users from nations around the globe.
All Linguists should be fluent in the language they are translating to. It is better to have no translation than a bad translation because poor quality translations result in complaints and can damage Habitica's reputation. Please do not supply translations by using Google Translate or similar services.
This page is for translating Habitica. For information on translating the Habitica Wiki, see Guidance for Linguistic Scribes.
- Weblate is the place where the translations are managed. New English strings are added by the Blacksmiths on GitHub and become source strings for translations when uploaded from Weblate. Linguists should not translate directly on GitHub.
- Each project has its own set of languages available for localization. The mobile apps may have fewer languages available than the website. Read on to learn about new languages being added.
- The Projects page shows the overall translation activity progress, while the Languages page shows all languages that are currently available for translation as well as their respective progress.
- Anyone can see information about translation activity as well as suggest translations to strings, but only logged-in users can change translations.
- To begin translating, select a project, language and component, then click on one of the categories of strings presented to you. Note that you can only change strings that have yet to be reviewed and approved.
- Join the team of your language(s) to see any existing guidelines for translation into that language and to discuss translation alternatives. Use the list further down this page (under Team Work and Discussions) or the Commonwealth of i18n (Aspiring Linguists) guild to find other translators for your language.
How to translate
- Join the Commonwealth of i18n (Aspiring Linguists) guild and regularly read all new messages there. Important announcements from moderators or staff are made there when required. You can use the guild to ask questions, help other translators, and reach out to Habitica Staff if needed. When you join, you may like to introduce yourself and tell people of your intention of translating but that is not mandatory.
- Only work on languages for which you are a native speaker or have the equivalent level of fluency. Working on a language you are still learning is likely to cause translation errors that others will need to correct. You will not receive contributor tiers for poor quality translations. Never use Google Translate or similar services to do any translations.
Check if there is a plan for your language
- Go to Habitica's page on Weblate and use the "Browse" function to see if your language is listed.
- If your language is on the list for the project it means that other translators have been working on the translation and you may want to help them.
- If your language is not on the list, you can request that it be added by posting to the Commonwealth of i18n (Aspiring Linguists) guild. The request will be considered by Habitica's staff but it is not guaranteed that the language will be added.
- Log in or sign up for Weblate by clicking in the top right corner and follow the instructions on the page.
- If you are logging in for the first time, you will be asked to pick which languages you wish to translate into as well as secondary languages which will show up alongside the source strings as you translate. These can be changed later on in Profile > Settings.
- Once you are logged in, click on "Languages" in the top left row to make sure your language is available. As of August 2020, there are 75 languages to choose from, although some languages are not available for both the website and phone apps. If your desired language is not in the list, follow the guidelines above to request a new language.
- There are multiple ways to navigate to the components available for translation.
- A. From your Dashboard (home page), click on "Your languages" and select a component to begin translating.
- B. Click on "Projects" in the top left corner, select one of the projects available (Habitica's website, the iOS app or the Android app), then a component and finally a language.
- C. Click on "Languages" in the top left corner, select one of the languages, then a project and finally a component.
- Once you have selected both a language and a component to begin translating, you will be presented with an overview showing how much of the component has been translated as well as a list of categories that the strings currently fall into in this component, such as "All strings", "Translated strings" and "Strings needing action". The exact list varies depending on whether there currently is a string that falls into that category, and some of the categories overlap.
- To begin translating, click on one of the categories, preferably "Strings needing action" or "Strings with any failing checks". If these categories do not show up for you, go back and try another component.
- You will now be shown the first string in that category, along with the corresponding translations in the language you've selected as well as your preferred languages. You can navigate between different strings by clicking the arrowed buttons above the strings.
- The right-hand column will show you what (if any) checks the string has failed, corresponding words in the language's glossary as well as general information about the string itself.
- Below the strings there are several tabs that can also be useful to look at when translating, such as comments made by other translators, version history for the translation, machine translation options etc.
- Selecting "Zen mode" from the right-hand column will provide you with an interface where the strings in the category you've selected are shown all at once instead of one by one. Zen mode also shows less information about each string than in the default mode and any changes you make while in Zen mode will be saved automatically. You can exit Zen mode at any time by clicking the same right-hand button again.
You can now start translating. You are very unlikely to break something while doing so, so experiment with the options you are given.
Please note that you can only translate strings that have not been reviewed (i.e., new strings) as reviewed strings are considered to be correct. However, if you have a better translation for a reviewed string, you may add it by clicking "Suggest" or write a comment as this kind of help is also appreciated.
Don't forget to press "Save" after each translation. As mentioned above, any changes you make in Zen mode will be saved automatically.
Review process and suggesting corrections
Once you have finished your translation work, someone will have to review it. That is usually done by a reviewer and might take some time.
After a translated string has been reviewed, it cannot be changed except by reviewers. However, you can still help with improving translations.
- If you think you have a better alternative for a reviewed string, translate it like you normally would and then hit "Suggest". Alternatively, you can leave a comment for other translators by selecting "Comments" tab underneath the strings. Please note that reviewers are not notified about new suggestions.
- If you find an incorrectly translated string and it is locked as an already reviewed one, tag a reviewer of your language (@nickname in the comment text) and they will receive a notification.
Translation guidelines and tips
The Glossary is an important feature that you should always use: it provides a list of translated words so everyone will follow them as guidelines, like a dictionary. Different people could translate the same word in different ways, so please take care of the glossary to prevent misconceptions, even in other languages.
To access the glossary for a language, first select either a project or a language (on the menu bar) and then click on the "Glossaries" tab. While viewing or editing translations for a string, relevant glossary words will appear in the right-hand column along with an option to add new glossary words or go to the main glossary page (by clicking the icon of a pen inside a square).
Please note that this section is out of date. To check the current usage, click the three dots in the upper right corner on Weblate and look at Documentation > Searching.
Weblate's search function can be found towards the top of the page under "Habitica / Language your translating". Press the green "Search" button at the bottom of the page when you are ready to see the search results.
The Query is the search box. Here you will write the word or words to search for. If no changes are made to the search settings the search will filter the strings as follows:
- The search will filter the exact word or words the way you wrote them.
- It will include source strings and target strings, that is, the string we are translating and what we are translating it to.
- The search will ignore capitalization, both in your search and the search results.
- It will search through all strings.
The Search type decides what words to search through. The first part features a box with four options:
- Fulltext (default), the search will filter the exact word or words the way you wrote them.
- Substring, the search results will show your searched word even if it is not part of a full word. For example, if you search for "Habiti" the search result will show all words with "Habiti" in them, therefore, for example, all "Habitica" words.
- Exact match, the search word or words need to be exactly same as the result string. For example, to find the string "Duffle Coat" you need to search for "Duffle Coat" and, for example, not only for "Duffle" or "Coat". Note that capitalization does not matter.
- Regular expression
The second part decides what strigs to search through. The options are source strings (default), target strings (default), context strings, location strings and comment strings. You can check multiple boxes.
With the Search filter, you can narrow down your search by choosing a type of string to search through. You can, for example, search through only strings who meet the criteria "Strings with any failing checks" or "Strings with comments".
Changes since lets you search for strings that have been changed after a specific date.
Changed by user lets you search for strings that have been changed by a specific user.
Exclude changes by user removes changes by a specific user from the search results.
The Languages section lets you search through multiple languages. Click on the languages in the left column to search for strings in that language, the chosen languages will be added to the right column. Can be helpful if you are translating to multiple languages.
Search and replace
To find this function you need to be under a component. In the same bar as the search function press Tools>Search and replace.
In the Search string box, write the string you want to replace. Then write what you want to replace it with in the Replacement string box.
Some particular aspects
Many strings have one or more variables inside them. For example, the
joinMany string is:
Join over <%- userCountInMillions %> million people having fun while accomplishing their goals!
%> markers indicate the outer edges of the variable. The word inside it is the name of the variable (in the example above,
userCountInMillions is the variable's name).
Some variables use an equal sign instead of a dash in the first marker, for example:
<%= hrefCommunityManagerEmail %>
This is done when the variable needs special handling inside Habitica's code. It does not affect how you translate the strings that use the variable.
Some important points:
- Everything inside the
%>markers must not be changed. I.e., do not translate or edit the variable's name in any way. In the example above, the translated string must still have exactly this inside it:
<%- userCountInMillions %>
The same applies to variables that use an equals sign instead of a dash.
- Do not change the case of the variable's name. For example
<%- usercountinmillions %>is wrong because the upper-case letters have been changed to lower-case.
- Do not add or remove spaces inside the markers. Do not put spaces in the markers themselves. For example,
<% -userCountInMillions % >is wrong because the spaces have been moved.
- Do not change the equals sign or dash sign in the markers. If a variable uses a dash (
<%-), it must continue to use a dash. If it uses an equals sign (
<%=), it must continue to use an equals sign.
- Be careful when retyping markers. Markers are typed with "normal" characters (i.e.
%"percent sign"), which can accidentally be replaced with different style characters like the fullwidth characters (i.e.
％"fullwidth percent sign").
- Everything outside the markers can be translated.
- The variables can be placed in any location inside the string as your language's grammar demands.
- The variables must not be deleted. If the English string contains two variables, then the translated string must have exactly those two variables in it.
- If the variables have quote marks or other punctuation immediately outside them, you can change or remove that punctuation as needed for your language. For example, the
winnerNotFoundstring is shown below and you can see two
"quotes in it. Those quote marks can be replaced with the character that your language uses to indicate quotes.
Winner with id "<%- userId %>" not found or not part of the challenge.
Links to Wiki pages
In the strings for translation you may come across links to the Wiki pages containing additional information on some topic, e.g.,
Get these items faster with gems if you don't want to wait for them to drop when completing a task. <a href="http://habitica.fandom.com/wiki/Drops">Learn more about the drop system.</a>
You may change the link to the Wikia page to the corresponding page in your language, e.g. (for the French wiki),
Récupérez ces objets plus vite avec des Gemmes, si vous ne voulez pas attendre de les recevoir en butin d'une tâche. <a href="http://habitica.fandom.com/fr/wiki/Butins">Apprenez-en plus à propos du système de butin.</a>
However, before you change the link please make sure that: (1) the page you are referring to exists, and (2) it gives information on the questions mentioned in this line.
Please refer to the Guidance for Linguistic Scribes if you are ready to help with translating the Wiki; your help will be much appreciated by your fellow Linguistic Scribes!
Proper nouns and capitalization
Please keep the names "Habitica" and "HabitRPG" untranslated and with exactly the same spelling (as is). This applies even in languages in which grammatical rules would normally require word endings to be adjusted or other changes to be made—any such changes should not be made. If multiple spellings of the name were allowed, it would increase the cost of trademark protection.
Other brand names (e.g. Take This, Google, GitHub, social media etc.) should be left untranslated as well.
The names of people, including the NPCs (Non-Player Characters) who are real-life users of Habitica, should not be modified—their English names should be used everywhere. The names of other characters, such as the April Fool, can be translated.
The names of quests, as well as bosses, can be translated.
Feel free to get creative with Habitican, Habiteer, Habitant, inHabitant, etc. as those are all constructions that work in English, but may not work for whatever language you're translating to.
Capitalization may be a bit tricky when translating in-game terms. Please try to respect and follow the general rules found in the Guidance for Scribes.
In addition to this Guidance, translators of particular language teams may reach certain agreements about the way to deal with some linguistic issues. These agreements can arise from discussions during the translation process. Later on, each team will try to follow the internal best practices.
The topics of such agreements may include (but are not limited to):
- the way to address the user
- translations of specific in-game terms and their alternatives
- translations of eggs and pets/mounts and their attributes (as each attribute should fit all pets and mounts)
- translations of word play and tricky phrases repeated in several places
- capitalization issues
Such agreements are not strictly imposed rules, but they help to simplify the translation process and maintain consistency. If you would like to suggest better alternatives, please first consult with other translators and reviewers before implementing the changes to the subjects of the agreements.
Please note: internal recommendations can not go against this Guidance.
Team Work and Discussions
As it has been mentioned above, translators reach some agreements and follow certain practices when translating the site and the mobile apps. Transifex, the previous translation platform used, provided both general and language-specific discussion boards and announcements, but these forums were not very flexible. Many teams therefore used additional places to coordinate activities and discuss translations - the list can be found below. Weblate does not (as of June 2019) provide any similar forum, meaning that the additional places have since become the default gathering spot for each respective language team. In any case, it is advised that all translators and aspiring translators join the Commonwealth of i18n Guild, a.k.a. the Aspiring Linguists Guild.
In general, it may be suggested that:
- Each language team should have a hub for discussion
- The hub provides information about general tips or guidelines specific for the language
- Every new translator is kindly asked to join the hub and follow the guidelines provided by the experienced contributors
- Every important choice (e.g. changing the translation of a specific word in all the project) should be the result of a discussion with all the team.
Some language teams prefer to use one and the same place for discussing translations of the site and the wiki. The list of such places (mostly guilds) can be found in the Guidance for Linguistic Scribes.
Options in Case of Difficulties
If you are not sure about how to translate a line, you can try using one of the following options:
- Ask in the Aspiring Linguists guild: Commonwealth of i18n. Other translators would be glad to help you!
- Check the tabs surrounding the translation field:
- Suggestions and History - may help you if the line has just been updated and had been translated before.
- Glossary - looking through the glossary may help if the reviewers of other translators have already added a term that you are not sure about.
- Comments - translators usually try to discuss things in English, regardless of the translation language.
- Other languages - it may be sometimes useful to look through the variants of translators of other languages. To always have the strings from another language show up alongside the source strings while viewing or editing, you can go to Profile > Settings and add secondary languages.
- Search function - it may help you to search for specific terms through all of the strings within a specific language or multiple languages. You can search for specific words by pressing the "Search" tab, which will be available whenever you are at an overview page for a project or component. Use the filters to narrow down or expand your search as needed.
- GitHub - search GitHub for the key of the line you have doubts about (use the search form at the top of the page).
- Using special Habitica account for testing - you can emulate the situation in which you think the line is used.
- Submitting a comment - write your question in the comments for the string. The discussion may be more fruitful if you put other translators you know and the reviewers in @'s.
Translating the Updated Strings
Sometimes a particular string, previously translated and even reviewed, can become untranslated. The most common reason is that the respective source strings get updated.
If modified strings get new keys (identifiers), they are considered as new ones. When the string changes, the checkbox "Needs editing" box below the translation is automatically checked, and a red Fails Checks announcement appears in the top right explaining the string fails the check "has been translated".
The changes to the string are highlighted. As seen in the screenshot to the right, the new string added the word "Pet" to the old string. The old translation (for the old version of the string) is retained to allow for a starting point for the new translation.
Translating the Mobile Apps
Weblate Team Roles
Weblate translations projects are assigned to teams with contributors of different roles. Translators can contribute to new strings with no translations and edit translations of the strings that haven’t been reviewed yet.
Apart from translators, a team can have reviewers. A user with reviewing permissions for a specific language is considered a trusted contributor who has enough experience for the title. Reviewers are appointed by staff after an application process involving input from other translators of their language. They translate strings and implement quality control measures.
Applying for reviewer status
In order to become a reviewer, a translator should meet certain formal requirements:
- Has at least two (2) tiers for translation in the language they wish to review.
- Is a member of the Commonwealth of i18n Guild.
- Have background experience with projects related to translations / development (education, work, hobby)
- Knows how to use Weblate tools to maintain consistency (i.e. glossary, translation memory, concordance search, batch-editing, comments, announcements, discussions, and filters - including for all the strings in all the project files);
- Knows how to search for a specific string key on GitHub to check the uses of the data (string context, variables, links, etc.);
- Is a team player and is always open to different opinions;
- Follows the official Guidance and respects the language-specific community agreements and best practices.
Please note: it usually may be better to have a string not locked if translation is not perfect.
In order to apply for promotion: a translator should follow the procedure to make their application known in details by the staff and available to a certain extent for the team:
- Complete the Google Form (up-to-date link can be found in the Commonwealth of i18n Guild) to notify the staff and the team manager in charge about your willingness to take the role of a reviewer for a specific language.
- Post in the Reviewer Application Discussion Board. The Guild description gives details on what to include in your post.
- Wait for the decision (two weeks are given for other team members to make comments) and take part in reviewing other applications;
- Once the Guild post is made, other translators for their language will have about two weeks to review previous public actions of the applicant and share their concerns or recommendations, if any. Information can be shared publicly in the Guild chat or sent privately via this Google form.
- If no serious objections have been found, staff will appoint an applicant a reviewer as soon as they are sure in their decision. They may then post a comment on their decision to the Guild.
Contributor Tier Process
Once you have succeeded in translating a piece of Habitica, you may get a contributor tier (also known as a badge) acknowledging your help.
Tiers for help with translation are awarded to the members of the teams of languages going live:
- after first personal contribution
- after 1, 3, 6 month(s) and 1 year of constant contributing
Previously a badge for reviewers was also available but the team decided to substitute it with a 1 year badge. Those who had previously obtained the reviewer badge will retain it.
You must complete a Google Form telling the staff more about your contribution (the most recent link is provided in the Commonwealth of i18n Guild). Tier requests are usually processed in batches once every month or so.
Please note that tiers might not be awarded for poor quality translations.