-
Notifications
You must be signed in to change notification settings - Fork 85
Localization guide
RobbWatershed edited this page Mar 27, 2022
·
2 revisions
Hentoid
supports different languages and can speak with you in your native one if it's supported. Localizations themselves, though, are done by volunteers, so if you find your language to be unsupported, you can help both yourself and the Hentoid
community by contributing to our localization efforts!
You are not required to know Java or Android development if you're implementing support for a language not significantly different from the large European ones at least in terms of script (e.g. Latin, Cyrillic, Greek, possibly other left-to-right scripts) and using Western Arabic numerals ([0..9]). These skills are still beneficial, but they're also important for a more natural way of displaying the app in a "non-standard" locale. Don't fret asking for advice anyway!
If localizing Plug Reactions (array_plug_reactions.xml
) and Splash Screen Quotes (array_splash_quotes.xml
) isn’t something you want to deal with for any reason — don’t worry, you can omit these and still ask for your localization to be considered finished.
Regardless of the method used to create a new supported locale or improving an existing one, here are some basic string elements you should know how to deal with when making your own strings.
Currently we're working with Smartcat. Whether you wish to start working on a new language or continuing the existing translation project, hop on to our Discord and ask for the access on the #localization
channel!
If no one has ever localized Hentoid to your language before, you'd first need to fill out a glossary (you'll get one on the Discord server); it's a list of terms that should be localized the same way everywhere in the app.
We advise you to sign up on Smartcat beforehand to take the tutorial. Please also note that, unfortunately, Smartcat doesn't have a mobile app, nor is their website optimized for mobiles at all.
After accepting the task, you should see Hentoid's project in your tasks list. Go ahead and open it!
Under "Tasks" you can now see different groups of strings, such as Splash Screen Quotes, General Strings, Settings, etc. You can open each group individually to continue working, or click a "catch-all" "Continue Translation" button to go straight to the editor.
The Smartcat editor is pretty straightforward and looks sort of like Google Docs. You can toggle the right-side and bottom-side panels to assist you with such niceties as glossary terms, previous translations of alike strings, etc.
Note that the Smartcat editor can also be annoying at times, especially with its warnings (yellow exclamation mark signs on the right to such strings) and strings just disappearing from the interface sometimes. Two things to learn before worrying that some thing could be your own error:
-
Several resource files should not be touched as they’re mistakenly offered for localization. These are:
array_url_blacklist.xml
,array_url_whitelist.xml
,donottranslate.xml
. -
Think of Smartcat’s warnings as of Microsoft Word spell checker’s ones; i.e. they’re not always particularly helpful (or meaningful). Remember that localizing isn’t about translating verbatim, so each “
Translation does not match the glossary term
” message, for example, should be looked at individually for each case.
First order of business — Android Studio is the best editor, simply because of its comprehensive checks and tools to test how the localization would look in a finished product before sending it to the dev team. It's possible to get away with a simple text editor or VS Code even, but that way there's a considerably larger field for mistakes to happen.
There's two ways of making a localization in Android Studio, but which one you should go with is really a question of preference. The first one is simply editing the XML resources manually. You can open other localizations or resources from the same localization in side views to assist yourself.
This is a more advanced option, so if you feel like you need a more streamlined interface, feel free to open the Translations Editor by clicking on "Open editor" on the hint above the text.
And then add the "Locale" qualifier and enter the same file name as the resource file's you're localizing.
The second way may be more suitable if you don't feel that much comfortable with the Studio yet — the Translations Editor. It essentially hides as much of XML junk as possible, allowing you to select the options you need using intuitive interface.
After you’ve finished and tested your work, submit a pull request! Your localization will be reviewed and, if everything’s alright, merged into the dev
branch so that others could use new locale on the next app update.
Used to encapsulate elements mostly for adding style to the text. Syntax: <tag attribute="value" attribute2="value2">String value</tag>
-
<xliff:g>
or<x:g>
: XLIFF; specifies the meaning and example values for variables used in strings. The meaning is set with theid
attribute, and the example value — well, withexample
! Either of these attributes (even both of them) can be omitted to emphasize the necessity of keeping a certain escape character sequence(s) (more on that later on) intact when translating (e.g.Delete<x:g>\?</x:g>
). This particular example escapes only one character though—the question mark—which means that adding this tag only bloats the string. Example use:"Loading image: <x:g id="percentage" example="50%">%d%%</x:g>"
-
<b>
: Bold text. Example use:"<b>Hentoid</b> is a Doujinshi & H-Manga archiving app."
-
<i>
: Italic text. Example use:"the <i>usual</i> book\?"
Used to display a special programming or markup symbol correctly on user's screen, like the question mark (?
). Almost all of these are the same symbols just with a backslash prepended (\
), but as the percent sign is used to format arguments in strings (like %d
for a decimal number or %s
for another string), its escape sequence is written as %%
.
You do not need to actually know all escape sequences except for \n
, a special "new-line" symbol to actually make a new line (because pressing [Enter]
in your editor tells Android nothing about the text format) and remembering to escape single and double quotes each with \'
and \"
respectively. Other than that, you've simply got to memorize the pattern to leave such sequences as is when translating a string with them. See Handle special characters on Android Developers for further reading.
Brought to you by the Hentoid Team with ❤️
Latest Release | Discord