Open Kaligula0 opened 4 years ago
It is now assigned to you @Vinne2
I see there are some plurals in strings, that's good! Unfortunately in Polish some words need more options, e.g.:
<plurals name="sync_notification_games_remove">
<item quantity="one">Deleting %,d game from your collection</item>
<item quantity="other">Deleting %,d games from your collection</item>
</plurals>
<plurals name="sync_notification_games_remove">
<item quantity="one">Usuwam %,d grę z Twojej kolekcji</item>
<item quantity="two-three-four">Usuwam %,d gry z Twojej kolekcji</item>
<item quantity="other">Usuwam %,d gier z Twojej kolekcji</item>
</plurals>
Is there any simple way to manage this? (I suppose with every next language translated to the strings will have to have more options in many places). Or should I try to translate in a way that will avoid additional strings? (This may be hard or sometimes impossible, I don't know yet).
To me it seems ok to add more strings if your language requires different plurals. It is what's actually recommended here. I'd advise you to translate everything else first while we wait for @ccomeaux input on what to do here.
strings_sync_service.xml: <string name="sync_notification_collection_downloading">Downloading \"%s\" collection %s</string>
which converts to e.g. Downloading "Own" collection Games
I can translate this almost literally, leaving the same arguments order (I'll write English words for you to better understand): Downloading collection \"%s\": %s
.
BUT it sound better if I reverse the arguments: Downloading %s from collection \"%s\"
. Can I do that? Should I number the args: Downloading %2$s from collection \"%1$s\"
?
I think it works if you number them
Thanks.
<string name="sync_notification_h_index_increase">Congratulations! Your %1$s h-index is now <b>%2$s</b>.</string>
converts to Your game h-index is… or Your player h-index is… using
<string name="game">game</string>
<string name="player">player</string>
The two above strings translate to gra and gracz in nominative case in Polish. But in the above situation I need a plural possesive form: gier and graczy. Is the only solution to make new strings and change the java code a bit? :/
I can make Polish sync_notification_h_index_increase
string like: (with English words) Your h-index [game] is… or Your h-index [player] is… which sounds bad but is communicative.
Not sure I follow, do you need different strings for sync_notification_h_index_increase
depending on the value of %2$s
?
Can you try to explain the combinations you'd write in rough English?
Well, not sure if I follow, too… my brain is blended after translating so many strings, so let me first ask – is every <string…>
used only once (as a rule)? (Because I assumed that not necessarily…)
If yes – then I think the problem doesn't exist. I'll just change the strings:
<string name="game">game</string>
<string name="player">player</string>
to something that fits best into this one string only:
<string name="sync_notification_h_index_increase">Congratulations! Your %1$s h-index is now <b>%2$s</b>.</string>
Right now there are two places using each of these strings, just search for R.string.game
or R.string.player
. Even if there was a single match, I don't think you could assume that, as they tend to be designed for reusability,
Let me try to help with this explanation.
In some languages, like Polish, German, Czech..., you have one thing called declinations. The function of some word in the phrase is based not on the position, but this "declination." And declination is only the way that the word finishes.
I'll give a Czech example: Coffee is good => Kava je dobrá. I would like a coffee => Dam si kavu.
So, Kava, that is coffee, changes to kavu when it has the function of the direct object on the phrase. I believe that it's quite the same thing with Polish.
Thank you, @Cussa , that's true. Long story short, we (Polish) have 7 "cases" (endings) of each noun which depend on the context (Germans have 4); on the other hand English has only two – 1st is basic form (e.g. "man"), 2nd is posessive form which is, frankly speaking, easy (e.g. "man's").
they tend to be designed for reusability,
Are you sure? Because I see many strings "Search", many strings "View", "Log play", "User", "Average weight" etc. Looks like they tend to be one string for one place.
R.string.game
or R.string.player
(@tupaschoal)But then the problem exists. I cannot find (in the app) and I don't understand (from the code) where the strings R.string.game
or R.string.player
are used (besides H-index) so I don't know what form they should have there.
In H-index string (<string name="sync_notification_h_index_increase">Congratulations! Your %1$s h-index is now <b>%2$s</b>.</string>
) I need to insert e.g. R.string.game
(basically in Polish "gra") in a form like "gier" or "gry" (which translates to "of games" or "of game"). Similarly – R.string.player
(Polish "gracz") in a form like "graczy" or "gracza" (which translates to "of players" or "of player").
Nevertheless, I made a quite good (I think) workaround for now by adding some new words for creating context.
While English language uses one|other
, Polish needs one|few|other
, where few=<2-4>. But do I have to use all three items in each plural? Or can I omit useless ones, e.g. in some plurals the few
translates the same as the other
?
That was about strictly translating an existing plural. But there's one special case where I need a plural instead of a string. Can I just convert the string into plural and move it to plurals section of XML? I need to convert this (original, English):
<string name="play_stat_game_h_index_info">You\'ve played at least %1$,d games %1$,d times or more. You need at least %2$,d more play(s) to increase this number.\n\nhttps://boardgamegeek.com/thread/953084</string>
to this (in Polish):
<plurals name="play_stat_game_h_index_info">
<item quantity="one">Grałeś w przynajmniej %1$,d grę %1$,d lub więcej razy. Aby zwiększyć tę liczbę potrzebujesz min. %2$,d rozgrywkę.\n\nhttps://boardgamegeek.com/thread/953084</item>
<item quantity="few">Grałeś w przynajmniej %1$,d gry %1$,d lub więcej razy. Aby zwiększyć tę liczbę potrzebujesz min. %2$,d rozgrywkę.\n\nhttps://boardgamegeek.com/thread/953084</item>
<item quantity="other">Grałeś w przynajmniej %1$,d gier %1$,d lub więcej razy. Aby zwiększyć tę liczbę potrzebujesz min. %2$,d rozgrywek.\n\nhttps://boardgamegeek.com/thread/953084</item>
</plurals>
<string name="title_abstract">Abstract</string>
Does Abstract string mean "unreal shapes or figures, nothing relating to real world" like e.g. in abstract art? Or maybe Abstract is the type of a game, that is extremely simple in design, the opposite of detailed? I have to be sure to find a proper adj in Polish.
What are game polls? Is it generally a "survey" (e.g.) or a poll (in IT meaning)?
<string name="pref_advanced_polls">Game polls</string>
<string name="pref_advanced_polls_off">Polls for games will no longer work, but hopefully the crashes will stop. (This has nothing to do with polls in forums - those will never work.)</string>
<string name="help_game_poll">- View polls</string>
I've learnt how to search uses of strings I translate (Notepad++ > Search in files). But still have some problems finding some.
I can't find out what for/where these string are used and don't know what they mean.
(I need to know the context. I would like to know where to see this in app. I can't find this.):
<string name="provider_label">Collection, Plays, and GeekBuddies</string>
<string name="title_items">Items</string>
<string name="timer">Timer</string>
<string name="times">times</string>
("times" as in "We must keep it in mind at all times" or in "He won multiple times"?) (→ also <plurals name="times_suffix">
)
<string name="_players">…players</string>
<string name="_with_">…with…</string>
<string name="updated_prefix">Updated %s</string>
<string name="menu_custom_player_order">Custom</string>
<string name="by_prefix">by %s</string>
(I see this has something with Designers, Mechanics etc., but can't figure out what is the final string that user sees.)
<string name="view">View</string>
(I need to know if this is noun like collection view or verb like view more)
<string name="incomplete_games">incomplete games</string>
(Do you mean incomplete plays or incomplete board games by whatever that is?)
<string name="msg_sync_response_429">Rate limit exceeded.</string>
(Rate? I need to know context, or "rate of what", to choose polish meaning.)
<string name="menu_sort_geeklists_hot">Hot</string>
<string name="menu_sort_geeklists_active">Active</string>
Because to me a hot thread is where users are very active.
What are these? I cannot find them on BGG.com. I see they are some rewards but nothing more I know of them.
<string name="play_stat_quarters">Quarters</string>
<string name="play_stat_quarter">Quarter</string>
<string name="play_stat_half_dollar">Half-dollar</string>
<string name="play_stat_half_dollars">Half-dollars</string>
<string name="play_stat_dollar">Dollar</string>
<string name="play_stat_dollars">Dollars</string>
<string name="play_stat_dimes">Dimes</string>
<string name="play_stat_dime">Dime</string>
<string name="play_stat_penny">Penny</string>
<string name="play_stat_nickels">Nickels</string>
<string name="play_stat_nickel">Nickel</string>
And why does Penny have no plural form? (Should I add this?) And why are Nickel/s (2 string) somewhere else in code?
If they're nothing but names of coins (as a reward) then they can be translated only this way: dollar
and penny
literally (dolar and pens) but the rest (half-dollar
, quarter
, dime
, nickel
) only by description pół-dolarówka (sounds like half-dollarie), ćwierćdolarówka (≈ quarter-dollarie), dziesięciocentówka (≈ ten-centie), pięciocentówka (≈ five-centie)… which sound horrible and lose the sense. I'd rather not translate them. Or – if it's only an in-app reward – think of something else (e.g. platinum/gold/silver/bronze/steel/rubys/emeralds/…).
Are you sure?
R.string.game
is used in both app\src\main\java\com\boardgamegeek\ui\dialog\GameRanksFragment.kt
and app\src\main\java\com\boardgamegeek\util\PreferencesUtils.java
.
R.string.player
in app\src\main\java\com\boardgamegeek\ui\LogPlayerActivity.java
and app\src\main\java\com\boardgamegeek\util\PreferencesUtils.java
I cannot find (in the app)
Using the order above they are for, respectively:
If I need a plural I can just do it and it'll work? E.g.:
Didn't really get what you asked here.
And if I do this – do I have to use
- even if it's equal to
- or can I omit it?
No, you only specify the ones the language requires specialization, otherwise other
gets picked, as I understand from their explanation, pasted below:
When the language does not require special treatment of the given quantity (as with all numbers in Chinese, or 42 in English).
Or maybe Abstract is the type of a game
This
What are game polls?
These would be the ones defining "best number of players", "recommended age", "complexity", as seen here:
Because to me a hot thread is where users are very active.
I'd say you answered it yourself. Active means with any activity, hot means with lots of activity.
What are these?
These are game statistics related to the coins. If you've played 4 games 10 times, then you have 4 dimes, and so on.
Thank you very much for reply! You are a gold man. 1&2: Resolved, thank you. Kind of workaround, but sounds good. 5: Gosh, I wouldn't guess that! Thank you! 7: Done!
Didn't really get what you asked here.
I see, my fault. My bad formatting → parser stripped parts of my comment. I edited it, can you please look at it once more?
Or maybe Abstract is the type of a game
This
I'm not sure what you meant. I know it's a type of a game, but – in short – is it an abstract game (=unreal game) or an abstract game (=simple, undetailed game)? I'm just trying to be precise.
Are they only in-app rewards/stats? Can I find them somewhere on BGG.com (I haven't found)?
I can't find out what for/where these string are used and don't know what they mean.
(I need to know the context. I would like to know where to see this in app. I can't find this.):
<string name="provider_label">Collection, Plays, and GeekBuddies</string>
<string name="title_items">Items</string>
<string name="timer">Timer</string>
<string name="times">times</string>
("times" as in "We must keep it in mind at all times" or in "He won multiple times"?) (→ also <plurals name="times_suffix">
)
<string name="_players">…players</string>
<string name="_with_">…with…</string>
<string name="updated_prefix">Updated %s</string>
<string name="menu_custom_player_order">Custom</string>
<string name="by_prefix">by %s</string>
(I see this has something with Designers, Mechanics etc., but can't figure out what is the final string that user sees.)
<string name="view">View</string>
(I need to know if this is noun like collection view or verb like view more)
<string name="incomplete_games">incomplete games</string>
(Do you mean incomplete plays or incomplete board games by whatever that is?)
<string name="msg_sync_response_429">Rate limit exceeded.</string>
(Rate? I need to know context, or "rate of what", to choose Polish meaning.)
Or can I omit useless ones, e.g. in some plurals the few translates the same as the other?
Yes. You can omit
Can I just convert the string into plural and move it to plurals section of XML?
It won't work, because to get a plural, a function is used, whereas simple string resources are used directly.
As defined by BGG:
Abstract Strategy games are often (but not always):
- theme-less (without storyline)
- built on simple and/or straightforward design and mechanics
- perfect information games
- games that promote one player overtaking their opponent(s)
- little to no elements of luck, chance, or random occurrence
Partially. Here are my "Fives and Dimes". The app just extends this to nickels, pennies, etc...
I can probably help with some of that later, but not all.
4: Ah, O.K., I've never seen that part of BGG. Instead I relied on abstract by BGG wiki which I found via Google. Thank you. 8: Thanks, I haven't seen that, too. I'll probably treat it as specific names (=leave it untranslated), unless I get any other idea.
So a change of a string into plural in any language requires change of few chunks of Java code which – in reverse – requires a similar change of the string in every other language (change the respective string into plurals)? If yes – I can change it. The hardest part will be Java code as I don't know that specific language and will have to do some reverse engineering. (And the problem is I probably won't test it, because my Android Studio can't import and build this project. I'm a noob in that.)
I understand, I suppose that @ccomeaux is essential here. I just pasted that to remember that was still unanswered.
I assume so, but you're the first translator, so this wouldn't be so problematic, for now. I also would wait for @ccomeaux opinion on this and work with what you got for now.
@ccomeaux I've managed to dive deep into the code and understand these last strings… nevertheless there's still 1 string not used in code, 1 long string used only in Androidmanifest.xml
(which I don't understand the context of) and 3 hesitations. I made a Pull request in my fork for you to see it easily (→ see comments).
Are you able to comment there or should I add you as contributors?
Added some corrections, created PR #126. (These are only the strings. I still have no idea who or how should make the app recognize user's device's language).
How to view the app in language other than English? I still see English… My OS locale/lang is set to PL.
I'll take the translation of the app into Polish. Hope I will sit on this in next few days.