fast4x / RiMusic

A multilingual Android application for streaming music from YouTube Music.
https://rimusic.xyz
GNU General Public License v3.0
2.15k stars 110 forks source link

Bringing languages to a single form[Feature]: #2008

Open KOLIWAN opened 4 months ago

KOLIWAN commented 4 months ago

Description

RiMusic is a multilingual app and I want to suggest an idea to improve the user experience for users from all countries. I noticed that there are a lot of options for translating language names. In the screenshot below you can see that the app is now in Russian, in the list of available languages some of the languages: 1) Translated into English (bad). 2) Translated into English but in brackets the language self-name is written (better). 3) Translated to the selected language (in my case Russian) and in brackets the self-name of the language written in the same language (excellent!).

Screenshot_20240525_133426

Suggested Solution

I suggest the following solution: when selecting the application language, they will be listed as (Self-name of language) (as the variants marked in green on the screenshot). All self-names of languages are separately specified in the source code.

This solves a lot of problems: if the user accidentally selects the wrong language, he can always find the right one in the list, and now it can be hard, because many language names are translated differently. It will also improve the user experience, the language selection menu will be neater. Also translators will only need to translate the name of the language and not have to google the correct spelling of the self-name.

Below I have prepared a list of all available languages in the app and their self-names. If I have translated something wrong, write in the comments, I will correct it.

Afrikaans - Afrikaans Arabic - اَلْعَرَبِيَّةُ Bashkir - Башҡорт Catalan - Català Danish - Dansk English - English Esperanto - Esperanto Estonian - Eesti keel Chinese simplified - 汉语 Chinese traditional - 漢語 Czech - Čeština Dutch - Nederlands Finnish - Suomi French - Français German - Deutsch Greek - Ελληνικά Hebrew - עִבְרִית Hindi - हिन्दी Hungarian - Magyar Italian - Italiano Indonesian - Bahasa Indonesia Japaneese - 日本語 Korean - 한국어 Odia - ଓଡ଼ିଆ Persian - فارْسِى Polish - Polski Portuguese, Brazilian - Português brasileiro Portuguese - Português Romanian - Română Russian - Русский Serbian Cyrillic - Вуковица Serbian Latin - Srpski Sinhala - සිංහල Spanish - Español Swedish - Svenska Telugu - తెలుగు Turkish - Türkçe Ukrainian - Українська Vietnamese - Tiếng Việt

It would also be nice if in the strings.xml file the developer would label each language with the lang_LANGUAGENAME key. Now it can be just the name of the language

image

or lang_language

image

It would also be nice if they were all next to each other, now they are scattered all over the file.

Alternatives

No response

Additional Context

No response

ikanakova commented 4 months ago

fast4x wanted, when we started with translations, that each translator should decide this himself, so I have it in Czech - the name of the language in Czech (the name of the language in that language), e.g. Ruština (Русский). I translated some languages in English in Crowdin, so it's there too.

Edit: I also suggested this because I think that if someone accidentally switches an app to a language they don't know, it's easier to find the right one. But I can't find an issue/discussion where this was solved.

dAtA-TRoN commented 4 months ago

Nice addition. Love those little details.

ikanakova commented 4 months ago

My suggestion: to make entities (see: https://stackoverflow.com/questions/4746058/reference-one-string-from-another-string-in-strings-xml) where each language would be in the original, e.g.:

<!ENTITY russian "Русский">
<!ENTITY english "English">
<!ENTITY czech "Čeština">

And then in each language it would be:

    <string name="en_Russian">Russian (&russian;)</string>
    <string name="cs_Russian">Ruština (&russian;)</string>

As long as it's compatible with Crowdin...

KOLIWAN commented 4 months ago

My suggestion: to make entities (see: https://stackoverflow.com/questions/4746058/reference-one-string-from-another-string-in-strings-xml) where each language would be in the original, e.g.:

<!ENTITY russian "Русский">
<!ENTITY english "English">
<!ENTITY czech "Čeština">

And then in each language it would be:

    <string name="en_Russian">Russian (&russian;)</string>
    <string name="cs_Russian">Ruština (&russian;)</string>

As long as it's compatible with Crowdin...

Yep and also I think it would be super clean and nice if when selecting a language, its self-name was not duplicated 2 times like Русский (Русский) or Čeština (Čeština) or English (English) so in each xml file of a language the line with its name will look like this <string name="ru_Russian">Русский</string> or <string name="cs_Czech">Čeština</string> or <string name="en_English">English</string> without (&<language_name>;) part