Skip to content

Add RTL support to python-docs-theme - #324

Open
sepehr-rs wants to merge 21 commits into
python:mainfrom
sepehr-rs:add-rtl
Open

Add RTL support to python-docs-theme#324
sepehr-rs wants to merge 21 commits into
python:mainfrom
sepehr-rs:add-rtl

Conversation

@sepehr-rs

Copy link
Copy Markdown
Contributor

Added RTL support to python-docs-theme. Passing the is_rtl=true flag when building the documentation now generates RTL-friendly pages.
I also added Vazirmatn as the font for RTL scripts (it really improves readability), but I’m not sure how acceptable this is, so I’m happy to change it if the maintainers disagree.
Please let me know if any changes or additions are needed. Thanks in advance!

@sepehr-rs
sepehr-rs marked this pull request as draft August 17, 2026 17:30
@read-the-docs-community

read-the-docs-community Bot commented Aug 17, 2026

Copy link
Copy Markdown

Documentation build overview

📚 python-docs-theme-previews | 🛠️ Build #34217953 | 📁 Comparing e23b0a8 against latest (f0d30cc)

  🔍 Preview build  

85 files changed · + 1 added · ± 84 modified

+ Added

± Modified

@StanFromIreland

Copy link
Copy Markdown
Member

I think it's better to do the font in a follow up, since I have some concerns about licensing and such things.

@sepehr-rs

Copy link
Copy Markdown
Contributor Author

I think it's better to do the font in a follow up, since I have some concerns about licensing and such things.

Although I’m okay with leaving this for a follow-up, Vazirmatn is an open-source project, licensed under the SIL Open Font License. But if you still think this is better handled in a follow-up, I’ll do that. Thanks a lot!

@sepehr-rs
sepehr-rs marked this pull request as ready for review August 18, 2026 04:04
@StanFromIreland

Copy link
Copy Markdown
Member

But if you still think this is better handled in a follow-up

I'd prefer that, personally.

@StanFromIreland

Copy link
Copy Markdown
Member

Can you please update your branch to pull in the translation?

Comment thread python_docs_theme/static/pydoctheme.css
@StanFromIreland

This comment was marked as resolved.

@StanFromIreland

This comment was marked as resolved.

@sepehr-rs

Copy link
Copy Markdown
Contributor Author

Thanks so much for the thorough review! I’ll work through these comments and send a patch soon.

@sepehr-rs

Copy link
Copy Markdown
Contributor Author

Hi @StanFromIreland, I addressed the review comments you left with Claude's help, built the docs locally to verify the changes, and all the issues you pointed out appear to be resolved. I also checked that the LTR version remains unaffected.
Please let me know if anything else needs adjustment. Thanks again for the thorough review!

@StanFromIreland

StanFromIreland commented Aug 19, 2026

Copy link
Copy Markdown
Member

I also checked that the LTR version remains unaffected.

Indeed, testing with the current patch, the only change is the addition of dir="ltr" attribute:

A selection of pages
diff --git a/html/whatsnew/changelog.html b/base/html/whatsnew/changelog.html
index 903b246..c60dcd2 100644
--- a/html/whatsnew/changelog.html
+++ b/base/html/whatsnew/changelog.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 
-<html lang="en" data-content_root="../">
+<html lang="en" dir="ltr" data-content_root="../">
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
@@ -20,7 +20,7 @@
     
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
     <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
-    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=4365c8fe" />
+    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=83ab0a67" />
     <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
     
     <script src="../_static/documentation_options.js?v=d86cccaa"></script>
@@ -50462,7 +50462,7 @@ Kilburn.</p></li>
 <a href="https://www.python.org/psf/donations/">Please donate.</a>
 <br>
     <br>
-      Last updated on Aug 19, 2026 (20:32 UTC).
+      Last updated on Aug 19, 2026 (20:30 UTC).
     
       <a href="/bugs.html">Found a bug</a>?
diff --git a/html/library/sqlite3.html b/base/html/library/sqlite3.html
index 6decdde..fc9f358 100644
--- a/html/library/sqlite3.html
+++ b/base/html/library/sqlite3.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 
-<html lang="en" data-content_root="../">
+<html lang="en" dir="ltr" data-content_root="../">
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
@@ -20,7 +20,7 @@
     
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
     <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
-    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=4365c8fe" />
+    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=83ab0a67" />
     <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
     
     <script src="../_static/documentation_options.js?v=d86cccaa"></script>
@@ -2979,7 +2979,7 @@ statements.  This is no longer the case.</p>
 <a href="https://www.python.org/psf/donations/">Please donate.</a>
 <br>
     <br>
-      Last updated on Aug 19, 2026 (20:32 UTC).
+      Last updated on Aug 19, 2026 (20:30 UTC).
     
       <a href="/bugs.html">Found a bug</a>?
diff --git a/html/library/datetime.html b/base/html/library/datetime.html
index b32b4a9..0381fa5 100644
--- a/html/library/datetime.html
+++ b/base/html/library/datetime.html
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 
-<html lang="en" data-content_root="../">
+<html lang="en" dir="ltr" data-content_root="../">
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
@@ -20,7 +20,7 @@
     
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
     <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
-    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=4365c8fe" />
+    <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=83ab0a67" />
     <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
     
     <script src="../_static/documentation_options.js?v=d86cccaa"></script>
@@ -3649,7 +3649,7 @@ for a good explanation.</p>
 <a href="https://www.python.org/psf/donations/">Please donate.</a>
 <br>
     <br>
-      Last updated on Aug 19, 2026 (20:32 UTC).
+      Last updated on Aug 19, 2026 (20:30 UTC).
     
       <a href="/bugs.html">Found a bug</a>?

@StanFromIreland

Copy link
Copy Markdown
Member

@cben, maybe you can help review this? From what I gather you're the expert in this area, I'd appreciate your thoughts here.

@StanFromIreland StanFromIreland left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm a little worried about regressing LTR, we should be very careful here.

Would something in layout.html like:

{% block body_tag %}<body{% if theme_is_rtl|tobool %} dir="rtl"{% endif %}>{% endblock %}

not work instead of add_html_dir_to_context?

Comment thread python_docs_theme/__init__.py Outdated
Comment thread python_docs_theme/__init__.py Outdated
Comment thread python_docs_theme/__init__.py Outdated
Comment thread python_docs_theme/static/pydoctheme.css
Comment thread python_docs_theme/static/pydoctheme.css
Comment thread python_docs_theme/static/pydoctheme.css
Comment thread python_docs_theme/static/pydoctheme.css Outdated
Comment thread python_docs_theme/__init__.py Outdated
@sepehr-rs

Copy link
Copy Markdown
Contributor Author

Thanks a lot for the review! I addressed your review comments, but for the whitespace changes, they don't show up anymore on my code editor, so I hope they're resolved. Please let me know if any changes are needed :)

@cben

cben commented Aug 20, 2026

Copy link
Copy Markdown

@StanFromIreland Ooh I'll be glad to review but have family events & vacations for a week, not sure worth waiting for me but I can review post-merge too.

@StanFromIreland

Copy link
Copy Markdown
Member

I've created #325 to get RtD previews with an RTL build.

@StanFromIreland

Copy link
Copy Markdown
Member

@StanFromIreland Ooh I'll be glad to review but have family events & vacations for a week, not sure worth waiting for me but I can review post-merge too.

That would be great!

Comment thread python_docs_theme/static/pydoctheme.css Outdated
Comment thread python_docs_theme/static/pydoctheme.css
Comment thread python_docs_theme/static/pydoctheme.css
@StanFromIreland

Copy link
Copy Markdown
Member

Oh sorry, I meant to push to #325.

This reverts commit 074cb15.

@StanFromIreland StanFromIreland left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please update the README for this option.

Comment thread python_docs_theme/static/pydoctheme.css
Comment thread python_docs_theme/static/pydoctheme.css Outdated
Comment thread python_docs_theme/static/pydoctheme.css Outdated
Comment thread python_docs_theme/static/pydoctheme.css Outdated
sepehr-rs and others added 2 commits August 25, 2026 07:39
Co-authored-by: Stan Ulbrych <stan@python.org>
@sepehr-rs

Copy link
Copy Markdown
Contributor Author

Thanks a lot for the review! I addressed your comments, please let me know if any other changes are needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants