◐ Shell
clean mode source ↗

Add language and version switchers by AA-Turner · Pull Request #193 · python/python-docs-theme

@AA-Turner

humitos added a commit to readthedocs/docsbuild-scripts that referenced this pull request

Jul 23, 2024
_Note this is just a proof of concept to start the conversation._

While working on the idea to generate the version/language selectors and combine
them with the data fetched from Read the Docs API, I realized that if we are
migrating only _one_ version to Read the Docs and using a proxy to serve it at
the official `docs.python.org` domain, there is no need to use a different
version/language selector at all --since all the URLs will be the same and all the
JavaScript logic will be the same. The proxy will do the magic to redirect to
Read the Docs _only_ the versions configured in the proxy [^1].

However, since when building on Read the Docs the variables `VERSIONS` and
`LANGUAGES` are not passed, we need to populate them dynamically with JavaScript
when the page is served.

Do we have a JSON file from where we can populate the `LANGUAGES` variable?

I'm opening a PR here to show what I'm thinking and discuss if this is the
approach we want to follow. BTW, the code is not tested. I just wrote it as an
example to show what I'm thinking is the direction.

Related:
- python/python-docs-theme#193
- python/docs-community#5

[^1]: Once all the versions/languages are migrated to Read the Docs, we won't
require the `release-cycle.json` nor other file to populate the `LANGUAGES`
variable because this data will come from Read the Docs Addons API.

humitos added a commit to readthedocs/docsbuild-scripts that referenced this pull request

Jul 23, 2024
_Note this is just a proof of concept to start the conversation._

While working on the idea to generate the version/language selectors and combine
them with the data fetched from Read the Docs API, I realized that if we are
migrating only _one_ version to Read the Docs and using a proxy to serve it at
the official `docs.python.org` domain, there is no need to use a different
version/language selector at all --since all the URLs will be the same and all the
JavaScript logic will be the same. The proxy will do the magic to redirect to
Read the Docs _only_ the versions configured in the proxy [^1].

However, since when building on Read the Docs the variables `VERSIONS` and
`LANGUAGES` are not passed, we need to populate them dynamically with JavaScript
when the page is served.

- Populate `all_languages` in the same way.
  Do we have a JSON file from where we can populate the `LANGUAGES` variable?
- Move this `switchers.js` file to
  https://github.com/python/cpython/tree/main/Doc/tools/static

----

I'm opening a PR here to show what I'm thinking and discuss if this is the
approach we want to follow. BTW, the code is not tested. I just wrote it as an
example to show what I'm thinking is the direction.

Related:
- python/python-docs-theme#193
- python/docs-community#5

[^1]: Once all the versions/languages are migrated to Read the Docs, we won't
require the `release-cycle.json` nor other file to populate the `LANGUAGES`
variable because this data will come from Read the Docs Addons API.

humitos added a commit to readthedocs/docsbuild-scripts that referenced this pull request

Jul 23, 2024
_Note this is just a proof of concept to start the conversation._

While working on the idea to generate the version/language selectors and combine
them with the data fetched from Read the Docs API, I realized that if we are
migrating only _one_ version to Read the Docs and using a proxy to serve it at
the official `docs.python.org` domain, there is no need to use a different
version/language selector at all --since all the URLs will be the same and all the
JavaScript logic will be the same. The proxy will do the magic to redirect to
Read the Docs _only_ the versions configured in the proxy [^1].

However, since when building on Read the Docs the variables `VERSIONS` and
`LANGUAGES` are not passed, we need to populate them dynamically with JavaScript
when the page is served.

**ToDo**:

- Populate `all_languages` in the same way.
  Do we have a JSON file from where we can populate the `LANGUAGES` variable?
- Move this `switchers.js` file to
  https://github.com/python/cpython/tree/main/Doc/tools/static

----

I'm opening a PR here to show what I'm thinking and discuss if this is the
approach we want to follow. BTW, the code is not tested. I just wrote it as an
example to show what I'm thinking is the direction.

Related:
- python/python-docs-theme#193
- python/docs-community#5

[^1]: Once all the versions/languages are migrated to Read the Docs, we won't
require the `release-cycle.json` nor other file to populate the `LANGUAGES`
variable because this data will come from Read the Docs Addons API.

This was referenced

Jul 23, 2024