From f509a509700329c4f3719af4dc74ac0221d7403d Mon Sep 17 00:00:00 2001 From: scottmakestech <83726258+scottmakestech@users.noreply.github.com> Date: Thu, 23 Apr 2026 14:39:53 -0500 Subject: [PATCH 1/3] Add RTL support for Hebrew and fix i18n date formatting (#1595) RTL support: - Set languageDirection = "rtl" in Hebrew language config - Migrate physical directional Tailwind classes to logical equivalents - Clients.html: use dir="auto" for software names to prevent errors Date formatting: - Replace .Format "January 2, 2006" with time.Format ":date_long" to prevent English in translated dates Home hero: - Prepare certificate count animation for better i18n and looking ahead to 1B+ certificates Closes letsencrypt/website#1595 --- config/_default/languages.he.toml | 1 + i18n/am.toml | 8 +++++- i18n/ca.toml | 8 +++++- i18n/cs.toml | 8 +++++- i18n/da.toml | 8 +++++- i18n/de.toml | 8 +++++- i18n/el.toml | 8 +++++- i18n/en.toml | 11 +++++++- i18n/es.toml | 8 +++++- i18n/fa.toml | 8 +++++- i18n/fi.toml | 8 +++++- i18n/fr.toml | 8 +++++- i18n/he.toml | 11 +++++++- i18n/hr.toml | 8 +++++- i18n/hu.toml | 8 +++++- i18n/id.toml | 8 +++++- i18n/it.toml | 8 +++++- i18n/ja.toml | 8 +++++- i18n/kaa.toml | 8 +++++- i18n/ko.toml | 8 +++++- i18n/pl.toml | 8 +++++- i18n/pt-br.toml | 8 +++++- i18n/ru.toml | 8 +++++- i18n/si.toml | 11 +++++++- i18n/sr.toml | 8 +++++- i18n/sv.toml | 8 +++++- i18n/ta.toml | 8 +++++- i18n/th.toml | 8 +++++- i18n/tr.toml | 8 +++++- i18n/uk.toml | 8 +++++- i18n/uz.toml | 8 +++++- i18n/vi.toml | 8 +++++- i18n/zh-cn.toml | 11 +++++++- i18n/zh-tw.toml | 8 +++++- .../assets/css/le-2025-theme-input.css | 28 +++++++++---------- themes/le-2025/assets/js/number-animation.js | 23 +++++++++++---- themes/le-2025/layouts/_default/single.html | 4 +-- themes/le-2025/layouts/page/donate.html | 2 +- .../partials/components/accordion-item.html | 4 +-- .../partials/components/blog-grid-item.html | 4 +-- .../partials/components/hero-grid-item.html | 2 +- .../partials/components/post-hero-image.html | 2 +- .../partials/components/post-hero.html | 2 +- themes/le-2025/layouts/partials/footer.html | 2 +- themes/le-2025/layouts/partials/header.html | 8 +++--- themes/le-2025/layouts/partials/menu.html | 4 +-- .../layouts/partials/sections/home-hero.html | 6 ++-- .../layouts/partials/sections/support.html | 6 ++-- .../layouts/shortcodes/become-a-sponsor.html | 8 +++--- .../le-2025/layouts/shortcodes/clients.html | 22 +++++++-------- .../layouts/shortcodes/i18n_status.html | 6 ++-- .../layouts/shortcodes/paypal_form.html | 6 ++-- 52 files changed, 318 insertions(+), 98 deletions(-) diff --git a/config/_default/languages.he.toml b/config/_default/languages.he.toml index 2438918ecf..187389e8a9 100644 --- a/config/_default/languages.he.toml +++ b/config/_default/languages.he.toml @@ -3,6 +3,7 @@ contentDir = "content/he" languageName = "עברית" languageCode = "he" weight = 325 +languageDirection = "rtl" [params] beforeColon = "" diff --git a/i18n/am.toml b/i18n/am.toml index 3ef4af08e1..6167182a4a 100644 --- a/i18n/am.toml +++ b/i18n/am.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/ca.toml b/i18n/ca.toml index 8b54421b1c..fda8a697cd 100644 --- a/i18n/ca.toml +++ b/i18n/ca.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/cs.toml b/i18n/cs.toml index 690861d91f..28dd66fe0e 100644 --- a/i18n/cs.toml +++ b/i18n/cs.toml @@ -407,7 +407,13 @@ other = "Nezisková organizace poskytující bezplatné TLS certifikáty pro ví other = "Nezisková organizace poskytující bezplatné TLS certifikáty pro více než" [home_hero_certificate_count] -other = "700m" +other = "700" + +[abbreviation_million] +other = "m" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "webových stránek" diff --git a/i18n/da.toml b/i18n/da.toml index fa9eadacc0..1ee16cec50 100644 --- a/i18n/da.toml +++ b/i18n/da.toml @@ -407,7 +407,13 @@ other = "En nonprofit, der leverer gratis TLS-certifikater til mere end ### hjem other = "En nonprofit, der leverer gratis TLS-certifikater til mere end" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/de.toml b/i18n/de.toml index df2846053d..d250f35c4b 100644 --- a/i18n/de.toml +++ b/i18n/de.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/el.toml b/i18n/el.toml index c7508fb1f7..6139c4f393 100644 --- a/i18n/el.toml +++ b/i18n/el.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/en.toml b/i18n/en.toml index 5a1ed6aa32..652b568abc 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -413,7 +413,16 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "B" + +[certificate_count_format] +other = "[Number][Abbreviation]" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/es.toml b/i18n/es.toml index f8b7cabeb8..a5dc4a05b5 100644 --- a/i18n/es.toml +++ b/i18n/es.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/fa.toml b/i18n/fa.toml index 4935b996ff..7fa6571603 100644 --- a/i18n/fa.toml +++ b/i18n/fa.toml @@ -411,7 +411,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/fi.toml b/i18n/fi.toml index c69dc2b355..05060ecc60 100644 --- a/i18n/fi.toml +++ b/i18n/fi.toml @@ -407,7 +407,13 @@ other = "Voittoa tavoittelematon järjestö, joka tarjoaa ilmaisia ​​TLS-var other = "Voittoa tavoittelematon järjestö, joka tarjoaa ilmaisia ​​TLS-varmenteita yli" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "verkkosivustoille" diff --git a/i18n/fr.toml b/i18n/fr.toml index 9afa5f82f9..c0ccc926ad 100644 --- a/i18n/fr.toml +++ b/i18n/fr.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/he.toml b/i18n/he.toml index 4b9455052f..b1f25dfc91 100644 --- a/i18n/he.toml +++ b/i18n/he.toml @@ -407,7 +407,16 @@ other = "ארגון ללא מטרות רווח שמספק אישורי TLS בח other = "ארגון ללא מטרות רווח שמספק אישורי TLS בחינם ליותר מ־" [home_hero_certificate_count] -other = "700 מיליון" +other = "700" + +[abbreviation_million] +other = "מיליון" + +[abbreviation_billion] +other = "" + +[certificate_count_format] +other = "[Number] [Abbreviation]" [home_hero_nonprofit_suffix] other = "אתרים" diff --git a/i18n/hr.toml b/i18n/hr.toml index a9102c4c9f..a2f8694532 100644 --- a/i18n/hr.toml +++ b/i18n/hr.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/hu.toml b/i18n/hu.toml index b64a31b6b1..02ad536b48 100644 --- a/i18n/hu.toml +++ b/i18n/hu.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/id.toml b/i18n/id.toml index f35d5226b4..294807f847 100644 --- a/i18n/id.toml +++ b/i18n/id.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/it.toml b/i18n/it.toml index 2637b99de1..b2615656ba 100644 --- a/i18n/it.toml +++ b/i18n/it.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/ja.toml b/i18n/ja.toml index 1ef893e45a..3a2b0486f5 100644 --- a/i18n/ja.toml +++ b/i18n/ja.toml @@ -407,7 +407,13 @@ other = "### 以上のウェブサイトに無料の TLS 証明書を提供し other = "私たちの非営利団体による無料 TLS 証明書の提供先:" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "ウェブサイト" diff --git a/i18n/kaa.toml b/i18n/kaa.toml index 0a9fd6ba34..638785b718 100644 --- a/i18n/kaa.toml +++ b/i18n/kaa.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/ko.toml b/i18n/ko.toml index 025dbe9b5e..625677456b 100644 --- a/i18n/ko.toml +++ b/i18n/ko.toml @@ -407,7 +407,13 @@ other = "###개 이상의 웹사이트에 무료 TLS 인증서를 제공하는 other = " " [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "개 이상의 웹사이트에 무료 TLS 인증서를 제공하는 비영리 단체" diff --git a/i18n/pl.toml b/i18n/pl.toml index 80064c054f..5f9ec43873 100644 --- a/i18n/pl.toml +++ b/i18n/pl.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/pt-br.toml b/i18n/pt-br.toml index c0080cb75d..7eff6be4ab 100644 --- a/i18n/pt-br.toml +++ b/i18n/pt-br.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/ru.toml b/i18n/ru.toml index 9f87cc125c..73431bcf38 100644 --- a/i18n/ru.toml +++ b/i18n/ru.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/si.toml b/i18n/si.toml index c4939fdbb4..f7d51fdc75 100644 --- a/i18n/si.toml +++ b/i18n/si.toml @@ -407,7 +407,16 @@ other = "වියමන අඩවි ### කට වඩා නොමිලේ TL other = "නොමිලේ TLS සහතික සපයන ලාභ නොලබන සංවිධානයකි" [home_hero_certificate_count] -other = "දශලක්‍ෂ 700" +other = "700" + +[abbreviation_million] +other = "දශලක්‍ෂ" + +[abbreviation_billion] +other = "" + +[certificate_count_format] +other = "[Abbreviation] [Number]" [home_hero_nonprofit_suffix] other = "වියමන අඩවි" diff --git a/i18n/sr.toml b/i18n/sr.toml index b05a97ca9c..fe79c30e59 100644 --- a/i18n/sr.toml +++ b/i18n/sr.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/sv.toml b/i18n/sv.toml index 418a3626ff..45d8cb0e7e 100644 --- a/i18n/sv.toml +++ b/i18n/sv.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "webbplatser" diff --git a/i18n/ta.toml b/i18n/ta.toml index d4094c0367..cc3fefcad5 100644 --- a/i18n/ta.toml +++ b/i18n/ta.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/th.toml b/i18n/th.toml index acb66291f1..ce244b9534 100644 --- a/i18n/th.toml +++ b/i18n/th.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/tr.toml b/i18n/tr.toml index 6d03eca582..b0316f8bff 100644 --- a/i18n/tr.toml +++ b/i18n/tr.toml @@ -407,7 +407,13 @@ other = "### 'dan fazla web sitesine ücretsiz TLS sertifikaları sağlayan kar other = "den fazla kuruluşa ücretsiz TLS sertifikaları sağlayan kar amacı gütmeyen bir kuruluş" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "web siteleri" diff --git a/i18n/uk.toml b/i18n/uk.toml index b760dd1667..082ac16ed1 100644 --- a/i18n/uk.toml +++ b/i18n/uk.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/uz.toml b/i18n/uz.toml index 9d05fe7302..e5a98517b1 100644 --- a/i18n/uz.toml +++ b/i18n/uz.toml @@ -407,7 +407,13 @@ other = "A nonprofit providing free TLS certificates to more than ### websites" other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/i18n/vi.toml b/i18n/vi.toml index 904dd97ffc..82650fbf61 100644 --- a/i18n/vi.toml +++ b/i18n/vi.toml @@ -407,7 +407,13 @@ other = "Một tổ chức phi lợi nhuận cung cấp chứng chỉ TLS miễn other = "Một tổ chức phi lợi nhuận cung cấp chứng chỉ TLS miễn phí cho hơn" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "trang web" diff --git a/i18n/zh-cn.toml b/i18n/zh-cn.toml index e6ff0f8f51..d93bae88b3 100644 --- a/i18n/zh-cn.toml +++ b/i18n/zh-cn.toml @@ -404,7 +404,16 @@ other = "为超过 ### 网站免费提供 TLS 证书的非营利证书颁发机 other = "为超过" [home_hero_certificate_count] -other = "7.0 亿" +other = "7.0" + +[abbreviation_million] +other = "亿" + +[abbreviation_billion] +other = "" + +[certificate_count_format] +other = "[Number] [Abbreviation]" [home_hero_nonprofit_suffix] other = "网站免费提供 TLS 证书的非营利证书颁发机构" diff --git a/i18n/zh-tw.toml b/i18n/zh-tw.toml index 131dc932b2..f35a95f83b 100644 --- a/i18n/zh-tw.toml +++ b/i18n/zh-tw.toml @@ -404,7 +404,13 @@ other = "為超過 ### 網站免費提供 TLS 證書的非營利證書頒發機 other = "A nonprofit providing free TLS certificates to more than" [home_hero_certificate_count] -other = "700M" +other = "700" + +[abbreviation_million] +other = "M" + +[abbreviation_billion] +other = "" [home_hero_nonprofit_suffix] other = "websites" diff --git a/themes/le-2025/assets/css/le-2025-theme-input.css b/themes/le-2025/assets/css/le-2025-theme-input.css index 26a6c37dbc..1f3ad783ab 100644 --- a/themes/le-2025/assets/css/le-2025-theme-input.css +++ b/themes/le-2025/assets/css/le-2025-theme-input.css @@ -101,7 +101,7 @@ } @utility donorbox-container { #donate-2025-page & iframe { - @apply md:ml-auto w-full; + @apply md:ms-auto w-full; } } @utility donate-2025-stat { @@ -227,11 +227,11 @@ } & ul { - @apply mb-6 pl-5; + @apply mb-6 ps-5; } & ol { - @apply mb-6 pl-5; + @apply mb-6 ps-5; } & ul { @@ -260,7 +260,7 @@ } & blockquote { - @apply pl-4 py-1 my-6 border-l-4 border-gray-300 text-gray-700 italic; + @apply ps-4 py-1 my-6 border-s-4 border-gray-300 text-gray-700 italic; } & h1 { @@ -313,10 +313,10 @@ } } @utility list-lock-icon { - @apply list-none pl-0!; + @apply list-none ps-0!; & li { - @apply relative pl-[53px] mb-7 list-none pt-2 min-h-[43px] font-semibold text-[20px] leading-[26px] tracking-[0.05em] text-le-blue; /* Add list-none to li */ + @apply relative ps-[53px] mb-7 list-none pt-2 min-h-[43px] font-semibold text-[20px] leading-[26px] tracking-[0.05em] text-le-blue; /* Add list-none to li */ } & li::before { @@ -333,7 +333,7 @@ @utility autoanchor { /* Autoanchor styles */ &a { - @apply no-underline text-gray-400! text-[0.8em] ml-2; + @apply no-underline text-gray-400! text-[0.8em] ms-2; } } @utility boxed { @@ -384,7 +384,7 @@ @apply py-16 bg-le-blue text-white; } @utility post-hero__inner { - @apply narrow-container mx-auto text-left pb-0.5; + @apply narrow-container mx-auto text-start pb-0.5; } @utility post-hero__breadcrumb { @apply text-sm; @@ -405,7 +405,7 @@ @apply w-full mb-6; @media (width >= theme(--breakpoint-md)) { - @apply float-right max-w-[33.33333%] ml-[25px] flex-[0_0_33.33333%]; + @apply float-right rtl:float-left max-w-[33.33333%] ms-[25px] flex-[0_0_33.33333%]; } } @utility pic-quote-right__caption { @@ -538,7 +538,7 @@ } table th, table td { - @apply px-[15px] py-3 text-left border-b border-[#e8e8e8]; + @apply px-[15px] py-3 text-start border-b border-[#e8e8e8]; } /* Mobile Navigation */ @@ -576,7 +576,7 @@ } dfn { font-weight: bold; - padding-right: .25em; /* Prevent italics text from hitting the ":" */ + padding-inline-end: .25em; /* Prevent italics text from hitting the ":" */ } /* Hide Netlify preview bar */ @@ -591,7 +591,7 @@ } .hero-bg { - @apply absolute top-0 left-0 w-full h-full bg-cover opacity-85 z-0; + @apply absolute top-0 start-0 w-full h-full bg-cover opacity-85 z-0; background-image: url('/images/radiant_london_resized/radiant_london_5_480w.jpg'); background-position: top left; } @@ -653,7 +653,7 @@ } .pull-quote-right { - @apply float-right md:ml-[25px] w-full md:max-w-[33.33333%] md:flex-[0_0_33.33333%]; + @apply float-right rtl:float-left md:ms-[25px] w-full md:max-w-[33.33333%] md:flex-[0_0_33.33333%]; } .pull-quote-right .quote-text-value { @@ -668,5 +668,5 @@ } .prose-content .pull-quote-right blockquote { - @apply mt-0 pt-0 border-0 pl-0; + @apply mt-0 pt-0 border-0 ps-0; } diff --git a/themes/le-2025/assets/js/number-animation.js b/themes/le-2025/assets/js/number-animation.js index 59971aa6b7..94645ef8ff 100644 --- a/themes/le-2025/assets/js/number-animation.js +++ b/themes/le-2025/assets/js/number-animation.js @@ -2,10 +2,23 @@ document.addEventListener("DOMContentLoaded", function() { const countElement = document.getElementById("certificate-count"); if (!countElement) return; - const finalNumber = 700; + const countStr = (countElement.dataset.count || "").trim(); + const abbr = countElement.dataset.abbr || "M"; + const fmt = countElement.dataset.format || "[Number][Abbreviation]"; + + if (!/^[\d.]+$/.test(countStr)) return; + + const finalNumber = parseFloat(countStr); + const decimalPlaces = countStr.includes('.') + ? (countStr.split('.')[1] || '').length : 0; const duration = 1000; - countElement.textContent = "0M"; + function formatCount(n) { + var num = decimalPlaces > 0 ? n.toFixed(decimalPlaces) : Math.round(n).toString(); + return fmt.replace("[Number]", num).replace("[Abbreviation]", abbr); + } + + countElement.textContent = formatCount(0); setTimeout(() => { const startTime = performance.now(); @@ -13,10 +26,8 @@ document.addEventListener("DOMContentLoaded", function() { function updateCount(currentTime) { const elapsed = currentTime - startTime; const progress = Math.min(elapsed / duration, 1); - const easeIn = t => t * t; - const easedProgress = easeIn(progress); - const currentNumber = Math.round(easedProgress * finalNumber); - countElement.textContent = currentNumber + "M"; + const easedProgress = progress * progress; + countElement.textContent = formatCount(easedProgress * finalNumber); if (progress < 1) { requestAnimationFrame(updateCount); diff --git a/themes/le-2025/layouts/_default/single.html b/themes/le-2025/layouts/_default/single.html index bd22c61ad9..2527606fd1 100644 --- a/themes/le-2025/layouts/_default/single.html +++ b/themes/le-2025/layouts/_default/single.html @@ -41,7 +41,7 @@ {{ end }} {{ if not $currentPage.Lastmod.IsZero }} - {{ $heroParams = merge $heroParams (dict "lastUpdated" ($currentPage.Lastmod.Format "January 2, 2006") "section" $currentPage.Section) }} + {{ $heroParams = merge $heroParams (dict "lastUpdated" ($currentPage.Lastmod | time.Format ":date_long") "section" $currentPage.Section) }} {{ end }} {{ if eq $currentPage.Params.imageHero true }} @@ -53,7 +53,7 @@ {{ if and .Params.english_is_canonical (ne .Language.Lang "en") }}
- + {{ i18n "english_is_canonical" | safeHTML }}
diff --git a/themes/le-2025/layouts/page/donate.html b/themes/le-2025/layouts/page/donate.html index 492e57f13a..d89f3ab214 100644 --- a/themes/le-2025/layouts/page/donate.html +++ b/themes/le-2025/layouts/page/donate.html @@ -6,7 +6,7 @@
{{ partial "funding-details.html" . }}
-
{{ partial "donorbox.html" . }}
+
{{ partial "donorbox.html" . }}
diff --git a/themes/le-2025/layouts/partials/components/accordion-item.html b/themes/le-2025/layouts/partials/components/accordion-item.html index eee9bdaf5b..8fa90e4113 100644 --- a/themes/le-2025/layouts/partials/components/accordion-item.html +++ b/themes/le-2025/layouts/partials/components/accordion-item.html @@ -1,8 +1,8 @@
diff --git a/themes/le-2025/layouts/partials/components/blog-grid-item.html b/themes/le-2025/layouts/partials/components/blog-grid-item.html index 19b6933464..11d61d5d32 100644 --- a/themes/le-2025/layouts/partials/components/blog-grid-item.html +++ b/themes/le-2025/layouts/partials/components/blog-grid-item.html @@ -4,7 +4,7 @@ {{ else }} {{ end }} - +

{{ .page.Title }}

{{ with .page.Params.excerpt }} @@ -13,7 +13,7 @@

{{ .page.Title }}

{{ .page.Summary }} {{ end }}
-
+
{{ i18n "read_more" }}{{ i18n "common_read_more_arrow" }}
\ No newline at end of file diff --git a/themes/le-2025/layouts/partials/components/hero-grid-item.html b/themes/le-2025/layouts/partials/components/hero-grid-item.html index 2482eb84cc..8ed74b87c9 100644 --- a/themes/le-2025/layouts/partials/components/hero-grid-item.html +++ b/themes/le-2025/layouts/partials/components/hero-grid-item.html @@ -12,7 +12,7 @@

{{ $title }}

{{ else }} {{ $link_text }} - + diff --git a/themes/le-2025/layouts/partials/components/post-hero-image.html b/themes/le-2025/layouts/partials/components/post-hero-image.html index 69dfa46f21..46e017a2f0 100644 --- a/themes/le-2025/layouts/partials/components/post-hero-image.html +++ b/themes/le-2025/layouts/partials/components/post-hero-image.html @@ -4,7 +4,7 @@
-
+

diff --git a/themes/le-2025/layouts/partials/components/post-hero.html b/themes/le-2025/layouts/partials/components/post-hero.html index 276cc2c457..3ac5af074c 100644 --- a/themes/le-2025/layouts/partials/components/post-hero.html +++ b/themes/le-2025/layouts/partials/components/post-hero.html @@ -12,7 +12,7 @@
-
+
{{ with .breadcrumb }}
{{ .text }} diff --git a/themes/le-2025/layouts/partials/footer.html b/themes/le-2025/layouts/partials/footer.html index 996f2b6330..543f9f4c76 100644 --- a/themes/le-2025/layouts/partials/footer.html +++ b/themes/le-2025/layouts/partials/footer.html @@ -54,7 +54,7 @@

{{ i18n "newsletter_subscribe_heading" }}