pkp / pkp-lib

The library used by PKP's applications OJS, OMP and OPS, open source software for scholarly publishing.
https://pkp.sfu.ca
GNU General Public License v3.0
304 stars 444 forks source link

Replace bespoke translation toolset with more standards-based options #4779

Closed hsluoyz closed 4 years ago

hsluoyz commented 5 years ago

Currently, all translations are done in XML files, like mentioned in: https://github.com/pkp/pkp-lib/issues/4029#issuecomment-417907420, which is very inefficient for translators to translate, or sync a few of items between dozens of XML files.

Is there any chance to use a more advanced online translation platform like: https://crowdin.com/ ? In crowdin, all translators only need to do the translation in web browser, and no need to track which words have not been translated yet. The translation will be deployed automatically with a new git commit. Can we consider it?

marcbria commented 4 years ago

@asmecher I'm missing something important here.

Does it means that we will need to convert xml to po (1), then load inside weblate (2), after this do the translation (3), then export outside weblate (4) and finally convert from po to xml (5) and push back to github (6)?

Why not moving from xml to po and work with a single format? As far as weblate will be able to pull and push without any conversion work, isn't it?

Sorry in advance for the Mr.Obvius comment... Knowing you I missed the real issue here.

asmecher commented 4 years ago

@marcbria, not to worry, it's complicated :)

No, the translations can be managed inside Weblate as with everything else. There's no need to round-trip the files manually. The only reason we're keeping the old-style emailTemplates.xml is to map the three pieces of each translated template -- description, title, and body -- to the email template key. The addition of the {translate ...} calls to that file delegates the translation to the .po file.

The reason for the conversion tool is so that we can easily migrate the translation files when we upgrade translations to 3.2.

marcbria commented 4 years ago

Thanks Alec. Clear now.

BTW, I'm kind of worried about how are we going to work with weblate.

I mean, is somebody testing translation memories features or translation workflows or glossaries or CAT tools or CLA agreement...?

I think is important to review it before we open the platform to translators... and maybe write some documentation.

Are you planning to do this? do you need help?

Cheers, m.

asmecher commented 4 years ago

For the moment we can't do anything with Weblate because it is still not able to deliver emails, thus register users. I'm working to get that resolved.

I don't have experience with the translation memory features but I know those exist -- some expert feedback/testing on those would be welcome.

As for documentation, I have some provisional documentation but it needs to be co-developed with some of our translators.

I plan to manage merges of translations manually, at least for now, and intend to manage CLA agreements manually for the first while (when granting translator accounts translation privileges during the registration process). I'd like to automate this later, but baby steps :)

asmecher commented 4 years ago

Committed the email text to PO format PRs and adapted and committed the same changes for OMP.

@ajnyga, this will require a conversion to the PPS email files too -- would you like me to create a PR for that?

ajnyga commented 4 years ago

Thanks, go ahead. There are only a couple of templates there now and could be that even those are not all in use right now. But go ahead with the conversion.

asmecher commented 4 years ago

@ajnyga, I opened a PR for that: https://github.com/ajnyga/ojs/pull/7

asmecher commented 4 years ago

Done and dusted! https://translate.pkp.sfu.ca/

hsluoyz commented 4 years ago

@asmecher Thanks for the amazing work! So what's the process to translate? I thought it would be:

  1. Pull pkp-lib and ojs from origin master. Or only pull ojs and latest pkp-lib (which contains latest translation) will be pulled automatically via Git Submodules?
  2. See if there's missing/wrong words in my OJS instance.
  3. Translate the words on https://translate.pkp.sfu.ca/

Then what to do next? How to make my translated words on Weblate sync to my instance?

asmecher commented 4 years ago

Hi @hsluoyz!

I periodically merge the latest translations that have been provided via weblate into the official repos. We'll sometimes get translation contributions via other means and will merge them there as well. You can also download the latest files directly from Weblate:

image

Weblate itself pushes translations up to these repos: https://github.com/pkp-translations/ ...so if you really want the latest content that's in weblate, you can get it there. If you're interested in working with a git master installation and round-tripping translation work with weblate, that might be the easiest way.

hsluoyz commented 4 years ago

Thanks ! I saw translation commits in: https://github.com/pkp-translations. So I think I can use the following steps:

  1. Pull master from https://github.com/pkp-translations/pkp-lib and https://github.com/pkp-translations/ojs.
  2. See if there's missing/wrong words in my OJS instance.
  3. Translate the words on https://translate.pkp.sfu.ca/. My translation will become commits in https://github.com/pkp-translation
  4. Pull the code again, my OJS instance will have the latest translation.

Is this correct? BTW is https://github.com/pkp-translations a mirror to latest master branch or a stable release?

asmecher commented 4 years ago

The pkp-translations repos are a mirror to the current master branch. Once we release OJS 3.2, then I expect we'll flip the translation toolset over to the stable branch until our next big push for a release from the master branch (that'll eventually be 3.3). Yes, your summary is correct -- we're still working out the kinks in our Weblate workflow, but my sense is that Weblate should be pushing up to pkp-translations more or less immediately.