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

Test Polylang #2284

Open
Tracked by #2231
jonathanbossenger opened this issue Mar 5, 2024 · 46 comments
Open
Tracked by #2231

Test Polylang #2284

jonathanbossenger opened this issue Mar 5, 2024 · 46 comments
Assignees

Comments

@jonathanbossenger
Copy link
Collaborator

jonathanbossenger commented Mar 5, 2024

Front-end requirements:

  • Language selector does not show as country flags. (Many countries speak multiple languages, so describing a language with a flag should be avoided.)
  • Languages can be changed without needing to log in to one's WordPress.org account.
  • Once a language is selected, it is applied globally.
  • Content of the selected language is shown above non-translated content.
  • English content is still shown where translations don't exist.

Back-end requirements:

  • Translators do not have permission to create or publish new content.
  • Translators have permission to both translate any content, and review content translated by others.
  • A flow can be implemented where translations must be approved (reviewed) before published.
  • Sensei content types can be translated in the same way as native post types.
  • Taxonomies can be translated.
  • Translated content is indexed and searchable by Jetpack Search.
@jonathanbossenger
Copy link
Collaborator Author

@cynthianorman feel free to leave your testing feedback here.

@jonathanbossenger jonathanbossenger changed the title Test Polylang for translation Test Polylang Mar 5, 2024
@cynthianorman
Copy link
Contributor

Successfully installed on Learn WordPress local dev env
https://drive.google.com/file/d/1FhK_aov9Ut8Plex77k8LbDFTWdIGs90A/view?usp=drive_link

@cynthianorman
Copy link
Contributor

@cynthianorman
Copy link
Contributor

We can select the languages we want to translate pages and posts to
https://drive.google.com/file/d/1npTZ3t9k9rWnaFMiVKHordb8YcKumMhF/view?usp=drive_link

Note that showing the flag in the front end is optional

@cynthianorman
Copy link
Contributor

@cynthianorman
Copy link
Contributor

cynthianorman commented Mar 16, 2024

It's important to know that we essentially build a separate set of pages/posts/taxonomies and corresponding menu for each language.

For this reason, we would need to create the copied English page/post and designate it as French (for example) otherwise I don't believe this will work out for us. In other words, the copied English page/post would act as a placeholder until a translator would contribute the translation.

https://drive.google.com/file/d/1ZLAMfGTc4nOa6Cl9Wdgo5BFpZEiBf4KR/view?usp=sharing

@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Mar 26, 2024

@cynthianorman do you think you'd be able to update this issue with a summary of your findings, in a similar way as the WPML test?

Edit, I've prepared the list in the comment below, so you just need to mark off the relevant items.

This will allow me to prepare a summary comparison table of our test findings for the training team meeting on Thursday.

@jonathanbossenger
Copy link
Collaborator Author

jonathanbossenger commented Mar 26, 2024

Front-end requirements:

  • Language selector does not show as country flags. (Many countries speak multiple languages, so describing a language with a flag should be avoided.)
  • Languages can be changed without needing to log in to one's WordPress.org account.
  • Once a language is selected, it is applied globally.
  • Content of the selected language is shown above non-translated content.
  • English content is still shown where translations don't exist.

Back-end requirements:

  • Translators do not have permission to create or publish new content.
  • Translators have permission to both translate any content, and review content translated by others.
  • A flow can be implemented where translations must be approved (reviewed) before published.
  • Sensei content types can be translated in the same way as native post types.
  • Taxonomies can be translated.
  • Translated content is indexed and searchable by Jetpack Search.

@cynthianorman
Copy link
Contributor

@cynthianorman do you think you'd be able to update this issue with a summary of your findings, in a similar way as the WPML test?

Edit, I've prepared the list in the comment below, so you just need to mark off the relevant items.

This will allow me to prepare a summary comparison table of our test findings for the training team meeting on Thursday.

ok @jonathanbossenger done

@jonathanbossenger
Copy link
Collaborator Author

Perfect, thank you so much!

@jonathanbossenger
Copy link
Collaborator Author

@sebastienserre I have been testing PolyLang this week, and I have encountered a blocker that I hope you can help resolve.

Learn.WordPress.org uses Sensei LMS to manage our course content: https://wordpress.org/plugins/sensei-lms/

Sensei allows you to create course, and then create modules within the course and lessons within the modules:

localhost_8888_wp-admin_post php_post=258770 action=edit

I am then able to navigate to individual lessons, and use the PolyLang feature to create different language versions of the individual lessons successfully:

localhost_8888_wp-admin_post-new php_post_type=lesson

However, as soon as I assign the language and link the translated version of a lesson to the English one, the relationship between the module and the lesson is broken. If I navigate back to the course edit screen, the translated lesson does not appear anymore in the module.

localhost_8888_wp-admin_post php_post=258770 action=edit (1)

Are you able to assist in determining why this is happening?

@sebastienserre
Copy link

Hello @jonathanbossenger Here is a quick video where I show you What I'have found. I'm not used to use Sensei and at helpdesk we do not have so much request for this plugin, so I hope I'm matching your request.
https://www.loom.com/share/058116fd5b204318bf3d730f8c1b5b71

The "course" post meta seems to be synchronized between the same lesson in different language. This is due to a WPML compatibility because Polylang is compatible with the WPML API to understand plugin & theme compatibility made for this plugin.
WPML API in Polylang

To stop this synchronization, you can create a wp-content/polylang/wpml-config.xml file containing

<wpml-config>
    <custom-fields>
        <custom-field action="ignore">_lesson_course</custom-field>
    </custom-fields>
</wpml-config>

If some others post_meta needs to be ignored, then _lesson_course is the meta name.
https://polylang.pro/doc/the-wpml-config-xml-file/

Of course, what is done thanks to the wpml-config.xml file can also be done in PHP if the wp.org maintainers prefer.

@jonathanbossenger
Copy link
Collaborator Author

Hey @sebastienserre, no problem at all; I'm not used to PolyLang, so we're all figuring this out together. 😁

The "course" post meta seems to be synchronized between the same lesson in different language

That does seem to be correct, so I will test your suggestion and report back with my findings.

@sebastienserre
Copy link

sebastienserre commented Sep 19, 2024

The initial sync is made by the Sensei LMS wpml-config.xml available at their root https://plugins.trac.wordpress.org/browser/sensei-lms/trunk/wpml-config.xml

You can see lots of copied "custom fields" some other post metas are sync and may "break" your test. Adding some lines with ignore instead of copy should help. In case of doubts, I'm available.

Like WordPress with a child theme, Polylang will read first the plugin root wpml-config.xml file, then the parent theme one (if exists), then the child theme one, then check in mu-plugins folder and finally wp-content/polylang

@jonathanbossenger
Copy link
Collaborator Author

Hello @sebastienserre. With the suggested wpml-config.xml config in place, I am still experiencing the problem.

I have created a screen recording of what I am seeing, I hope this will help you understand what I'm experiencing.

2024-10-02.15-30-25.mp4

@jonathanbossenger
Copy link
Collaborator Author

Hi @sebastienserre I wanted to follow up here, have you been able to look into this?

Thanks

@sebastienserre
Copy link

Hello @jonathanbossenger
I'm away a few days, I will test and answer quickly

@jonathanbossenger
Copy link
Collaborator Author

@sebastienserre not a problem thanks for letting me know, I just wanted to make sure you got the message.

@sebastienserre
Copy link

Hello @jonathanbossenger

Here are 2 videos (yes I'm not ready to contribute to learn team, I have problems to click on the correct button :) )

https://www.loom.com/share/7f4737cdf22342698e9b7198190beea8
https://www.loom.com/share/3c861d48eeca4d569f7498fe0b96cdfc

I've set up a Twenty Twenty One child theme with the wpml-config.xml file on its root.

As you can see, I do not follow exactly the same steps you're following, but the result is I have a course translated in 2 languages.

If you do not have the behaviour I have, I think a conflict is occurring... Does it work with Twenty Twenty One ?

Where can I download the learn.wp.org theme to test it ?

@jonathanbossenger
Copy link
Collaborator Author

Ok, thanks @sebastienserre I will review the videos next week and check against the Learn theme.

@jonathanbossenger
Copy link
Collaborator Author

@sebastienserre thanks for the feedback. I can confirm that I can translate lessons the way you have shown.

However, I'm seeing a weird thing that happens when I try to create lessons inside a module in the Course edit screen, which I think may be a Sensei related issue. I'm going to see if I can get some help with this.

@jonathanbossenger
Copy link
Collaborator Author

@kaitohm it looks like we might have a workable solution here. I was able to test it on a clean Sensei environment, so I just need to test it on the learn.wordpress.org local environment (which I plan to do today) and will report back here once that's done.

@kaitohm
Copy link
Contributor

kaitohm commented Nov 4, 2024

Great news! Thanks for the update 👍

@jonathanbossenger
Copy link
Collaborator Author

@kaitohm Ok, here is a recording of the process of translating lesson content:

PolyLang.mp4

In short, Polylang allows us to translate lesson content using the regular Lesson editing user interface and retain all the relevant course/module/lesson structures.

All we need to ensure is the following:

  1. We include a wpml-config.xml file in the Learn child theme which contains a specific rule about the _lesson_course post meta field (I have this and can create the PR)
  2. We create a specific user role for translation users who can edit/create lessons (I can work with @adamwoodnz on getting this done).

Therefore, I propose we move ahead with the next step, which would be to arrange for the code review of PolyLang to be included in the .org infrastructure in order to use it on Learn.

@kaitohm
Copy link
Contributor

kaitohm commented Nov 6, 2024

Thanks for the recording, @jonathanbossenger . This looks great! Please move forward with your suggestions above 👍

@jonathanbossenger
Copy link
Collaborator Author

@adamwoodnz can we start the process of having the PolyLang and PolyLang Pro code reviewed for inclusion into .org?

@sebastienserre
Copy link

@jonathanbossenger Polylang is included inside the Polylang Pro vendor/wpsyntex folder.
No need to have both plugins on the website. (On Polylang Pro activation, Polylang is automatically deactivated)

@jonathanbossenger
Copy link
Collaborator Author

Ah, thanks @sebastienserre. @adamwoodnz it looks like all we need to get reviewed then is the plugin in the wordpress.org repo.

@adamwoodnz
Copy link
Contributor

Sorry, which version are we planning to install on wordpress.org, Polylang or Polylang Pro?

@jonathanbossenger
Copy link
Collaborator Author

Hey @adamwoodnz, according to what @sebastienserre shared, we only need to test Polylang.

@adamwoodnz
Copy link
Contributor

Polylang is included inside the Polylang Pro

Sounds like we'd need to install Pro, and it includes the base plugin

@jonathanbossenger
Copy link
Collaborator Author

Sorry @adamwoodnz I read the original message wrong. If we can test Polylang Pro please. I have a copy of the plugin code, let me know the best way to get it to you.

@sebastienserre
Copy link

We released Polylang Pro 3.6.5 last week to be OK with WP6.7. @jonathanbossenger you should be able to download it from your account at https:://polylang.pro/account.
Let me know if you encounter any difficulties

@adamwoodnz
Copy link
Contributor

We released Polylang Pro 3.6.5 last week to be OK with WP6.7. @jonathanbossenger you should be able to download it from your account at https:://polylang.pro/account. Let me know if you encounter any difficulties

So given that we're installing the Pro version I wonder if we should add the code to this repository like we do for Sensei Pro. If so you could download the code and open a PR @jonathanbossenger. Then we can review that.

This would mean it wouldn't be available for other .org sites, only Learn, which might be desirable. @dd32 what do you think?

@jonathanbossenger
Copy link
Collaborator Author

I'm happy to do that if that works best for everyone involved.

@sebastienserre
Copy link

Hello,

I'm going to see with Polylang's founder if it's reasonable to expose our Pro plugin (Unique surce of revenue for our company) in a public Github repository.

Regards

@jonathanbossenger
Copy link
Collaborator Author

@sebastienserre it might be helpful here to confirm if Learn actually needs the pro version of the plugin.

As far as I can tell, all we need to be able to do is create translated versions of courses, modules, and lessons with support for a language switcher. Correct me if I am wrong, but this is part of the core plugin available on the .org directory.

@sebastienserre
Copy link

@jonathanbossenger Site Editor, block editor is managed by Polylang pro, not Polylang.
I've checked internally and this is OK to versioned Polylang Pro. If it's easier for every one, it's OK for us.

@adamwoodnz
Copy link
Contributor

block editor is managed by Polylang pro, not Polylang

Sorry, but to be clear; we use the block editor for Courses and Lessons, so does that mean we need Pro?

I didn't quite appreciate that we would be open sourcing your Pro code with this approach 🤦 Thanks for checking, and making this possible.

Dion is currently on leave, so I'd like to await his return and opinion on this.

@sebastienserre
Copy link

Yes you need Polylang Pro.
In a WordPress world, the code is GPL. What we're selling is my job which is support :).
I spoke today with my manager (https://github.com/Chouby) who is the Polylang founder. There's no problem, Polylang Pro is already available on some public GH

@jonathanbossenger
Copy link
Collaborator Author

Thanks for checking and sharing the update @sebastienserre.

@adamwoodnz I will create the PR this week and ping you here once it's ready.

@dd32
Copy link
Member

dd32 commented Nov 26, 2024

This would mean it wouldn't be available for other .org sites, only Learn, which might be desirable. @dd32 what do you think?

Learn is deployed into the same network that all other WordPress.org sites are in, so the plugin would be available to them, just not activated.

The main reason to include the Pro source in the GitHub repo is if you need it for local development sites of Learn, otherwise we can safely deploy it straight to WordPress.org without it going through this repo. That's why Sensei Pro is included AFAIK, because it was needed for local development and the free version didn't provide the same experience.

If you can share the code with me when you've got it, I can run it against the internal plugins tooling to ensure that no issues are flagged.

@dd32
Copy link
Member

dd32 commented Nov 26, 2024

If you can share the code with me when you've got it, I can run it against the internal plugins tooling to ensure that no issues are flagged.

Just noting that I've run the latest version of Polylang Pro 3.6.5 through the scanners I have access to, and nothing is being flagged as needing extra review, so I consider this good to deploy.

@adamwoodnz
Copy link
Contributor

@jonathanbossenger if you could proceed with the PR I can add any necessary tooling changes for deployment, thanks all.

@jonathanbossenger
Copy link
Collaborator Author

Thanks, everyone. I'll create the PR and tag @adamwoodnz for the review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

No branches or pull requests

6 participants