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

BUG - Fix i18n files and compilation for distribution #2042

Merged
merged 17 commits into from
Nov 25, 2024
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
# if not we use the default version
# example substitution: tox run -e compile-assets,i18n-compile,py39-tests
else
python -Im tox run -e compile,i18n-compile,py$(echo ${{ matrix.python-version }} | tr -d .)-tests
python -Im tox run -e compile-assets,i18n-compile,py$(echo ${{ matrix.python-version }} | tr -d .)-tests
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For whatever reason I had missed this when renaming to compile-assets

fi
- name: "Upload coverage data to GH artifacts 📤"
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && matrix.sphinx-version == 'dev'
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ jobs:
python -Im tox run -e compile-assets,i18n-compile,py$(echo ${{ matrix.python-version }} | tr -d .)-tests-no-cov
echo "PYTEST_ERRORS=$?" >> $GITHUB_ENV

- name: "Build and inspect package 📦"
uses: hynek/build-and-inspect-python-package@v2
gabalafou marked this conversation as resolved.
Show resolved Hide resolved
id: baipp

- run: echo Packages can be found at ${{ steps.baipp.outputs.dist }}

# If either the docs build or the tests resulted in an error, create an issue to note it
- name: "Create an issue if failure"
uses: JasonEtco/create-an-issue@v2
Expand Down
2 changes: 1 addition & 1 deletion docs/community/topics/i18n.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ file, and visible to localizers. For example:

{# L10n: Navigation button at the bottom of the page #}
<button type="button">
{{- _("Next page") -}}
{{- _('Next page') -}}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit as we use single quotes in a lot of our localisable strings

</button>

.. _updating-localization-files:
Expand Down
9 changes: 4 additions & 5 deletions src/pydata_sphinx_theme/locale/ca/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
#
# Translators:
# Cristhian Rivera, 2024
# Oriol Abril-Pla <[email protected]>, 2024
#
msgid ""
msgstr ""

Expand Down Expand Up @@ -145,11 +144,10 @@ msgstr "Fosc"
msgid "System Settings"
msgstr "Configuració del sistema"

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Construïda amb el <a href=\"https://pydata-sphinx-"
Expand Down Expand Up @@ -191,3 +189,4 @@ msgstr "Navegació del lloc"

#~ msgid "light/dark"
#~ msgstr "clar/fosc"

17 changes: 14 additions & 3 deletions src/pydata_sphinx_theme/locale/cs/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-18 12:43+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: cs\n"
"Language-Team: cs <[email protected]>\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n"

#: docs/conf.py:109
msgid "Click to expand"
Expand Down Expand Up @@ -141,11 +153,10 @@ msgstr "Tmavý"
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Vytvořeno pomocí <a href=\"https://pydata-sphinx-"
Expand Down
11 changes: 8 additions & 3 deletions src/pydata_sphinx_theme/locale/en/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,10 @@ msgstr ""
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""

Expand Down Expand Up @@ -183,3 +182,9 @@ msgstr ""
#~ msgid "light/dark"
#~ msgstr ""

#~ msgid ""
#~ "Built with the <a href=\"https://pydata-"
#~ "sphinx-theme.readthedocs.io/en/stable/index.html\">PyData "
#~ "Sphinx Theme</a> %(theme_version)s."
#~ msgstr ""

24 changes: 17 additions & 7 deletions src/pydata_sphinx_theme/locale/es/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,26 @@
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
#
# Translators:
# Rambaud Pierrick <[email protected]>, 2023
# Cristhian Rivera, 2024
# Felipe Moreno, 2024
# Tania Allard, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-11-18 12:43+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es\n"
"Language-Team: es <[email protected]>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.16.0\n"

#: docs/conf.py:109
msgid "Click to expand"
Expand Down Expand Up @@ -42,8 +53,7 @@ msgstr "Error"

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/search.html:9
msgid "Please activate JavaScript to enable the search functionality."
msgstr ""
"Por favor, active JavaScript para habilitar la funcionalidad de búsqueda."
msgstr "Por favor, active JavaScript para habilitar la funcionalidad de búsqueda."

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/breadcrumbs.html:6
msgid "Breadcrumb"
Expand Down Expand Up @@ -148,11 +158,10 @@ msgstr "Oscuro"
msgid "System Settings"
msgstr "Sistema"

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Construido con el <a href=\"https://pydata-sphinx-"
Expand Down Expand Up @@ -194,3 +203,4 @@ msgstr "Navegación del sitio"

#~ msgid "light/dark"
#~ msgstr "claro/oscuro"

9 changes: 4 additions & 5 deletions src/pydata_sphinx_theme/locale/fr/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
#
# Translators:
# Rambaud Pierrick <[email protected]>, 2024
# Denis Bitouzé <[email protected]>, 2024
#
msgid ""
msgstr ""

Expand Down Expand Up @@ -145,11 +144,10 @@ msgstr "Sombre"
msgid "System Settings"
msgstr "Paramètres système"

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Construit avec le <a href=\"https://pydata-sphinx-"
Expand Down Expand Up @@ -191,3 +189,4 @@ msgstr "Navigation dans le site"

#~ msgid "light/dark"
#~ msgstr "clair/sombre"

5 changes: 2 additions & 3 deletions src/pydata_sphinx_theme/locale/it/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,10 @@ msgstr "Scuro"
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Prodotto con il tema <a href=\"https://pydata-sphinx-"
Expand Down
5 changes: 2 additions & 3 deletions src/pydata_sphinx_theme/locale/ja/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,10 @@ msgstr "ダーク"
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"<a href=\"https://pydata-sphinx-"
Expand Down
5 changes: 2 additions & 3 deletions src/pydata_sphinx_theme/locale/ru/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,10 @@ msgstr "темная"
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"Собрано с использованием темы <a href=\\\"https://pydata-sphinx-"
Expand Down
10 changes: 5 additions & 5 deletions src/pydata_sphinx_theme/locale/sphinx.pot
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: pydata-sphinx-theme 0.16.0rc0\n"
"Project-Id-Version: pydata-sphinx-theme 0.16.1.dev0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-09-30 17:53+0100\n"
"POT-Creation-Date: 2024-11-18 12:43+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand Down Expand Up @@ -150,11 +151,10 @@ msgstr ""
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""

Expand Down
5 changes: 2 additions & 3 deletions src/pydata_sphinx_theme/locale/zh/LC_MESSAGES/sphinx.po
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,10 @@ msgstr "暗色"
msgid "System Settings"
msgstr ""

#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:3
#: src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/theme-version.html:4
#, python-format
msgid ""
"Built with the <a href=\"https://pydata-sphinx-"
"theme.readthedocs.io/en/stable/index.html\">PyData Sphinx Theme</a> "
"Built with the <a href=\"%(PST_url)s\">PyData Sphinx Theme</a> "
"%(theme_version)s."
msgstr ""
"使用 <a href=\"https://pydata-sphinx-"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<div
id="{{ page_navigation_heading_id }}"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> {{ _("On this page") }}
<i class="fa-solid fa-list"></i> {{ _('On this page') }}
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="{{ page_navigation_heading_id }}">
{{ page_toc }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
{# Displays the version of pydata-sphinx-theme used to build the documentation. #}
<p class="theme-version">
{% trans theme_version=theme_version|e %}Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> {{ theme_version }}.{% endtrans %}
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
{% trans trimmed theme_version=theme_version|e, PST_url="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html" %}
Built with the <a href="{{ PST_url }}">PyData Sphinx Theme</a> {{ theme_version }}.
{% endtrans %}
</p>

5 changes: 3 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env_list =
# helping contributors run common tasks without needing to call all the steps
# For example to run the tests: tox run -m tests
labels =
tests = compile-assets, i18n-compile, py312-tests
tests = compile-assets, i18n-compile, py312-tests
a11y = compile-assets, i18n-compile, py312-docs, a11y-tests
i18n = i18n-extract, i18n-compile
live-server = compile-assets, i18n-compile, docs-live
Expand Down Expand Up @@ -156,7 +156,8 @@ allowlist_externals = bash
commands =
# explicitly pass this as a bash command to set PST_VERSION
bash -c "PST_VERSION=$(pip show pydata-sphinx-theme | grep Version | awk -F': ' '{print $2}') && \
pybabel extract . -F babel.cfg -o src/pydata_sphinx_theme/locale/sphinx.pot --project=pydata-sphinx-theme --copyright-holder='PyData developers' --version=$PST_VERSION"
pybabel extract . -F babel.cfg -o src/pydata_sphinx_theme/locale/sphinx.pot --keywords='_ __ l_ lazy_gettext' \
trallard marked this conversation as resolved.
Show resolved Hide resolved
--project=pydata-sphinx-theme --copyright-holder='PyData developers' --version=$PST_VERSION"
pybabel update -i src/pydata_sphinx_theme/locale/sphinx.pot -d src/pydata_sphinx_theme/locale -D sphinx {posargs}

# add a new locale for translations based on the catalog template
Expand Down
24 changes: 22 additions & 2 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@ const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const dedent = require("dedent");
const { Compilation } = require("webpack");
const { exec } = require("child_process");

/*******************************************************************************
* Paths for various assets (sources and destinations)
*/

const scriptPath = resolve(__dirname, "src/pydata_sphinx_theme/assets/scripts");
const staticPath = resolve(__dirname, "src/pydata_sphinx_theme/theme/pydata_sphinx_theme/static");
const localePath = resolve(__dirname, "src/pydata_sphinx_theme/locale");
trallard marked this conversation as resolved.
Show resolved Hide resolved

/*******************************************************************************
* functions to load the assets in the html head
Expand Down Expand Up @@ -96,8 +98,8 @@ const htmlWebpackPlugin = new HtmlWebpackPlugin({
templateContent: macroTemplate,
});

module.exports = {
mode: "production",
// webpack main configuration
var config = {
devtool: "source-map",
entry: {
"pydata-sphinx-theme": resolve(scriptPath, "pydata-sphinx-theme.js"),
Expand Down Expand Up @@ -170,3 +172,21 @@ module.exports = {
topLevelAwait: true,
},
};

module.exports = (env, argv) => {
// since STB isolates the build, we need to compile the translations here for releases
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you provide a link in this code comment to more info? What does it mean that STB isolates the build?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Under the hood stb uses build for perform stb package (which in turn calls python -m build).
build builds the package in an isolated env to create the source distribution (https://build.pypa.io/en/stable/)

That means, when compiling assets from tox (or even doing npm run build during development or in our CI) it would result in something like

# note I added a simple console print to demonstrate
Webpack is building the theme in my-local-dir/pydata-sphinx-theme/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/static
Locale will be located in my-local-dir/pydata-sphinx-theme/src/pydata_sphinx_theme/locale

When calling via stb package or python -m build (which is what we do to build the dist) this is instead

Webpack is building the theme in /private/var/folders/6p/062gm41556s5p63x1555cjzw0000gn/T/build-via-sdist-rmc_7ti7/pydata_sphinx_theme-0.16.1.dev0/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/static
Locale will be located in /private/var/folders/6p/062gm41556s5p63x1555cjzw0000gn/T/build-via-sdist-rmc_7ti7/pydata_sphinx_theme-0.16.1.dev0/src/pydata_sphinx_theme/locale

so if you compile the translation files first with tox run -e i18n-compile then the compiled .mo will not be included in the distribution files by default (this isolation helps to avoid unwanted files and what not to be added to the distribution packages afterall)

trallard marked this conversation as resolved.
Show resolved Hide resolved
if (argv.mode === 'production') {
exec(`pybabel compile -d ${localePath} -D sphinx`, (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
trallard marked this conversation as resolved.
Show resolved Hide resolved
return;
}
console.log(`stdout: ${stdout}`);
});
}
return config;
};
Loading