Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Romanian localization #6456

Merged
merged 16 commits into from
Dec 18, 2024
Merged

Conversation

claudiu-cristea
Copy link
Contributor

@claudiu-cristea claudiu-cristea commented Nov 17, 2024

This PR provides the Romanian localization

Glossary

Some term localizations still need discussion. EDIT: All glossary terms were discussed and we've agreed to this list

Original Romanian Not definitive Comments
account cont
chat conversație
conversation conversație
direct message mesaj privat
discover descoperă
feed flux
follower urmăritor
following urmărire
handle numele de utilizator
label etichetă
like apreciere
message mesaj
mute (verb) a pune pe mut
mute pus pe mut
post postare
quote citare
reply răspuns
repost repostare
starter pack pachet de început
tag etichetă
thread discuție
unmute (verb) scoate de pe mut

@claudiu-cristea claudiu-cristea marked this pull request as draft November 18, 2024 15:27
@surfdude29
Copy link
Contributor

As a fellow translator, it's always great to see another localization for Bluesky!

Just so you're aware, one thing to mention is that the devs ask that a localization PR is reviewed by at least one other native speaker.

They seem fairly flexible on how that requirement is met though, so I don't think the person necessarily has to have a GitHub account. It could be a fellow Romanian speaker on Bluesky, for instance :)

@@ -51,6 +52,7 @@ export const APP_LANGUAGES: AppLanguageConfig[] = [
{code2: AppLanguage.ko, name: '한국어 – Korean'},
{code2: AppLanguage.pt_BR, name: 'Português (BR) – Portuguese (BR)'},
{code2: AppLanguage.ru, name: 'Русский – Russian'},
{code2: AppLanguage.ro, name: 'Română – Romanian'},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a tiny suggested tweak here: would it be possible to keep the languages in alphabetical order by code2 and put the Romanian entry above the Russian one?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed. Thanks

@alextecplayz
Copy link
Contributor

I was pointed to this PR after I've submitted my own PR last night / this morning. I have a few concerns (I'm using separators or larger spaces between each issue):

If you were to compare my PR with yours, you will notice that we both address users differently. My PR uses the formal "Dumneavoastră" and the "Dvs." abbreviation, while your PR uses the impersonal "Tu", "Tine", "Voi", etc.

This is not wrong at all or an issue, there are many ways to address an user, and the impersonal variant shouldn't usually be a problem, because even Facebook addresses the user impersonally which seems fitting for a social media app. Not sure about Twitter, though. Ultimately, it's up to Bluesky to decide if they want to address the user(s) formally or informally.

--

For the Romanian mute, unmute equivalent, there isn't a single word that is suitable for that. "Decenzurează" (which isn't a word) or "Reconsideră" have totally different meanings than what the mute / unmute actions are. Consider using "pus(ă) pe mut" and "sco(asă)s de pe mut" instead, they're the closest and most fitting.

For Starter Packs, consider using "Pachet de început" instead of "Pachet de start", no reason to combine Romanian with English words where it's unnecessary.

--

msgid "{0}'s avatar"
msgstr "Avatarul lui {0}"

Consider using gender-neutral forms. Instead of "Avatarul lui" you can use "Avatarul folosit de". While sure, if the translation mentioned the user, "{0} user's avatar", then it would be correct to use the masculine "Avatarul lui {0}" or "Avatarul utilizatorului {0}", but since it's not, it would be much more appropriate to use something neutral, because {0} is likely replaced with the display name of the user.

You missed replacing feed with "flux" in some localized strings:

msgid "{firstAuthorLink} liked your custom feed"
msgstr "{firstAuthorLink} a apreciat feed-ul tău personalizat"

--

Stick to "a redistribui" for consistency instead of various synonyms of repost. Note that "a reposta" is not a Romanian phrase.

msgid "{firstAuthorName} reposted your post"
msgstr "{firstAuthorName} a republicat postarea ta"

--

Consider using "citări" instead of "citate", because you're browsing quotes (as in cites, an action, not as in actual quotes). Not a big deal, but there's a slight difference between the two.

msgid "{0, plural, one {quote} other {quotes}}"
msgstr "{0, plural, one {citat} few {citate} other {de citate}}"

--

These are post controls, you have to keep the form out of brackets as a direct action for the user.

#: src/view/com/util/post-ctrls/PostCtrls.tsx:261
msgid "{0, plural, one {Reply (# reply)} other {Reply (# replies)}}"
msgstr "{0, plural, one {Răspuns (# răspuns)} few {Răspunsuri (# răspunsuri)} other {Răspunsuri (# de răspunsuri)}}"

The correct version would be:
msgstr "{0, plural, one {Răspunde (# răspuns)} few {Răspunde (# răspunsuri)} other {Răspunde (# de răspunsuri)}}",
because PostCtrls would look something like this:
Reply (x amount of replies) Repost (y amount of reposts) Like (z amount of likes)

--

Obviously wrong. Romanian does not have an equivalent to a user handle specifically, so you'd have to use the Romanian equivalent of 'user name' instead, "Nume de utilizator". The literal meaning of "mâner" is the handle of a door, or the part of an object that you can grab and maneuver, and it certainly can't be understood in the context of a social media app. Don't use "identificator" (identifier", because it's different from the username.

msgid "⚠Invalid Handle"
msgstr "⚠Mânere invalid"

Also modify the Romanian strings where you use 'username' with the proper Romanian equivalent as mentioned above, such as:

msgid "Change Handle"
msgstr "Schimbă username-ul"

which becomes "Schimbă numele de utilizator"

--

This refers to following every user / person in a starter pack. "urmărești pe toată lumea" is the correct expression.

#: src/screens/StarterPack/StarterPackScreen.tsx:369
msgid "An error occurred while trying to follow all"
msgstr "A apărut o eroare în timp ce încercai să urmărești totul"

--

Small typos like these, use "a" instead of "ă" when it's this form.

msgid "App Password"
msgstr "Parolă aplicației"

--

It's not the literal app password. It's similar to the App Passwords feature in Google accounts, it's a password for an app, not a password to unlock the current app, I got this one wrong as well. The correct form would be "Parolă pentru aplicații".

#: src/screens/Settings/AppPasswords.tsx:139
msgid "App password deleted"
msgstr "Parola aplicației a fost ștearsă"

--

Use the modern "schiță" instead of "ciornă" for drafts.

#: src/view/com/composer/Composer.tsx:664
msgid "Are you sure you'd like to discard this draft?"
msgstr "Sigur vrei să să renunți la acestă ciornă?"

--

This is an action to block the list, not to view the list of blocked accounts. I'm certain of this because earlier in the src/view/screens/ProfileList.tsx there's the action to un-mute and un-block a list:

if (isMuting) {
        items.push({
          testID: 'listHeaderDropdownMuteBtn',
          label: _(msg`Un-mute list`),
          onPress: onUnsubscribeMute,

#: src/view/screens/ProfileList.tsx:747
msgid "Block list"
msgstr "Listă de conturi blocate"

So the correct translation would be "Blochează lista" and "Pune pe mut lista"

--

"fain" is regional. Consider using something modern like "bine" or even "cool".

msgid "Bluesky is better with friends!"
msgstr "Bluesky este mai fain cu prietenii!"

--

Use "estompează" (imaginea), because we have a Romanian equivalent to the English "blur".

msgid "Blur images"
msgstr "Blur imagine"

--

"Termenii de Serviciu" is wrong, use "Termenii și condițiile" (as in Terms & Conditions) or "Termenii Serviciului" (used less often, however).

msgid "By creating an account you agree to the <0>Terms of Service</0>."
msgstr "Prin crearea unui cont ești de acord cu <0>Termenii de Serviciu</0>."

--

Use "adresa web" (web address) or "site web" (website) instead of "domeniu" (domain), because it has a different literal meaning (property, sector, value interval, but not related to the Web).

msgid "Choose domain verification method"
msgstr "Alege metoda de verificare a domeniului"

--

Use "Apăsați" instead of "click", there's a Romanian equivalent.

msgid "click here"
msgstr "click aici"

--

Use "fereastra" instead of "dialogul". The Romanian definition for dialog is different from what it's supposed to mean in this context, which is a new web page, popup, or window.

msgid "Close active dialog"
msgstr "Închide dialogul activ"

--

Use "meniul de subsol" instead of "footer-ul de navigare".

msgid "Close navigation footer"
msgstr "Închide footer-ul de navigare"

--

Use "copertă" instead of "antet", antet is usually linked to e-mails and web page components, this is more akin to a cover / banner image. Also use "galerie" instead of "vizualizator de imagini", it's much more simple.

msgid "Closes viewer for header image"
msgstr "Închide vizualizatorul pentru imaginea de antet"

--

Use "Regulile comunității" instead of "Ghiduri ale comunității"

msgid "Community Guidelines"
msgstr "Ghiduri ale comunității"

--

Stick to either "compresie" or "comprimare", for consistency.

msgid "An error occurred while compressing the video."
msgstr "A apărut o eroare în timpul compresiei videoclipului."

msgid "Compressing video..."
msgstr "Comprimarea videoclipului..."

--

Typo, use "Versiunea de compilare":

msgstr "Versiunea de aplicației a fost copiată în clipboard"

--

Use "Politica drepturilor de autor":

msgstr "Politica de Copyright"

--

Use "Scădeți luminozitatea" or "(Mod) luminozitate scăzută":

#: src/screens/Settings/AppearanceSettings.tsx:109
msgid "Dim"
msgstr "Dim"

--

Use "Trage imagini aici" instead. The current version suggests that the user should 'throw' something, when it's supposed to imply that the user can drag files over to the text input:

msgid "Drop to add images"
msgstr "Aruncă pentru a adăuga imagini"

--

Use "ex:" instead, it's much more shorter.

msgstr "de exemplu alice"

--

Use "2FA prin email" instead.

#: src/screens/Settings/components/DisableEmail2FADialog.tsx:64
msgid "Email 2FA disabled"
msgstr "2FA Email dezactivat"
#: src/screens/Settings/PrivacyAndSecuritySettings.tsx:47
msgid "Email 2FA enabled"
msgstr "2FA Email activat"

--

These are all of the big things that I've noticed so far from a look through the file. There are, of course, still instances where you address the user incorrectly, there are some minor typos and words that use the wrong conjugation, I'm sure you can fix that easily enough.

And finally, of course, update the file to the latest version, they did add a lot more strings recently, some of which I've translated, which can be seen from line 9239 onward.

@claudiu-cristea
Copy link
Contributor Author

Hi, @alextecplayz

Nice to work together on this:

If you were to compare my PR with yours, you will notice that we both address users differently. My PR uses the formal "Dumneavoastră" and the "Dvs." abbreviation, while your PR uses the impersonal "Tu", "Tine", "Voi", etc.

Well, I had the same dilemma initially. But thinking on this more, I came to this idea: This is a social media tool and I think a more colloquial, familiar wording is better. "Dumneavoastră" is too ceremoniously. I see more appropriate a direct addressing. Also the "Dvs." abbreviation should be avoided anywhere (I know it's widely used but it's incorrect)

This is not wrong at all or an issue, there are many ways to address an user, and the impersonal variant shouldn't usually be a problem, because even Facebook addresses the user impersonally which seems fitting for a social media app. Not sure about Twitter, though. Ultimately, it's up to Bluesky to decide if they want to address the user(s) formally or informally.

I would say we should stick one way or another but not both. Keep in mind that English has only one variant, they don't have this issue.

@claudiu-cristea
Copy link
Contributor Author

claudiu-cristea commented Nov 25, 2024

If you like to contribute to this branch, I can give you permissions to my fork. Just let me know.

@alextecplayz
Copy link
Contributor

Hi, @alextecplayz

Nice to work together on this:

Well, I had the same dilemma initially. But thinking on this more, I came to this idea: This is a social media tool and I think a more colloquial, familiar wording is better. "Dumneavoastră" is too ceremoniously. I see more appropriate a direct addressing. Also the "Dvs." abbreviation should be avoided anywhere (I know it's widely used but it's incorrect)

I would say we should stick one way or another but not both. Keep in mind that English has only one variant, they don't have this issue.

Figured as much, we should stick to the informal language for this, then.

If you like to contribute to this branch, I can give you permissions to my fork. Just let me know.

Sure, I'd love to help!

@claudiu-cristea
Copy link
Contributor Author

Sure, I'd love to help!

Sent invite

@alextecplayz
Copy link
Contributor

My commit should update it with both my changes and to update it to the latest strings. It should be pretty complete, but there's a few new strings (commented and uncommented) that I've yet to localize.

Copy link
Contributor Author

@claudiu-cristea claudiu-cristea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for contribution and I'm sorry that I didn't had time to update the PR. I've passed through whole file and everything looks good. I've only spotted few untranslated strings

Comment on lines 321 to 324
#: src/screens/StarterPack/Wizard/index.tsx:528
#: src/screens/StarterPack/Wizard/index.tsx:525
msgctxt "feeds"
msgid "<0>{0}, </0><1>{1}, </1>and {2, plural, one {# other} other {# others}} are included in your starter pack"
msgstr "<0>{0}, </0><1>{1}, </1>și {2, plural, one {un alt flux} few {alte # fluxuri} other {alte # de fluxuri}} sunt incluse în pachetul tău de start"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same: untranslated

msgctxt "profiles"
msgid "<0>{0}, </0><1>{1}, </1>and {2, plural, one {# other} other {# others}} are included in your starter pack"
msgstr "<0>{0}, </0><1>{1}, </1>și {2, plural, one {un alt utilizator} few {alți # utilizatori} other {alți # de utilizatori}} sunt incluși în pachetul tău de start"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a suppressed translation but it seems the translation has been removed

Comment on lines 2465 to 2467
#: src/view/com/util/post-embeds/VideoEmbedInner/VideoEmbedInnerWeb.tsx:57
msgid "Embedded video player"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untranslated

Comment on lines 2543 to 2546
#: src/view/com/util/post-embeds/VideoEmbedInner/web-controls/VideoControls.tsx:405
msgid "Enter fullscreen"
msgstr ""

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untranslated

Comment on lines 3301 to 3304
#: src/view/com/notifications/FeedItem.tsx:600
msgctxt "action"
msgid "Hide"
msgstr "Ascunde"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing translation

Comment on lines 5587 to 5614
#: src/view/com/composer/Composer.tsx:915
#: src/view/com/composer/Composer.tsx:933
msgctxt "action"
msgid "Reply"
msgstr "Răspunde"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untranslated

Comment on lines 5634 to 5654
#: src/view/com/post/Post.tsx:204
#: src/view/com/posts/FeedItem.tsx:553
msgctxt "description"
msgid "Reply to <0><1/></0>"
msgstr "Răspunde la <0><1/></0>"
msgstr ""

#: src/view/com/posts/FeedItem.tsx:544
msgctxt "description"
msgid "Reply to a blocked post"
msgstr "Răspunde la o postare blocată"
msgstr ""

#: src/view/com/posts/FeedItem.tsx:546
msgctxt "description"
msgid "Reply to a post"
msgstr "Răspunde la o postare"
msgstr ""

#: src/view/com/post/Post.tsx:202
#: src/view/com/posts/FeedItem.tsx:550
msgctxt "description"
msgid "Reply to you"
msgstr "Răspunde la tine"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four entries untranslated

Comment on lines 7367 to 7411
#: src/view/com/util/error/ErrorScreen.tsx:83
#: src/view/com/util/error/ErrorScreen.tsx:82
msgctxt "action"
msgid "Try again"
msgstr "Încearcă din nou"
msgstr ""
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untranslated

Comment on lines 7469 to 7473
#: src/screens/Profile/Header/ProfileHeaderStandard.tsx:202
msgctxt "action"
msgid "Unblock"
msgstr "Deblochează"
msgstr ""

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untranslated

@@ -8,19 +8,19 @@ msgstr ""
"Language: ro\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
"PO-Revision-Date: 2024-11-28 21:20+0000\n"
"Last-Translator: \n"
"Language-Team: claudiucristea.ro\n"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add your handle

@alextecplayz
Copy link
Contributor

Thank you for contribution and I'm sorry that I didn't had time to update the PR. I've passed through whole file and everything looks good. I've only spotted few untranslated strings

No worries! I'll try to localize the remaining strings shortly.

@claudiu-cristea
Copy link
Contributor Author

I've also updated the glossary according to the suggestions made by @alextecplayz

@surfdude29
Copy link
Contributor

Would it be possible to add one more change to this PR to enable the Romanian localization? If you could add an 'ro', entry to app.config.js here please, that would be great:

social-app/app.config.js

Lines 111 to 112 in 5f4a0f2

'pt',
'ru',

This will enable Romanian to be displayed as a supported language in the App Store listing, and it will also allow the TextInput context menus to be translated into Romanian for iOS users who have this set as their device language :)

@claudiu-cristea
Copy link
Contributor Author

claudiu-cristea commented Dec 2, 2024

@surfdude29, fixed. Thanks

@alextecplayz, regenerated & finished the untranslated. Could you, please, review? Also, could you, please, add your handle in the .po header. Thanks

@claudiu-cristea claudiu-cristea marked this pull request as ready for review December 2, 2024 15:43
@claudiu-cristea
Copy link
Contributor Author

@surfdude29 the Romanian localization has been worked by two native Romanian speakers (@alextecplayz and me) and we've cross-reviewed each other's work. This is ready for BSky developers review

@surfdude29
Copy link
Contributor

surfdude29 commented Dec 4, 2024

@claudiu-cristea Fantastic, then it looks like it's ready for @pfrazee to review and hopefully merge when he next cuts a release 🚀

@claudiu-cristea
Copy link
Contributor Author

@surfdude29 @pfrazee, thank you. Any perspective with this to be merged? I'm only worried about having to follow on main branch changes and new strings coming. I prefer we create new PRs when original strings are added/changed

@surfdude29
Copy link
Contributor

@claudiu-cristea Only @/pfrazee will know for sure, but @/gaearon said in #7136 "... just before the release ...", it's been about three weeks since the 1.95 release was cut, and I'm guessing the team want to cut a final release of 2024 before the holidays, so... maybe in the next few days? 👀

Copy link
Collaborator

@pfrazee pfrazee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed the time has come!

Thank you so much everybody!

@pfrazee pfrazee merged commit afd338b into bluesky-social:main Dec 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants