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

Translations of novelWriter #93

Open
vkbo opened this issue Oct 30, 2019 · 165 comments · Fixed by #673, #676, #680, #679 or #681
Open

Translations of novelWriter #93

vkbo opened this issue Oct 30, 2019 · 165 comments · Fixed by #673, #676, #680, #679 or #681
Assignees
Labels
discussion Meta: Feature discussions help wanted Note: Assistance needed i18n Component: Internationalisation information Meta: No actions required user interface Component: General user interface

Comments

@vkbo
Copy link
Owner

vkbo commented Oct 30, 2019

As of January 2022, translations are managed through the crowdin project page.

If you want the repository credit for large translation efforts, you can make a direct pull request. Otherwise, please don't make pull requests for translations. If you have produced a translation file locally, you can upload it yourself directly on the Crowdin page, and your translations will be added automatically.

If you want to contribute a new translation, or have any other relevant questions, please make a post in this issue thread.

Going forward, the process will be as follows:

  • For each pre-release of novelWriter, the Main GUI translation file will be updated and uploaded to the Crowdin tool.
  • At the full release, the translation files, in whatever state they may be, will be downloaded and added to the release.
  • If necessary, files will also be updated for patch releases.

Last updated on 2022-02-12

@vkbo vkbo added the user interface Component: General user interface label Oct 30, 2019
@vkbo vkbo added this to the Version 1.0 Release milestone Oct 30, 2019
@vkbo vkbo self-assigned this Oct 30, 2019
@vkbo vkbo removed this from To Do (General) in Release 1.0 - Core Features Jun 29, 2020
@vkbo vkbo changed the title Translation ready Translations of novelWriter Jul 26, 2020
@vkbo vkbo pinned this issue Jul 26, 2020
@jyhelle
Copy link
Contributor

jyhelle commented Oct 7, 2020

volunteering for French when ready ...
regards,
Jan

@vkbo
Copy link
Owner Author

vkbo commented Oct 7, 2020

Excellent. I will try to get the translation framework ready soon.

@vkbo vkbo added the help wanted Note: Assistance needed label Nov 25, 2020
@vkbo vkbo removed this from the Version 1.0 Release milestone Dec 11, 2020
@longqzh
Copy link
Contributor

longqzh commented Jan 20, 2021

I can translate to Korean and Chinese. Let me know if it ready :)

@bkmeneguello
Copy link
Contributor

I can translate to Brazillian Portuguese and maybe help with the i18n development

@vkbo
Copy link
Owner Author

vkbo commented Feb 4, 2021

I can translate to Brazillian Portuguese

Excellent

and maybe help with the i18n development

If you have any experience with this for PyQt5 projects, it would be interesting to have a topic on the discussions page on how to implement it. I have made one branch in the past trying to do this, but abandoned it in the end.

@bkmeneguello
Copy link
Contributor

I started a POC this weekend, I intend to open a WIP PR soon.

@vkbo
Copy link
Owner Author

vkbo commented Feb 8, 2021

I had a look at your branch, and it already looks good. Thanks a lot for doing this. We can discuss more in the WIP PR, but two things just from the start:

  • The PR should be based on the current dev branch, as it will go in for release 1.3. There are some GUI changes in the dev branch that will likely affect this PR. Mainly in build.py, but there are also two new GUI files in the current main branch added in 1.1, which were merged after you forked the repo.
  • Please also run flake8 on the code to check the coding style if you haven't already. It's described in the CONTRIBUTING file what is checked and what is ignored. It looks like some of the code lines are too long to comply with PEP8, but I may be mistaken. The flake8 check is run on push to the PR, so it will anyway run the check for you.

Edit: I'll add a note of the post-1.0 branching policy in the CONTRIBUTING file. I intend to keep main on stable code, and do all new development for the next releases on the dev branch. It makes it less risky for users to just clone main and run the code. Only patches will be applied directly to main going forward.

@bkmeneguello
Copy link
Contributor

About the linter, I'm just adding the translations as fast as possible, I'll run flake8 before open the PR.
I noticed the large merge you did recently, I'll rebase accordingly too.
Also I'll reorganize the commits in a more logical order.
But thanks for the feedback!!

@bkmeneguello
Copy link
Contributor

@longqzh

I added translation support and portuguese translation, it would be nice if you could check what is required to proper chinese internationalization.

@vkbo
Copy link
Owner Author

vkbo commented Feb 18, 2021

Thanks to @bkmeneguello, the internationalisation effort for novelWriter is now in the dev branch, and will work its way into the main branch for release version 1.3. Bruno has provided the Portuguese translation, and I've added one of the Norwegian written forms.

This issue will be used to continue to coordinate the translation effort. I think it's a good idea to not make translations continuously, and instead focus on the full releases, and perhaps also select pre-releases. We will see what works best. Note that support for RTL languages is likely not complete at this point.

A brief guide has been added to the i18n folder describing how to contribute translations: https://github.com/vkbo/novelWriter/tree/dev/i18n

Since text is inserted into the exported project, a set of translation files have been added for the three words plus the "number words" used for this. These are just JSON files, and should be easy to translate. These work independently from the main GUI translation files, and I've added a separate dropdown box on the Build Novel Tool for selecting the language for exports.

@bkmeneguello
Copy link
Contributor

@jyhelle NW is now ready for French!

@jyhelle
Copy link
Contributor

jyhelle commented Feb 18, 2021 via email

@vkbo
Copy link
Owner Author

vkbo commented Feb 18, 2021

Great! Just keep in mind that the manual is a work in progress and still changes quite often as I get feedback from users who ask for clarifications. I am also continuously adding to it.

But the translations of the manual don't need to follow that closely. The most important thing is that they are helpful to the users.

@vkbo
Copy link
Owner Author

vkbo commented Feb 18, 2021

I have never looked into what's required for translations of readthedocs documentation, but I found a guide here: https://docs.readthedocs.io/en/stable/guides/manage-translations.html

@vkbo
Copy link
Owner Author

vkbo commented Nov 26, 2023

The translation files have been updated for the 2.2 release. I plan to do the actual release in a couple of weeks if everything is fine in the release candidate.

A number of the translations are listed as new because they have moved, but you should be able to just copy the old translations. They are listed in the translation UI as novelWriter translations with a 100% match. This is the case for most translations from the Project Tree context menu. Since the context menu has grown rather complicated, all the code has been moved, and unfortunately that means the translation strings have "changed address" too.

@vkbo
Copy link
Owner Author

vkbo commented Feb 24, 2024

The translation files have been updated for the 2.3 release.

It looks like there are a lot of new translations, but that's misleading. All of the translations on the Preferences dialog have moved, so they all come up as new translations. However, I've uploaded the old translations for most of these strings from the previously translated files, so they are pre-filled. They need to be re-approved that's all. Some of them have changed a little, so some of them do need re-translating.

There are also a bunch of new ones too though (about 10%), but it took me not much more than 30 min to translate the Norwegian file. Hopefully this is not too much work for the other languages either. I've uploaded a bunch of screenshots too, so most of the strings should have some context.

@mvdkleijn
Copy link
Contributor

The translation files have been updated for the 2.3 release.

It looks like there are a lot of new translations, but that's misleading. All of the translations on the Preferences dialog have moved, so they all come up as new translations. However, I've uploaded the old translations for most of these strings from the previously translated files, so they are pre-filled. They need to be re-approved that's all. Some of them have changed a little, so some of them do need re-translating.

There are also a bunch of new ones too though (about 10%), but it took me not much more than 30 min to translate the Norwegian file. Hopefully this is not too much work for the other languages either. I've uploaded a bunch of screenshots too, so most of the strings should have some context.

Working on the Dutch one in between bouts of attention for the kid 😋

@vkbo
Copy link
Owner Author

vkbo commented Feb 25, 2024

The planned release date for 2.3 is 10 March 2024. As always, I can update translations in patch releases after this, but the more that are included at the main release, the better. Thanks for the contributions! 😃

@mvdkleijn
Copy link
Contributor

The planned release date for 2.3 is 10 March 2024. As always, I can update translations in patch releases after this, but the more that are included at the main release, the better. Thanks for the contributions! 😃

Dutch is 100% done and approved.

@HeyMyian
Copy link
Contributor

There seems to be an untranslated string in the dialog popup after update:

You are now running novelWriter version x.x.

@HeyMyian
Copy link
Contributor

HeyMyian commented Mar 12, 2024

There is a string Add that I translated as [empty translation] because no single word here makes sense in German. [empty translation] however did not carry over to the application, "Add" is still displayed. Is there a way to do this? In the meantime, I updated this string's translation with a single space.

I've also fixed some minor mistakes in the German translation for the next release.

Looking through this, when creating a new project with empty chapters, scenes, and note folders, these items are created with English labels in the novel tree. It seems to me though that we should already have all of those words as translations, so the translations should probably be used. The Example Project can stay as it is, imo.

@HeyMyian
Copy link
Contributor

If you're looking to cut down on translation word count or be more economic, there is a duplicate translation for Characters, Words, Paragraphs below the project tree vs. in the outline view. There might be some other duplicated translations in Crowdin, but in this case, the mentioned strings are used in the exact same context and could be cut?

@vkbo
Copy link
Owner Author

vkbo commented Mar 12, 2024

There seems to be an untranslated string in the dialog popup after update:

You are now running novelWriter version x.x.

I see there is a syntax error in the formatting. The version number is inserted prior to translation, so the lookup fails. Can you make a bug report?

@vkbo
Copy link
Owner Author

vkbo commented Mar 12, 2024

There is a string Add that I translated as [empty translation] because no single word here makes sense in German. [empty translation] however did not carry over to the application, "Add" is still displayed. Is there a way to do this? In the meantime, I updated this string's translation with a single space.

I've also fixed some minor mistakes in the German translation for the next release.

Looking through this, when creating a new project with empty chapters, scenes, and note folders, these items are created with English labels in the novel tree. It seems to me though that we should already have all of those words as translations, so the translations should probably be used. The Example Project can stay as it is, imo.

It is much better if you create new issues for these things. I cannot mark anything as resolved in this thread.

@HeyMyian
Copy link
Contributor

Sorry, I guess I just wanted to talk 😅 I'll create new issues.

@vkbo
Copy link
Owner Author

vkbo commented Mar 16, 2024

I would like to make the 2.3.1 release tomorrow, since there are a few minor issues that have been corrected, including several related to translations.

Dutch and Spanish are still missing the translations of the 15 new words added from these fixes. So if @mvdkleijn and @tmarplatt has a chance to add those, that would be great. All the other complete translations for 2.3 are updated.

Portuguese and French are still far behind, although French is almost fully translated but not approved. It would be great to have the French translation in for 2.3.1 as well.

@mvdkleijn
Copy link
Contributor

I would like to make the 2.3.1 release tomorrow, since there are a few minor issues that have been corrected, including several related to translations.

Dutch and Spanish are still missing the translations of the 10 new words added from these fixes. So if @mvdkleijn and @tmarplatt has a chance to add those, that would be great. All the other complete translations for 2.3 are updated.

Portuguese and French are still far behind, although French is almost fully translated but not approved. It would be great to have the French translation in for 2.3.1 as well.

I will add them tonight. 👍

@mvdkleijn
Copy link
Contributor

Done. FYI, I also did the three French sentences though I did not approve anything (if I even could)

@vkbo
Copy link
Owner Author

vkbo commented Mar 17, 2024

Thanks! It's a bit frustrating that the French translation is complete, but only 69% approved. I've messaged the guy who did it twice, but no response. It seems I will have to release without it again.

@vkbo
Copy link
Owner Author

vkbo commented Apr 6, 2024

I released the 2.4 release candidate today, and have therefore uploaded the translation files for 2.4. While translating Norwegian, I made a few changes, so you probably all received at least a couple of email. There are a bunch of new strings added, mostly to the Build Tool. It's still not a lot fo text, about 55 new labels. I have updated screenshots for nearly all of it.

Tentative release date for 2.4 is the weekend of April 20-21.

@vkbo
Copy link
Owner Author

vkbo commented Apr 6, 2024

I see @HeyMyian stopped on the "Hard Scene" translation into German. I was also uncertain on the correct term for Norwegian, so I just called them "Alt. scene" instead. Short for "Alternativ" obviously.

Please just make your best judgement here. I actually considered just calling them "Alt. Scene" in English too to make them more general, but at least in English there is an established term for what they're for.

@tmarplatt
Copy link
Contributor

I see @HeyMyian stopped on the "Hard Scene"

So it's a new feature of scene breaks, giving authors more control on separator formatting. Where entering an actual heading is optional to either format.

It's not really a qualifier of the scene itself. Therein lies the confusion. There's not much room to work with but the strings should rather be named “[Soft/Hard] Scene Break Format” or something to that effect.

As usual I'm sorry for suggesting a change in a different ticket instead of creating one.

@vkbo
Copy link
Owner Author

vkbo commented Apr 7, 2024

So it's a new feature of scene breaks, giving authors more control on separator formatting. Where entering an actual heading is optional to either format.

Yes, it's purely an optional format. There is no other effect of this anywhere in novelWriter. Same as Unnumbered Format for chapters really.

It's not really a qualifier of the scene itself. Therein lies the confusion. There's not much room to work with but the strings should rather be named “[Soft/Hard] Scene Break Format” or something to that effect.

That's why I'm leaning towards just calling the second one "Alternative Scene Format". It removes the connection to Soft/Hard Scene Break terminology and I can leave that to the documentation.

As usual I'm sorry for suggesting a change in a different ticket instead of creating one.

It's on-topic to discuss translation issues here too, so it's not a problem. Just need a ticket for tracking actual changes to implement. It's generally why I encourage discussion threads for longer feature discussions, but this thread was started long before discussions in GitHub existed, otherwise it probably would belong there.

@mvdkleijn
Copy link
Contributor

It's on-topic to discuss translation issues here too, so it's not a problem. Just need a ticket for tracking actual changes to implement. It's generally why I encourage discussion threads for longer feature discussions, but this thread was started long before discussions in GitHub existed, otherwise it probably would belong there.

Probably off-topic 😋 and you might already be aware, but I think you can move an issue to discussions. That effectively transforms it into a discussion. (I believe)

@vkbo
Copy link
Owner Author

vkbo commented Apr 7, 2024

Yes, but the threading in discussions is horrible, and converting an issue doesn't apply threading. The better option would be to start a new one, but this one works well as it is, so ... meh ...

@HeyMyian
Copy link
Contributor

HeyMyian commented Apr 8, 2024

I see @HeyMyian stopped on the "Hard Scene" translation into German.

I am so transparent 😄

I only caught the implementation discussion of hard scenes on the side so when it came to translating the string I went "????"

I opted to translate it as "Szenenumbruch" (scene break), is that approximately what it does? Analogous to "line break" or "page break".

@vkbo
Copy link
Owner Author

vkbo commented Apr 8, 2024

I opted to translate it as "Szenenumbruch" (scene break), is that approximately what it does? Analogous to "line break" or "page break".

No, not really. "Scene Format" and "Hard Scene Format" are the same functionality. The former applies to ### headers and the latter to ###! headers that's all. You can use them to distinguish between long and short time skips, pov change vs same character, and a bunch of other shifts. The intention is that you can format one as a blank line, and another as a scene separator for a final manuscript, but keep the titles in place for when you create a draft for reading through.

The point here is to allow more flexibility in how you split up your text. Some people have used section headings #### for the minor shifts, which works just fine too. However, it is nice to keep all scenes on the same layout level, so having two scene formats solves that problem.

This is also why I think calling it "Alt. Scene Format" may be better as it doesn't imply a specific usage. I actually think I want to change this before the full release. So be ready for a couple of more strings to translate.

@HeyMyian
Copy link
Contributor

HeyMyian commented Apr 8, 2024

Thanks, I followed that "alternative" example for now.

I saw you tentatively plan for the update on the April 20 weekend. I'll always sit with my unapproved translations for a while longer; sometimes it helps to look at them again with fresh eyes. If anything German isn't approved when you are ready for the release, you can always ping me on Crowdin.

@vkbo
Copy link
Owner Author

vkbo commented Jun 22, 2024

New translation strings for the 2.5 release have been uploaded. I see that people were starting translating even before I had a chance to update the screenshots, but they have been updated too now. 😄

As usual, I plan for about two weeks from the RC release to the final release. If all translations are done early, and there are no issues with the release candidate, I may release it earlier.

@Nauthizz
Copy link

Hello,

I'd like to contribute a Polish translation for novelWriter.

I read the guidelines but I'm still a bit at a loss how to do everything properly. I joined the project at Crowdin, but it seems I can't add a new language myself.

I've already made a test run, translating some strings in Qt Linguist (Linux user here) and testing it locally. I really like this workflow, so I think I'd prefer to upload a ready-made .ts file. The problem is I took the nw_base.ts from 2.4.4 version - is there a way to update the file without losing the translation or do I have to start anew?

@vkbo
Copy link
Owner Author

vkbo commented Jun 23, 2024

I have added Polish now. I have to add new languages manually as they use up the project quota.

As for local translation, you should first copy the nw_base.ts file to the correct language code, nw_pl_PL.ts I think. You can then update it by running ./pkgutils.py qtlupdate i18n/nw_pl_PL.ts. It won't change any completed translation strings.

@vkbo
Copy link
Owner Author

vkbo commented Jun 23, 2024

You should be able to upload translation files here:
image

If you can't access this area, send me a DM on Crowdin and I'll look into it.

@Nauthizz
Copy link

Thanks! I uploaded both files, all works with no problem. I will reupload the GUI one as soon as I get more strings done. I will need to check it further for consistency too, because I think for now I have two different translations for "References" going. How does the approval process work?

As for local translation, you should first copy the nw_base.ts file to the correct language code, nw_pl_PL.ts I think. You can then update it by running ./pkgutils.py qtlupdate i18n/nw_pl_PL.ts. It won't change any completed translation strings.

I've been generating the .qm file for testing directly from Qt Linguist (there is an option to do so). The command requires PyQt6 and I have a slight problem with updating my system...

@vkbo
Copy link
Owner Author

vkbo commented Jun 23, 2024

I've been generating the .qm file for testing directly from Qt Linguist (there is an option to do so). The command requires PyQt6 and I have a slight problem with updating my system...

Yes, the updater from PyQt5 uses an outdated ts file format. It was never updated in PyQt5, but is in PyQt6. The files are still compatible with Qt5, so it's a choice the PyQt maintainer made. He may have updated it in PyQt5 later on. I can always check again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Meta: Feature discussions help wanted Note: Assistance needed i18n Component: Internationalisation information Meta: No actions required user interface Component: General user interface
Projects
None yet