ccomeaux / boardgamegeek4android

BoardGameGeek application for Android (unofficial)
GNU General Public License v3.0
228 stars 47 forks source link

Translation #119

Open airon90 opened 4 years ago

airon90 commented 4 years ago

Hi, I would like to translate the app. How can I do that?

Kaligula0 commented 4 years ago

Me too. (Polish).

tupaschoal commented 4 years ago

Seems like you need to copy some of app/src/main/res/values files into values-<language code>, following two-letter ISO 639-1 language code. Files would be:

Chris can comment on whether this is correct.

airon90 commented 4 years ago

When everything is defined and ready to become official, CONTRIBUTING.md must be edited

ccomeaux commented 4 years ago

What @tupaschoal says is correct. However, not everything in arrays.xml needs to be translated. I need to mark up what that is. But you can just translate the certain fields and leave the others out of the XML file, and it should work.

@airon90 What more are you looking from from the CONTRIBUTING.md file? I haven't had a lot of interest from the OSS community, so I haven't bothered updating it.

airon90 commented 4 years ago

@ccomeaux

What @tupaschoal says is correct. However, not everything in arrays.xml needs to be translated. I need to mark up what that is. But you can just translate the certain fields and leave the others out of the XML file, and it should work.

I will translate everything translateable.

@airon90 What more are you looking from from the CONTRIBUTING.md file?

I would create a section specifying how to translate the app. As soon as I can I will do a PR :)

I haven't had a lot of interest from the OSS community, so I haven't bothered updating it.

Unfortunately I am not a coder, so I help (F)OSS projects by translating them. Think about creating an account on Transifex or Crowdin. Many projects integrate them as translating platform.

tupaschoal commented 4 years ago

I'd advise you guys to create an issue saying "translate to " and take the issue up, cause right now we don't even know if you're targeting the same one and there might be merges or wasted work

Kaligula0 commented 4 years ago

@tupaschoal I've just made #122 (Translate to Polish) but I don't know how to take it up. I believe someone from the Collaborators has to assign me? Well, only if I can be assigned, not being a Collaborator.

Kaligula0 commented 4 years ago

@ccomeaux Please explain what strings like this Syncing %1$,d game: %2$s mean, because in many languages word forms depend of what is inserted there (a number? a title?) :)

tupaschoal commented 4 years ago

Do take a look at Formatter. These follow the pattern:

%[argument_index$][flags][width][.precision]conversion

% - to start argument 1$ - denotes the first argument (argument_index$) , - is a flag to include local-specific grouping separator (flags) 'd' - means a decimal integer

So %1$,d means that the first argument is an integer and %2$s that the second is a string

Kaligula0 commented 4 years ago

Oh, thanks. But that's not all we need. Some strings are unintuitive, like Downloading \"%s\" collection %s – I have no idea what's to be inserted there, which results in troubles in translation :(

tupaschoal commented 4 years ago

I see, you can always ask and I'll do my best to help. I'm not acquainted with the whole app, so I search for its usage and try to infer. The first string is one of the values from this array:

    <string-array name="pref_sync_status_entries">
        <item>Own</item>
        <item>Previously Owned</item>
        <item>For Trade</item>
        <item>Want in Trade</item>
        <item>Want to Buy</item>
        <item>Wishlist</item>
        <item>Want to Play</item>
        <item>Preordered</item>
        <item>Played</item>
        <item>Rated</item>
        <item>Commented</item>
        <item>Has Parts</item>
        <item>Want Parts</item>
    </string-array>

The second is one of:

            BggService.THING_SUBTYPE_BOARDGAME -> R.string.games
            BggService.THING_SUBTYPE_BOARDGAME_EXPANSION -> R.string.expansions
            BggService.THING_SUBTYPE_BOARDGAME_ACCESSORY -> R.string.accessories
            else -> R.string.items

which are converted exactly to:

Games
Expansions
Accessories
Items
Kaligula0 commented 4 years ago

What @tupaschoal says is correct. However, not everything in arrays.xml needs to be translated. I need to mark up what that is.

In arrays.xml we should translate only:

    <string-array name="collection_status_filter_entries">
    <string-array name="expansion_status_filter">
    <string-array name="wishlist_priority">
    <string-array name="wishlist_priority_finite">
    <string-array name="currency">
        <item>Other</item>  ← !ONLY THIS ITEM of "currency"
    <string-array name="game_weight">
    <string-array name="language_poll">

leaving these unchaged:

    <string-array name="pref_sync_status_default">
    <string-array name="collection_status_filter_values">
    <string-array name="expansion_status_filter_values">

shouldn't we?

airon90 commented 4 years ago

@ccomeaux Could you please tell me what exactly should be translated in each file, so that I can add info in #121?

ccomeaux commented 4 years ago

Do the changes in 2295a1dd51c11a4f221c71d1de3156f0ef31d38d clarify this?

Kaligula0 commented 4 years ago

I think yes :) I still suggest to either add a link to this issue (or tupaschoal's comment https://github.com/ccomeaux/boardgamegeek4android/issues/119#issuecomment-534538212 and his next comments and on #122, because they explain a lot about how the files are written) or copy tupaschoal's comments there (or write yours).

Kaligula0 commented 4 years ago

@airon90 How's your translation going? :)