Localization of scikit-learn website content.

Hi,

I work for Quansight Labs and am helping set things up for translation of main project website content for core projects in the Scientific Python ecosystem. This work is supported by the [Scientific Python Community & Communications Infrastructure grant](https://scientific-python.org/doc/scientific-python-community-and-communications-infrastructure-2022.pdf) from CZI. I created a Github discussion for this here: https://github.com/scikit-learn/scikit-learn/discussions/28105, but @glemaitre pointed out that an issue would be more appropriate.

A deliverable for this grant is to have the brochure websites of at least 8 of the 10 Scientific Python core projects translated into at least 3 commonly used languages. You may have seen the language drop-down selector at https://numpy.org/.  The goal is for a cross functional team of Quansight staff and volunteers to handle the bulk of the work, taking the burden off of project maintainers.

The localization management platform [Crowdin](https://crowdin.com/) is offering a free supported enterprise organization for Scientific Python translations. This is the platform we used for numpy.org. At this moment you would not need to decide what if anything you would do with translated content. *However, to get things started, I'd like to ask permission to fill out the [Crowdin Open Source Project Setup Request ](https://crowdin.com/page/open-source-project-setup-request) form on your behalf, to allow me to add a project to the Scientific Python Crowdin organization for Scikit-Learn.* 

For those interested. Here are the specifics of what I'd do with this.

- Create a GitHub repository which mirrors the content from the Scikit-Learn brochure website.
- Setup a cron github action which polls for updates to the Scikit-Learn website content and helps keep the mirror up to date.
- Sync this repository to the Scikit-Learn Crowdin project. Translate can then translate the content, and Crowdin will automatically push commits to a PR against the repository mirroring the website content.

The end product will be a repository with parallel versions of the website content in a variety of languages which is kept up to date. If you want to host the translations on your webpage like NumPy does, myself and/or a colleague from Quansight would be supported by the grant to help make that happen.

Please let me know if you have any questions.

COMMENT:
@adrinjalali I also have just started to learn about these, @steppi would definitely know better. He mentioned in #28105 about [this sphinx internationalization workflow](https://www.sphinx-doc.org/en/master/usage/advanced/intl.html), essentially this graph:

![image](https://github.com/scikit-learn/scikit-learn/assets/108576690/bafbf3e3-5ba2-46b5-a06c-32faadce3193)

My understanding is that [`sphinx-intl`](https://pypi.org/project/sphinx-intl/) will help us generate the `.pot` files to be translated, then Crowdin would bring us to the translated `.po` files, and finally `sphinx` takes the `.po` files, combined with our original documentation, to generate the translated documentation.

> One thing I don't understand from the original comment is which part of the website you plan to translate (API docs, examples, user guide, ..?)

In #28105 @steppi mentioned that *"technical documentation like the User Guide, Examples, and the API reference are out-of-scope though, at least for now"* while many other pages (that are not updated so frequently) are worth translating.

> how the translations would appear in the scikit-learn website (how would a user discover that translations exist)?

Also in #28105 @steppi mentioned *adding a language selector drop-down to Sphinx documentation*. This should more or less look like the version switcher in `pydata-sphinx-theme` (and we can simply vendor its implementation to make a component).

> What would the process be to keep things up to date across releases but also within a release?

Documentations of past releases are hardly touched (I think?) and there will be no problem as long as translations are also per-version.

But I'm also concerned about the second part because I'm not sure how the Crowdin part of the workflow works. If it cannot be fully automated (e.g. need people to review) then the update likely cannot be done at the granularity of commits. We would also need native speakers of the language (or at least people who are familiar with the language) to maintain that part.

Another of my major concern is that, I think (guess) the most viewed part of the scikit-learn documentation is exactly its technical part (user guide, examples, API) and those are the largest parts. How much value is left if we leave all those behind, or how much effort we need to pay to take those parts into account?

Labels: Needs Decision