jonaswinkler / paperless-ng

A supercharged version of paperless: scan, index and archive all your physical documents

Home Page:https://paperless-ng.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Translation of Paperless-ng

jonaswinkler opened this issue · comments

In an effort to provide Paperless-NG in multiple languages, I've started a translation project at crowdin, which is free for open source projects.

https://crowdin.com/project/paperless-ng (please head over to paperless-ngx)

I will provide English and German translations, but will be unable to provide anything more than that. If you wan't to see paperless in your own language, please help out! The project page shows the current languages of paperless. If you want a new language added to the project, either mention me in this issue or post a message in the discussion section at crowdin.

Some notes about translation.

  • There are two resources. "src-ui/messages.xlf" is what contains the translation strings for the front end. This is important. "django.po" contains strings for the administration section of paperless, which is nice to have translated.
  • Keep in mind that most of these strings are used on buttons, menu items, etc. The translated string should therefore not be much longer than the English original.
  • Translation units may contain placeholders. These usually mean that there's a name of a tag or document or something in the string. You can click on the placeholders to copy them.
  • Translation units may contain plural expressions such as {PLURAL_VAR, plural, =1 {one result} =0 {no results} other {<placeholder> results}}. Copy these verbatim and translate only the content in the inner {} brackets. Example: {PLURAL_VAR, plural, =1 {Ein Ergebnis} =0 {Keine Ergebnisse} other {<placeholder> Ergebnisse}}
  • Changes to translations in crowdin will get pushed into the repository automatically.

I found it pretty hard to find good German translations for some of the terms in paperless. This usually indicates that the given term might not be the best one to use in English and we should consider finding better terms for some features.

  • Saved View: This was "Saved filter" before, but since it also includes sorting, I renamed it to this.
  • Matching algorithm: Is it clear what this is? We're used to saying "to match a regex against something", therefore "Matching". Maybe it's just me failing to find a good translation.
  • Any, All, Fuzzy, etc. I don't think its very clear what these do without consulting the documentation. Can we do better?

I'd like to hear about these (and maybe other) from some native English speakers.

Are you looking to replace Saved View with something different? That one seems quite clear.

Any, All, Fuzzy, etc. I don't think its very clear what these do without consulting the documentation. Can we do better?

Even after reading the docs I have no idea what Fuzzy match can provide, especially in contrast to Auto. Misspellings maybe?

Contains All / Contains Any might be a little clearer. Similarly Exact Match might be better than Literal.

This may be a different discussion, but if you're up for change, would something like this translate well? Perhaps with "Auto" as the default and with the lower items hidden, while "Search" brings up the extra options?

Regardless, I think some examples should show up in the Match field's placeholder/hint text.

Screenshot from 2020-12-30 20-01-21

Screenshot from 2020-12-30 19-58-36

Are you looking to replace Saved View with something different? That one seems quite clear.

Alright, good to know!

Even after reading the docs I have no idea what Fuzzy match can provide, especially in contrast to Auto. Misspellings maybe?

That searches for terms that are similar to the provided matches. possibly useful for when OCR messes up. I never used it though.

Regarding the screenshots:

"When document contains DROPDOWN of the following" is hard to translate, and doesn't really work for "exact match" or "regex". However, providing much longer names for the algorithms in the drop down might be the key here.

I think he's also asking about #164 . Do you remember what the issue was with hiding it? I can take a look if you want, I see theres a lot of other stuff going on right now!

Not sure. I just couldn't hook up the disabled attribute with the reactive form model.

Btw, localization support is on the development branch now. The next release will have localization support. Paperless will then support English, German, and any language that's sufficiently translated (untranslated strings will appear in English). Translating the .xlf file is mandatory, the .po is nice to have.

Yea that localization tool seems awesome, crazy how fast you got all that spun up, seems like will be very straightforward for people to add other languages. Sorted out that other thing, I think.

image

First language complete! 👍

Regarding language updates: I'll get pull requests whenever you feel like updating translations in transifex.

image

First language complete! +1

Regarding language updates: I'll get pull requests whenever you feel like updating translations in transifex.

Sadly, it mistook my name and mail address :( Anyway, nice! ;-)

Why is "Name" not translated?

Missed that one. Fixed. It will reuse existing translations.

Sadly, it mistook my name and mail address :( Anyway, nice! ;-)

I was unaware of that until I've seen this info pop up in the generated PRs, and at that point it was already too late. You can configure your mail address to not show up in translation files. Very annoying that this is turned off by default.

Yes, I was unaware too :-)

@jovandeginste @Philmo67 @zjean

I'm not entirely sure how update notifications are handled with this tool - do you get any? I added a couple strings to the tool that cover added and changed features. I'll be doing some more testing in the next few days before getting this out.

@jonaswinkler
No notification from transifex. I didn't change any notification setting though.
Let's get back to work :-)

@jonaswinkler Are you planning to show the possible languages into the currently selected language? One issue I have with that, is that if I accidentally pick the wrong language (eg. Mandarin Chinese), it may take a long time to find a language I actually understand, to have a workable system 😉

My 2 cents: either

  • show the language in it's own language (never translated - if I don't understand Mandarin, there is no use for me to be able to read it in the list of available languages)
  • show both: Nederlands (荷蘭語) (In case I selected Mandarin - I hope this is correct, since I just used Google translate...).
  • always show in English as second: Nederlands (Dutch) - no matter what language I have currently selected

Are you planning to show the possible languages into the currently selected language? One issue I have with that, is that if I accidentally pick the wrong language (eg. Mandarin Chinese), it may take a long time to find a language I actually understand, to have a workable system

If you're referring to why the actual names of the supported languages are in the translation strings: That's suggested by the documentation of the framework I used (django). I'm not using that anywhere, yet.

That was the reason for the question, indeed 😁

Very nice to be able to use Paperless-ng in your own language :-) thank you !

Some & quot ; are appearing in french, it seems I'll have to replace them all with some " (basic mistake, I should have asked...).
The descriptions of some matching algorithms are also too long, they exceed the width of the dropbox.
Some terms should be replaced by more adequate synonyms.
I will do a correction session as soon as possible.

So ... I just noticed the translation on my installation today, because my desktop is not broadcasting my native language (but my laptop is). There is no place where I can change/override this in the settings?

Also, I found these untranslated (in the admin settings):

  • Failed tasks
  • Scheduled tasks
  • Successful tasks

Some confusion arises from terms like "any", which is sometimes translated to "all". Eg. in Dutch and German (my German is baaaad):

  • msgid "has any tag"
  • msgstr "heeft elke tag" (nl)
  • msgstr "Hat irgendein Tag" (de)

While in French:

  • msgid "has any tag"
  • msgstr "porte l'une des étiquettes"

I try to fix these in Dutch when I encounter them (sometimes only when using the app)

Also, I found these untranslated (in the admin settings):

  • Failed tasks
  • Scheduled tasks
  • Successful tasks

I don't have any control over that, this is an extension that is not translated. Translation would have to be done at the repository over at "django-q", but it looks like the source code isn't even ready for that.

In the long run, I want to have the front end in a state where the admin interface is not needed at all.

Some confusion arises from terms like "any", which is sometimes translated to "all". Eg. in Dutch and German (my German is baaaad):

I don't understand. Where exactly is "any" translated to "all"?

Re. django-q: understood; I think that's a good goal, since it kinda breaks the flow...

Re. translations:

"elke" in Dutch means "each" in English.

According to Google Translate, translation of "Hat irgendein Tag" is different to English than to Dutch (???):

  • Has any day (English)[https://translate.google.com/?hl=nl&sl=auto&tl=en&text=Hat%20irgendein%20Tag&op=translate]
  • Heeft elke dag (Dutch)[https://translate.google.com/?hl=nl&sl=auto&tl=nl&text=Hat%20irgendein%20Tag&op=translate]

So, German is correct, I guess, and only Dutch was wrong?

I don't know if the Dutch translation is wrong; I dont speak that :)

"Has any tag" literally refers to a document that has at least one tag assigned, no matter what that tag is.

Yes, that is what I understand "any" to mean. I updated the Dutch translation.

Is the login/logout screen translatable ?

Good catch. I'll add strings for that.

About last added strings : "Document editor" is "the tool used to read the documents within Paperless-ng" ? (edit != read)

It refers to the document details page, where you set the title, date, correspondents, etc of a single document and have the preview displayed on the right.

Not sure if it is a translation issue as I cannot find the involved string(s) :
after adding and suppressing only 1 tag, the confirmation dialog shows non-quoted labels
firefox_tI3fvEDgW3
The enumeration of multiple additions or deletions contains quoted labels.
I also need to review the possibility of having singular or plural on the labels here.

after adding and suppressing only 1 tag, the confirmation dialog shows non-quoted labels

That's an issue with how the text is generated, and not with the translation. Noted!

I also need to review the possibility of having singular or plural on the labels here.

This would mean a lot of new strings that cover all cases (singular tags added, plural tags removed, both plural, both singular, etc).

Maybe a more structured message would be better, such as

This operation will perform the following operations on x selected documents.
Tags to be added:

  • Tag1

Tags to be removed:

  • Tag2
  • Tag3

I am aware that proper pluralization is useful for the document count as well.

I found it pretty hard to find fitting translations for everything involving "Consumer". How about the other languages?

In French, I'm also a bit stuck on this word, I think I'll stick to something like "file/document processing" (traitement de fichier/document).

I too used "processing" in Dutch ("verwerken" etc). I see there are a number of new strings to translate with "consume", probably the reason you brought this up...

probably the reason you brought this up...

Exactly. I'll try to find some more fitting terms for English.

As an aside, I had a tough moment trying to figure out what was meant with "Dismiss completed"... I was trying to figure out what the "dismiss operation" was.

I'll add notes to ambiguous strings in the future.

Uuh. Don't have very good news on the translation front.

I had to rename the file that contained the english source strings for the Django admin section (some locale/en-us/LC_MESSAGES/django.po file had to move to locale/en_US/LC_MESSAGES/django.po), in order to get proper support for en-us and en-gb. That's the proper way to name these files, I should have done that from the beginning.

And by doing that transifex removed that entire resource from the tool. That also means that translations of that file that were not 100% complete are gone as well. I've contacted them and hope they can do something about it, I'm not sure how much has been lost.

I'll also probably switch to crowdin, there's just too much wrong with transifex.

Can you not upload a po file from the repository?

It's about incomplete translations that were not yet checked into git due to them being incomplete.

German, Dutch and French is fine.

Alright, they've got it sorted, everything's back to normal.

@jonaswinkler could you split the pt locale into pt_BR and pt_PT on transifex? There's some confusion going on right now with some strings.

@jonaswinkler could you split the pt locale into pt_BR and pt_PT on transifex? There's some confusion going on right now with some strings.

Sure. Should I copy the existing pt translations into pt_PT or pt_BR, or both?

If you can copy both, it would be great. There are some overlaps between the two of them.

Alright, I'll fix that up right now.

@rodavelino Done!

Thanks! I'll try to finish translating the pt_BR today.

Thank you so much. It's awesome to see this software getting translated into so many languages.

image

@rodavelino The last thing to do before I can put this into a release is to translate the name of the language (I've just updated transifex) into Portuguese.

Great, done!
Indeed. Your improvements over the original paperless made it much more useful for some people (myself included). Awesome work! Let's hope with more people using it, we can get more contributors and improve what is already good.

image

Another language added to paperless!

image

Romanian added to paperless!

Hi, I've translated a lot in spanish
How can I set those files in a docker installation for testing?

@Shrewd

The easiest way is probably to download the partially translated resources from transifex (Click on Languages -> Spanish -> Each resource -> Download for use) and paste the contents into one of the existing languages. The translated files are in "src/locale/" and "src-ui/src/locale".

The docker image is build according to the instructions here https://paperless-ng.readthedocs.io/en/dev/extending.html#building-the-docker-image.

If you want to add Spanish properly yourself, the steps are also described in the documentation as well, see https://paperless-ng.readthedocs.io/en/dev/extending.html#localization. If you do that, I'd appreciate a PR, otherwise I'll do that myself.

I'm playing around with crowdin in-context translation right now. Looks pretty neat.

image

I've locked the transifex project, and moved translations to crowdin. You can use your GitHub account over there as well. No authorization required, you can start editing everything right after logging in.

https://crowdin.com/project/paperless-ng

I copied all translations, everything should be as before. If anything is amiss, mention me.

Reasons:

  • No automatic updates when changing completed languages.
  • No handling of &quot; in the source files. This required me to do lots of manual fixing on the translations.
  • crowdin has much better integration with github.
  • The translation editor seems a lot nicer and has support for plural expressions.
  • Crowdin has much more QA checking, including spelling errors.
  • Crowdin has badges for the front page! :)

German users: Should "tag" be translated to something different? I know that "Tag" is perfectly viable in German, but maybe something different fits better. "Etikett" comes to mind. I've seen that this has been properly translated in most other languages, just not in German.

Fixed some typos and mismatches in russian translation. Also tried to shorten sentences.
As I can see, date popover wasn't translated: image

As I can see, date popover wasn't translated: image

Thanks for letting me know!

German users: Should "tag" be translated to something different? I know that "Tag" is perfectly viable in German, but maybe something different fits better. "Etikett" comes to mind.

I propose Schlagworte, and verschlagworten as a verb.

"Stichwort" seemed close, but there's a compelling argument here (see "Schlagwort oder Stichwort") why it actually wouldn't work as well

German users: Should "tag" be translated to something different? I know that "Tag" is perfectly viable in German, but maybe something different fits better. "Etikett" comes to mind.

I propose Schlagworte, and verschlagworten as a verb.

"Stichwort" seemed close, but there's a compelling argument here (see "Schlagwort oder Stichwort") why it actually wouldn't work as well

As german native speaker I would prefere to leave it as it is ("tag"). I like a well known short english word more than a long german translation.

As german native speaker I would prefere to leave it as it is ("tag"). I like a well known short english word more than a long german translation.

That's what I think too.

commented

@jonaswinkler Could you please add Polish at crowdin? I might be able to add some translation. Thanks.

@jonaswinkler Could you please add Polish at crowdin? I might be able to add some translation. Thanks.

@lknop Done!

@lknop Thanks for translating. I'll add the new locale in the next version.

commented

@jonaswinkler Thanks! This is great news. I don't mind either English or German but the rest of the family will appreciate the localization ;-)

I have been using paperless for a few days only but I know this is the tool I needed for my documents for a very long time! I assumed that something like this must exist but hadn't actually seen a similar system before. I was browsing applications for unraid at https://unraid.net/community/apps?q=paperless# and stumbled upon your project. Keep up the great work!

BTW. I don't know if you noticed, I updated #894 as per your comment

@lknop I certainly noticed, but life has its ways to keep me busy. The new job I picked up isn't exactly 9 to 5 :) I'll catch up with most of the queued things this weekend.

I’ve been looking through the Dutch translations, specifically because I didn’t understand what was meant by “etiket”. In Dutch this usually is translated to “label” (Gmail uses that e.g.) or it is simply called “Tags” as well. In Crowdin I changed it to “label”, but don’t know if anyone disagrees. Also noted that some things are translated somewhat to literal, which makes it sometimes harder to understand. E.g. “log” can usually stay that, but is translated to a word that in Dutch could be interpreted as something like “chat message”. I might give it another look, but just wanted to be sure if I can simply edit the translations.
Also Dutch uses a lot of English terms, so translating to Dutch is sometimes challenging because of that.

If you want a new language added to the project, either mention me in this issue or post a message in the discussion section at crowdin.

@jonaswinkler Could you add Luxembourgish (ISO code "lb") to Crowdin please?

If you want a new language added to the project, either mention me in this issue or post a message in the discussion section at crowdin.

@jonaswinkler Could you add Luxembourgish (ISO code "lb") to Crowdin please?

Done!

commented

@jonaswinkler Could you please add Chinese Traditional at crowdin? I might be able to add some translation. Thanks.

Done!

Hey @jonaswinkler, just installed paperless-ng and loving it so far!
If you add Norwegian to Crowdin, I'll translate it. :)

@Sherex done!

image

Should I select something different?

Thank you @jonaswinkler!

Ah, I write Norwegian Bokmål, so it's best to select that. :)

Alright, I've changed that.

commented

I have already translated it into Chinese and want to know when it can be used :-) @jonaswinkler

Hey @jonaswinkler can you add Greek language please? I will start to slowly translate 😃
Thanks!!

@jonaswinkler I can provide Korean translation of the project!

I can do Slovenian translation. Please add it to crowdin.

Hi @jonaswinkler, I'll translate it to Danish if you'll add it to Crowdin.

@jonaswinkler Seems a great piece of work. I will start testing it and translate to Arabic. However, I noticed there is different Arabic translations. This only make sense for locales so it customize things like number and currency formats. For translation, Arabic language is the same whether in Saudi Arabia, Egypt, Bahrain or Yemen. So, please leave one of the them, e.g Saudi Arabia and remove the others so no duplication work would happen. Thanks.

📣 Calling all translators, a group of us are trying to keep this project going—including translation! If you are willing to help please join at: https://crwd.in/paperless-ngx / https://github.com/paperless-ngx/paperless-ngx

Thank you 🙏

What is the purpose of paperless-ngx, isn't paperless-ng still maintained?

Jonas has not said anything here in more than a year, so it seems not really, no. See #1526 and #1599