paperless-ng icon indicating copy to clipboard operation
paperless-ng copied to clipboard

Translation of Paperless-ng

Open jonaswinkler opened this issue 4 years ago • 83 comments
trafficstars

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.

jonaswinkler avatar Dec 29 '20 18:12 jonaswinkler

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.

jonaswinkler avatar Dec 30 '20 18:12 jonaswinkler

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.

qcasey avatar Dec 31 '20 03:12 qcasey

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

qcasey avatar Dec 31 '20 04:12 qcasey

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.

jonaswinkler avatar Dec 31 '20 09:12 jonaswinkler

I think he's also asking about https://github.com/jonaswinkler/paperless-ng/issues/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!

shamoon avatar Dec 31 '20 15:12 shamoon

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.

jonaswinkler avatar Jan 02 '21 00:01 jonaswinkler

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.

shamoon avatar Jan 02 '21 04:01 shamoon

image

First language complete! :+1:

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

jonaswinkler avatar Jan 03 '21 21:01 jonaswinkler

image

jonaswinkler avatar Jan 04 '21 13:01 jonaswinkler

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! ;-)

jovandeginste avatar Jan 05 '21 13:01 jovandeginste

Why is "Name" not translated?

jovandeginste avatar Jan 05 '21 13:01 jovandeginste

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

jonaswinkler avatar Jan 05 '21 14:01 jonaswinkler

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.

jonaswinkler avatar Jan 05 '21 14:01 jonaswinkler

Yes, I was unaware too :-)

jovandeginste avatar Jan 05 '21 14:01 jovandeginste

@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 avatar Jan 06 '21 20:01 jonaswinkler

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

Philmo67 avatar Jan 06 '21 21:01 Philmo67

@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 :wink:

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

jovandeginste avatar Jan 07 '21 09:01 jovandeginste

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.

jonaswinkler avatar Jan 07 '21 13:01 jonaswinkler

That was the reason for the question, indeed 😁

jovandeginste avatar Jan 07 '21 14:01 jovandeginste

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.

Philmo67 avatar Jan 08 '21 14:01 Philmo67

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)

jovandeginste avatar Jan 10 '21 10:01 jovandeginste

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"?

jonaswinkler avatar Jan 10 '21 10:01 jonaswinkler

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?

jovandeginste avatar Jan 10 '21 10:01 jovandeginste

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.

jonaswinkler avatar Jan 10 '21 11:01 jonaswinkler

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

jovandeginste avatar Jan 10 '21 11:01 jovandeginste

Is the login/logout screen translatable ?

Philmo67 avatar Jan 10 '21 20:01 Philmo67

Good catch. I'll add strings for that.

jonaswinkler avatar Jan 10 '21 20:01 jonaswinkler

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

Philmo67 avatar Jan 15 '21 15:01 Philmo67

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.

jonaswinkler avatar Jan 15 '21 15:01 jonaswinkler

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.

Philmo67 avatar Jan 21 '21 12:01 Philmo67

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.

jonaswinkler avatar Jan 21 '21 12:01 jonaswinkler

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

jonaswinkler avatar Jan 31 '21 21:01 jonaswinkler

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).

Philmo67 avatar Jan 31 '21 22:01 Philmo67

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...

jovandeginste avatar Feb 01 '21 08:02 jovandeginste

probably the reason you brought this up...

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

jonaswinkler avatar Feb 01 '21 11:02 jonaswinkler

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.

jovandeginste avatar Feb 01 '21 12:02 jovandeginste

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

jonaswinkler avatar Feb 01 '21 14:02 jonaswinkler

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.

jonaswinkler avatar Feb 16 '21 14:02 jonaswinkler

Can you not upload a po file from the repository?

jovandeginste avatar Feb 16 '21 17:02 jovandeginste

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

German, Dutch and French is fine.

jonaswinkler avatar Feb 16 '21 17:02 jonaswinkler

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

jonaswinkler avatar Feb 16 '21 18:02 jonaswinkler

@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.

rodavelino avatar Feb 24 '21 04:02 rodavelino

@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?

jonaswinkler avatar Feb 24 '21 08:02 jonaswinkler

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

rodavelino avatar Feb 24 '21 11:02 rodavelino

Alright, I'll fix that up right now.

@rodavelino Done!

jonaswinkler avatar Feb 24 '21 11:02 jonaswinkler

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

rodavelino avatar Feb 24 '21 13:02 rodavelino

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.

jonaswinkler avatar Feb 24 '21 15:02 jonaswinkler

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.

rodavelino avatar Feb 24 '21 17:02 rodavelino

image

Another language added to paperless!

jonaswinkler avatar Feb 26 '21 12:02 jonaswinkler

image

Romanian added to paperless!

jonaswinkler avatar Feb 28 '21 12:02 jonaswinkler

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

Shrewd avatar Mar 06 '21 01:03 Shrewd

@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.

jonaswinkler avatar Mar 06 '21 10:03 jonaswinkler

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

image

jonaswinkler avatar Mar 06 '21 21:03 jonaswinkler

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! :)

jonaswinkler avatar Mar 06 '21 22:03 jonaswinkler

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.

jonaswinkler avatar Mar 11 '21 14:03 jonaswinkler

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

stsergo avatar Mar 14 '21 21:03 stsergo

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

Thanks for letting me know!

jonaswinkler avatar Mar 14 '21 22:03 jonaswinkler

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

artjomsimon avatar Apr 06 '21 22:04 artjomsimon

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.

martinpichlo avatar Apr 07 '21 05:04 martinpichlo

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.

jonaswinkler avatar Apr 07 '21 06:04 jonaswinkler

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

lknop avatar Apr 11 '21 13:04 lknop

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

@lknop Done!

jonaswinkler avatar Apr 11 '21 14:04 jonaswinkler

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

jonaswinkler avatar Apr 13 '21 20:04 jonaswinkler

@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 avatar Apr 13 '21 20:04 lknop

@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.

jonaswinkler avatar Apr 13 '21 20:04 jonaswinkler

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.

w0ndersp00n avatar Apr 18 '21 10:04 w0ndersp00n

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?

mweimerskirch avatar Jul 13 '21 20:07 mweimerskirch

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!

jonaswinkler avatar Jul 13 '21 20:07 jonaswinkler

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

geniusshiun avatar Sep 06 '21 08:09 geniusshiun

Done!

jonaswinkler avatar Sep 06 '21 15:09 jonaswinkler

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

Sherex avatar Sep 10 '21 19:09 Sherex

@Sherex done!

image

Should I select something different?

jonaswinkler avatar Sep 10 '21 21:09 jonaswinkler

Thank you @jonaswinkler!

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

Sherex avatar Sep 10 '21 21:09 Sherex

Alright, I've changed that.

jonaswinkler avatar Sep 10 '21 22:09 jonaswinkler

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

feidianbo avatar Oct 09 '21 23:10 feidianbo

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

ledakis avatar Oct 29 '21 15:10 ledakis

@jonaswinkler I can provide Korean translation of the project!

lewisleedev avatar Nov 22 '21 13:11 lewisleedev

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

thehijacker avatar Nov 23 '21 17:11 thehijacker

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

Lrss avatar Nov 29 '21 16:11 Lrss

@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.

munzirtaha avatar Dec 13 '21 07:12 munzirtaha

📣 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 🙏

shamoon avatar Feb 17 '22 04:02 shamoon

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

Lrss avatar Feb 17 '22 13:02 Lrss

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

shamoon avatar Feb 17 '22 15:02 shamoon