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

Add Dutch translation #6244

Open
monty241 opened this issue Nov 11, 2024 · 33 comments
Open

Add Dutch translation #6244

monty241 opened this issue Nov 11, 2024 · 33 comments
Labels
feature-request A request for a new feature

Comments

@monty241
Copy link
Contributor

monty241 commented Nov 11, 2024

Describe the Feature

Add translation for nl-nl (Dutch spoken in the Netherlands).

I can do it; we are native speakers and we have been doing translations for software since 10+ years for over 100.000 keys.

It seems that it is just a messages.po. We can do it using our existing TM (including rights) using Localazy, Texterify or OmegaT.

Are there any additional steps to get the PR through besides doing the actual work, like QA checks to be checked, a language code to be added, etc?

Related Issues

@monty241 monty241 added the feature-request A request for a new feature label Nov 11, 2024
@auroursa
Copy link
Contributor

Fork the project and clone it to your local machine. Then you can refer to the recently merged Thai localization #5879 to add any additional files you need (except for messages.po, as we will generate this later using Lingui).

Once you're ready, run yarn to prepare the local build files. This will automatically download the necessary dependencies.

Finally, execute yarn intl:extract --locale nl --clean to generate the messages.po file. After that, feel free to use your preferred tool to complete the translation.

Let me know if you need any help along the way!

@monty241
Copy link
Contributor Author

Steps succesfully executed:

  • Forked and cloned locally.
  • Installed nodist to install node / npm.
  • Installed yarn.
  • Forced installation of corepack and enabled it using corepack enable.
  • yarn in root folder of bsky.
  • manual changes to various files to make Dutch known (see b6fdde2)
  • yarn intl:extract --locale nl --clean to generate messages.po in folder social-app\src\locale\locales\nl

Translation can start now.

@monty241
Copy link
Contributor Author

@auroursa Is there also a glossary with terms and so-far collected generic translations?

@auroursa
Copy link
Contributor

@auroursa Is there also a glossary with terms and so-far collected generic translations?

As far as I know, there isn't any.

@auroursa
Copy link
Contributor

auroursa commented Nov 12, 2024

Steps succesfully executed:

  • Forked and cloned locally.
  • Installed nodist to install node / npm.
  • Installed yarn.
  • Forced installation of corepack and enabled it using corepack enable.
  • yarn in root folder of bsky.
  • manual changes to various files to make Dutch known (see b6fdde2)
  • yarn intl:extract --locale nl --clean to generate messages.po in folder social-app\src\locale\locales\nl

Translation can start now.

I noticed that it includes changes to the package.json file. Perhaps we should try to avoid modifying it if possible?

@monty241
Copy link
Contributor Author

Thank, reverted it.

@monty241
Copy link
Contributor Author

A few dozen of translations have been done along the process.

@auroursa Is the resulting messages.po in commit 874a624 what is needed?

There are few inconsistencies in the english naming, I will raise for each one a separate issue on the english text.

@auroursa
Copy link
Contributor

auroursa commented Nov 12, 2024

A few dozen of translations have been done along the process.

@auroursa Is the resulting messages.po in commit 874a624 what is needed?

There are few inconsistencies in the english naming, I will raise for each one a separate issue on the english text.

Technically, I haven’t found any issues so far, so feel free to submit the PR whenever you’re ready.

Sorry about that I can’t assist with reviewing the accuracy of the Dutch grammar, at the PR stage, we’ll typically need at least one Dutch-speaking reviewer to help check the translations.

After it’s reviewed by others Dutch-speaking, I believe there’s no reason to decline this high-quality localization PR.

@monty241
Copy link
Contributor Author

OK, thank you for checking it technically. That is the most tricky part.

@monty241
Copy link
Contributor Author

@auroursa The translation is approaching completion and standard reviews.

Regarding reviewing process by other Dutch-speaking:

  • how do I arrange this?
  • Should I find someone on Bsky who is willing to check it or is it assigned from some pool?
  • Is there a reviewer's guideline document with QA checks to be performed?

@auroursa
Copy link
Contributor

@auroursa The translation is approaching completion and standard reviews.

Regarding reviewing process by other Dutch-speaking:

  • how do I arrange this?

  • Should I find someone on Bsky who is willing to check it or is it assigned from some pool?

  • Is there a reviewer's guideline document with QA checks to be performed?

You just need to open a PR and look for any native Dutch speaker to help with the review. Sometimes, there are active volunteers on GitHub who are willing to assist as well, depending on how popular the language is.

Currently, there’s no QA or other formal process. The only requirement is that the translation be reviewed by at least one other native speaker.

@monty241
Copy link
Contributor Author

PR is on #6329

@auroursa I have found a native Dutch speaker with two years of Bluesky experience willing to review them.

How should he enlist as reviewer? Or how should he leave his comments?

@auroursa
Copy link
Contributor

Just need to use the code review tools within the PR to make adjustments. Of course, leaving commits in the PR is also fine—as long as it helps improve the translation.

@monty241
Copy link
Contributor Author

@auroursa OK, thank you! Clear!

@monty241
Copy link
Contributor Author

monty241 commented Nov 24, 2024

The previous release of Dutch translations (#6244) had some issues on the backlog. This issue contains them plus issues arising from the first release when seen in action.

Changes incorporated:

  • annuleer -> annuleren (@Flitskikker)
  • voeg toe -> toevoegen (@Flitskikker)
  • Update all translations for actions (buttons, links) to use the infinitive verb form (@Flitskikker)
  • Including: Copy link > Link kopiëren, Change password > Wachtwoord wijzigen, Share > Delen, Save > Opslaan (@Flitskikker)
  • Dito Confirmations like "Block this account?" should follow the same treatment, so "Dit account blokkeren?" (@Flitskikker)
  • In cases with possessive strings, such as {0}'s profile, translate as Profiel van {0} to prevent translations like "Bas's profiel" (@Flitskikker)
  • I saw a few cases of copying English capitalization (e.g. Confirm Change > Bevestig Wijziging); in Dutch we can use our regular capitalization rules (only the first word, so Wijziging bevestigen) (@Flitskikker)
  • 2 wrong translations with {} placeholders (@Flitskikker)
  • formal -> informal (more specific: u/uw -> je) (@Flitskikker)
  • stripboeken -> strips (@Datagraver)
  • "bij het contacteren van de server" -> "bij het verbinden met de server" (@Datagraver)
  • dismiss: Usually this just means "close" (Dismiss banner > Banner sluiten) (@Flitskikker)
  • enter: "Invoeren" brought 80s terminal vibes in some way, so we translated it as "Invullen" (e.g. Vul hieronder je naam in) (@Flitskikker)
  • modal: I see "modaal venster" is used now, but I think "dialoogvenster" or just "venster" would be more understandable (@Flitskikker)
  • people: We translated this as "personen" to prevent issues with singular/plural strings (1 persoon vindt dit leuk / 2 personen vinden dit leuk, instead of 1 mens vindt dit leuk / 2 mensen vinden dit leuk) In running texts, we did use "mensen" where it was more fitting (e.g. Laat mensen weten hoe je erover denkt!) (@Flitskikker)

Skipped:

  • Add comma between "bent" and "kunt" in "als je een ontwikkelaar bent". Motivation: I am not a Dutch expert but I think it is not needed. (@Datagraver)
  • Perhaps double check for verb tense in source strings. "Blocked post." is now translated as "Geblokkeerd bericht.", while I suspect it's a message shown after blocking a message, so "Bericht geblokkeerd." would be better. But cases like these will probably surface more easily after the translation has gone live (@Flitskikker) -> Motivation: like given.
  • Errors like "Could not load posts", we tend to translate using the present tense (Kan berichten niet laden / De berichten kunnen niet worden geladen). Not necessarily "better" per se, just tradition I guess (@Flitskikker) -> Motivation: please update the translations in messages.po or Localazy as needed. Unsure what to correct exactly.

Later:

  • Inconsistent use of capital for "Bijvoorbeeld" as in "e.g. ..." to "Bijvoorbeeld ..." Motivation: starting a sentence with an abbreviation is not good style. However, when used it should have been capitalized. Unsure in what way this text is used. Of the 8 occurrences only one is capitalized, but all eight have similar structure (@Datagraver).
  • When taken into production: review translations.

Not:

  • handle: I feel this term is not very well known in Dutch. Perhaps "gebruikersnaam" would be better? (@Flitskikker) -> Motivation: it seems an accepted term in Dutch now, but feel free to discuss.
  • feed: This is better known, but "tijdlijn" would be an actual translation that's maybe better understandable for new users? (@Flitskikker) -> Motivation: I am rather new to Bluesky, but feed seems semantically different from Timeline.

CAT-tool used is Localazy, project located at https://localazy.com/p/bsky. I will be happy to give access. Added the following languages to the project in case someone wants to use the tool to translate these European languages for Bluesky:

  • Czech translation of Bluesky
  • Danish translation of Bluesky
  • Portuguese (Euorpean) translation of Bluesky
  • Finnish translation of Bluesky (existing)
  • French translation of Bluesky (existing)
  • German translation of Bluesky (existing)
  • Italian translation of Bluesky (existing)
  • Japanese translation of Bluesky (existing)
  • Bokmal (Norwegian) translation of Bluesky (different from the constructed Norsk)
  • Polish translation of Bluesky
  • Spanish translation of Bluesky (existing)
  • Swedish translation of Bluesky
  • Korean translation of Bluesky (ko_KR) (existing)

Existing translations - if any - have not been imported. In case needed let me know.

XLIFF 2.0 attached, but to ease merging I think it is easier for now to use Localazy.

This one I doubt strongly given the architecture to be correct in the source when data should be shared: "Bluesky is an open network where you can choose your hosting provider. If you're a developer, you can host your own server."

@Flitskikker
Copy link

@monty241
Great work!

I glanced over the translations on Localazy yesterday evening to help update the verb form in additional strings, and to update the tenses in error messages as you suggested. Some minor improvements here and there to other strings (e.g. "Go home" changed from "Ga naar huis" into "Naar startpagina").

@monty241
Copy link
Contributor Author

@Flitskikker Thanks for the appreciation and thanks for further improving the translations!

I have comitted them to my own repository (see b00a6cb) but not yet made a PR to see the outcome in Bluesky when the previous is released. I however am somewhat doubting whether an interim PR might be better, but I am unaware of Bluesky's internal acceptance costs and criteria.

@surfdude29
Copy link
Contributor

In case it's helpful, @/pfrazee gave a brief explanation of a few things related to localization PRs here: #6186 (comment)

@surfdude29
Copy link
Contributor

And one other thing, you can test out the Dutch localization on the dev server at main.bsky.dev, although version 1.95 will hopefully be released in the next few days in any case :)

@Flitskikker
Copy link

Flitskikker commented Nov 25, 2024

I however am somewhat doubting whether an interim PR might be better, but I am unaware of Bluesky's internal acceptance costs and criteria.

I lean towards that it may be better, primarily because of the change from formal to informal.
That way, the first public release will have the form that we settled on.

@monty241
Copy link
Contributor Author

monty241 commented Nov 25, 2024

OK, I will create the PR. Might not be included since I read in #6186 that it might have already settled down, but can try. Great to known about main.bsky.dev for early access to translation.

PR is in #6724

@monty241
Copy link
Contributor Author

Access has been granted to @nilaallj for a Swedish translation (don't know another communication channel). Please remember to all make the (relatively simple) changes to accomodate Swedish as in comment above: #6244 (comment)

@pfrazee
Copy link
Collaborator

pfrazee commented Nov 27, 2024

Okay sorry, I'm confused about the state of this PR versus the other one. Which one are we looking to merge?

@pfrazee
Copy link
Collaborator

pfrazee commented Nov 27, 2024

Oh this isn't a PR, that's why. I may be tired.

@monty241
Copy link
Contributor Author

1.95 brings a number of new translation keys, plus it seems that some elements in the UI are not translated at all.

For UI elements missing translations, I will check whether there are already issues for and if not create logically grouped issue or issues.

The new translation keys have been loaded into Localazy and are being translated. This will lead to a separate issue with a PR.

@monty241
Copy link
Contributor Author

Added generic UI issue #6819 in profile view of user itself for languages with longer texts.

@monty241
Copy link
Contributor Author

@Juanpabl I have added you as trusted translator for Aragonese to https://localazy.com/p/bsky. The existing translations from main have been imported as starting point.

Use Tools -> File management -> Export & download file -> Uncheck "Download all afvailable languages" -> aragonese -> Export & download to get new *.po file. Rename and replace in src/locale/locales/an.

@Juanpabl
Copy link
Contributor

Thanks a lot, @monty241!

@monty241
Copy link
Contributor Author

A PR #6831 was created to update the Dutch translations for 1.95.0. Few if any changes were made after reviewing the Dutch translations for 1.94.0. Most or all changes in this PR are for new introduced resources. Once merged, I will check on https://bsky.app/profile/main.bsky.social

@Juanpabl
Copy link
Contributor

Btw, @monty241, I cannot find any "Tools -> File management" menu... Could you check if configuration is ok?

imachen

@monty241
Copy link
Contributor Author

@Juanpabl My apologies! It seems this is only available to the Owner (which is normally fine since it allows a lot of features). Normally the owner would automatically extract them and process the translations upstream every day or so.

I have worked around as follows. You have 100% for 1.95.0 the Aragonese. I have extracted it to my fork. You can find the file at 5e876e3

My fault is that it is already in the PR (I do not use branches normally).

You can take the file from there. In case again necessary please send me an email at [email protected].

@monty241
Copy link
Contributor Author

@Juanpabl A Spanish translator also joined localazy. I have set things a little more correct up by using branches (I was a little sloppy and we normally use a different process to maintain our own deliverables).

The 1.95.0 for Aragonese is now in https://github.com/monty241/social-app/tree/i18-an branch so you can retrieve it and make your own PR.

@Juanpabl
Copy link
Contributor

Done, thank you! #6857

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request A request for a new feature
Projects
None yet
Development

No branches or pull requests

6 participants