From e7a8c9db82c528772e88a23ef15b1f3b090d28d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lorber?= Date: Thu, 26 Dec 2024 15:44:07 +0100 Subject: [PATCH] =?UTF-8?q?refactor(core):=20Use=20Intl=20native=20API=20t?= =?UTF-8?q?o=20get=20locale=20direction,=20remove=20rtl-detect=20depend?= =?UTF-8?q?=E2=80=A6=20(#10798)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docusaurus/package.json | 2 -- packages/docusaurus/src/server/i18n.ts | 13 +++++++++++-- yarn.lock | 10 ---------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/docusaurus/package.json b/packages/docusaurus/package.json index 12667cd6f31e..ed904d0d608e 100644 --- a/packages/docusaurus/package.json +++ b/packages/docusaurus/package.json @@ -66,7 +66,6 @@ "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", - "rtl-detect": "^1.0.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", "shelljs": "^0.8.5", @@ -84,7 +83,6 @@ "@types/detect-port": "^1.3.3", "@types/react-dom": "^18.2.7", "@types/react-router-config": "^5.0.7", - "@types/rtl-detect": "^1.0.0", "@types/serve-handler": "^6.1.4", "@types/update-notifier": "^6.0.4", "@types/webpack-bundle-analyzer": "^4.7.0", diff --git a/packages/docusaurus/src/server/i18n.ts b/packages/docusaurus/src/server/i18n.ts index e53490fcc27f..a7b41de4c728 100644 --- a/packages/docusaurus/src/server/i18n.ts +++ b/packages/docusaurus/src/server/i18n.ts @@ -6,7 +6,6 @@ */ import logger from '@docusaurus/logger'; -import {getLangDir} from 'rtl-detect'; import type {I18n, DocusaurusConfig, I18nLocaleConfig} from '@docusaurus/types'; import type {LoadContextParams} from './site'; @@ -69,11 +68,21 @@ function getDefaultCalendar(localeStr: string) { return 'gregory'; } +function getDefaultDirection(localeStr: string) { + const locale = new Intl.Locale(localeStr); + // see https://github.com/tc39/proposal-intl-locale-info + // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getTextInfo + // Node 18.0 implements a former version of the getTextInfo() proposal + // @ts-expect-error: The TC39 proposal was updated + const textInto = locale.getTextInfo?.() ?? locale.textInfo; + return textInto.direction; +} + export function getDefaultLocaleConfig(locale: string): I18nLocaleConfig { try { return { label: getDefaultLocaleLabel(locale), - direction: getLangDir(locale), + direction: getDefaultDirection(locale), htmlLang: locale, calendar: getDefaultCalendar(locale), path: locale, diff --git a/yarn.lock b/yarn.lock index af88fd9124b3..f0bf31f99372 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4259,11 +4259,6 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/rtl-detect@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/rtl-detect/-/rtl-detect-1.0.3.tgz#2b9849ece923d767712e95efa01ca75724de0de5" - integrity sha512-qpstuHivwg/HoXxRrBo5/r/OVx5M2SkqJpVu2haasdLctt+jMGHWjqdbI0LL7Rk2wRmN/UHdHK4JZg9RUMcvKA== - "@types/rtlcss@^3.5.1": version "3.5.4" resolved "https://registry.yarnpkg.com/@types/rtlcss/-/rtlcss-3.5.4.tgz#8db1e02fe911cf5b71f4cb42dafce8ccaef8e1e1" @@ -15899,11 +15894,6 @@ rslog@^1.2.3: resolved "https://registry.yarnpkg.com/rslog/-/rslog-1.2.3.tgz#9114d93056312fbe35c11b3fea3f2774a7debe56" integrity sha512-antALPJaKBRPBU1X2q9t085K4htWDOOv/K1qhTUk7h0l1ePU/KbDqKJn19eKP0dk7PqMioeA0+fu3gyPXCsXxQ== -rtl-detect@^1.0.4: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6" - integrity sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== - rtlcss@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.3.0.tgz#f8efd4d5b64f640ec4af8fa25b65bacd9e07cc97"