diff --git a/assets/translations/languages.json b/assets/translations/languages.json index d26904209..cc4c58711 100644 --- a/assets/translations/languages.json +++ b/assets/translations/languages.json @@ -1,8 +1,7 @@ [ { "locale": "ar", - "label": "عربي", - "isRTL": true + "label": "عربي" }, { "locale": "ca", @@ -30,8 +29,7 @@ }, { "locale": "fa", - "label": "فارسی", - "isRTL": true + "label": "فارسی" }, { "locale": "fi", @@ -47,8 +45,7 @@ }, { "locale": "he", - "label": "עברית", - "isRTL": true + "label": "עברית" }, { "locale": "hr", @@ -68,8 +65,7 @@ }, { "locale": "ku", - "label": "کوردی", - "isRTL": true + "label": "کوردی" }, { "locale": "hi-in", diff --git a/packages/tldraw/api-report.md b/packages/tldraw/api-report.md index 111a34933..7dcfd3024 100644 --- a/packages/tldraw/api-report.md +++ b/packages/tldraw/api-report.md @@ -2408,8 +2408,8 @@ export type TLUiToolsProviderProps = { export type TLUiTranslation = { readonly locale: string; readonly label: string; - readonly isRTL?: boolean; readonly messages: Record; + readonly dir: 'ltr' | 'rtl'; }; // @public (undocumented) diff --git a/packages/tldraw/api/api.json b/packages/tldraw/api/api.json index 21ddcdf43..810741f60 100644 --- a/packages/tldraw/api/api.json +++ b/packages/tldraw/api/api.json @@ -26610,7 +26610,7 @@ }, { "kind": "Content", - "text": "{\n readonly locale: string;\n readonly label: string;\n readonly isRTL?: boolean;\n readonly messages: " + "text": "{\n readonly locale: string;\n readonly label: string;\n readonly messages: " }, { "kind": "Reference", @@ -26628,7 +26628,7 @@ }, { "kind": "Content", - "text": ", string>;\n}" + "text": ", string>;\n readonly dir: 'ltr' | 'rtl';\n}" }, { "kind": "Content", diff --git a/packages/tldraw/src/lib/shapes/note/NoteShapeUtil.tsx b/packages/tldraw/src/lib/shapes/note/NoteShapeUtil.tsx index ac0e86db4..e23536bbb 100644 --- a/packages/tldraw/src/lib/shapes/note/NoteShapeUtil.tsx +++ b/packages/tldraw/src/lib/shapes/note/NoteShapeUtil.tsx @@ -385,7 +385,7 @@ function useNoteKeydownHandler(id: TLShapeId) { // Based on the inputs, calculate the offset to the next note // tab controls x axis (shift inverts direction set by RTL) // cmd enter is the y axis (shift inverts direction) - const isRTL = !!(translation.isRTL || isRightToLeftLanguage(shape.props.text)) + const isRTL = !!(translation.dir === 'rtl' || isRightToLeftLanguage(shape.props.text)) const offsetLength = NOTE_SIZE + @@ -409,6 +409,6 @@ function useNoteKeydownHandler(id: TLShapeId) { } } }, - [id, editor, translation.isRTL] + [id, editor, translation.dir] ) } diff --git a/packages/tldraw/src/lib/ui/hooks/useTranslation/translations.ts b/packages/tldraw/src/lib/ui/hooks/useTranslation/translations.ts index 3ac6eeaa3..f6db0392b 100644 --- a/packages/tldraw/src/lib/ui/hooks/useTranslation/translations.ts +++ b/packages/tldraw/src/lib/ui/hooks/useTranslation/translations.ts @@ -10,18 +10,21 @@ import { DEFAULT_TRANSLATION } from './defaultTranslation' /* ----------------- (do not change) ---------------- */ +export const RTL_LANGUAGES = new Set(['ar', 'fa', 'he', 'ur', 'ku']) + /** @public */ export type TLUiTranslation = { readonly locale: string readonly label: string - readonly isRTL?: boolean readonly messages: Record + readonly dir: 'rtl' | 'ltr' } const EN_TRANSLATION: TLUiTranslation = { locale: 'en', label: 'English', messages: DEFAULT_TRANSLATION as TLUiTranslation['messages'], + dir: 'ltr', } /** @internal */ @@ -70,7 +73,7 @@ export async function fetchTranslation( return { locale, label: language.label, - isRTL: 'isRTL' in language ? language.isRTL : false, + dir: RTL_LANGUAGES.has(language.locale) ? 'rtl' : 'ltr', messages: { ...EN_TRANSLATION.messages, ...messages }, } } diff --git a/packages/tldraw/src/lib/ui/hooks/useTranslation/useTranslation.tsx b/packages/tldraw/src/lib/ui/hooks/useTranslation/useTranslation.tsx index bb7e093c9..837e752db 100644 --- a/packages/tldraw/src/lib/ui/hooks/useTranslation/useTranslation.tsx +++ b/packages/tldraw/src/lib/ui/hooks/useTranslation/useTranslation.tsx @@ -48,6 +48,7 @@ export const TranslationProvider = track(function TranslationProvider({ return { locale: 'en', label: 'English', + dir: 'ltr', messages: { ...DEFAULT_TRANSLATION, ...overrides['en'] }, } } @@ -55,6 +56,7 @@ export const TranslationProvider = track(function TranslationProvider({ return { locale: 'en', label: 'English', + dir: 'ltr', messages: DEFAULT_TRANSLATION, } }) diff --git a/packages/tlschema/api-report.md b/packages/tlschema/api-report.md index e26ed120e..4ff47a902 100644 --- a/packages/tlschema/api-report.md +++ b/packages/tlschema/api-report.md @@ -636,19 +636,15 @@ export const LANGUAGES: readonly [{ }, { readonly locale: "he"; readonly label: "עברית"; - readonly isRTL: true; }, { readonly locale: "ar"; readonly label: "عربي"; - readonly isRTL: true; }, { readonly locale: "fa"; readonly label: "فارسی"; - readonly isRTL: true; }, { readonly locale: "ku"; readonly label: "کوردی"; - readonly isRTL: true; }, { readonly locale: "ne"; readonly label: "नेपाली"; diff --git a/packages/tlschema/api/api.json b/packages/tlschema/api/api.json index 082e4856e..bbbc3f4aa 100644 --- a/packages/tlschema/api/api.json +++ b/packages/tlschema/api/api.json @@ -2750,7 +2750,7 @@ }, { "kind": "Content", - "text": "readonly [{\n readonly locale: \"ca\";\n readonly label: \"Català\";\n}, {\n readonly locale: \"cs\";\n readonly label: \"Čeština\";\n}, {\n readonly locale: \"da\";\n readonly label: \"Danish\";\n}, {\n readonly locale: \"de\";\n readonly label: \"Deutsch\";\n}, {\n readonly locale: \"en\";\n readonly label: \"English\";\n}, {\n readonly locale: \"es\";\n readonly label: \"Español\";\n}, {\n readonly locale: \"fr\";\n readonly label: \"Français\";\n}, {\n readonly locale: \"gl\";\n readonly label: \"Galego\";\n}, {\n readonly locale: \"hr\";\n readonly label: \"Hrvatski\";\n}, {\n readonly locale: \"it\";\n readonly label: \"Italiano\";\n}, {\n readonly locale: \"hu\";\n readonly label: \"Magyar\";\n}, {\n readonly locale: \"no\";\n readonly label: \"Norwegian\";\n}, {\n readonly locale: \"pl\";\n readonly label: \"Polski\";\n}, {\n readonly locale: \"pt-br\";\n readonly label: \"Português - Brasil\";\n}, {\n readonly locale: \"pt-pt\";\n readonly label: \"Português - Europeu\";\n}, {\n readonly locale: \"ro\";\n readonly label: \"Română\";\n}, {\n readonly locale: \"ru\";\n readonly label: \"Russian\";\n}, {\n readonly locale: \"sl\";\n readonly label: \"Slovenščina\";\n}, {\n readonly locale: \"fi\";\n readonly label: \"Suomi\";\n}, {\n readonly locale: \"sv\";\n readonly label: \"Svenska\";\n}, {\n readonly locale: \"vi\";\n readonly label: \"Tiếng Việt\";\n}, {\n readonly locale: \"tr\";\n readonly label: \"Türkçe\";\n}, {\n readonly locale: \"uk\";\n readonly label: \"Ukrainian\";\n}, {\n readonly locale: \"he\";\n readonly label: \"עברית\";\n readonly isRTL: true;\n}, {\n readonly locale: \"ar\";\n readonly label: \"عربي\";\n readonly isRTL: true;\n}, {\n readonly locale: \"fa\";\n readonly label: \"فارسی\";\n readonly isRTL: true;\n}, {\n readonly locale: \"ku\";\n readonly label: \"کوردی\";\n readonly isRTL: true;\n}, {\n readonly locale: \"ne\";\n readonly label: \"नेपाली\";\n}, {\n readonly locale: \"hi-in\";\n readonly label: \"हिन्दी\";\n}, {\n readonly locale: \"te\";\n readonly label: \"తెలుగు\";\n}, {\n readonly locale: \"th\";\n readonly label: \"ภาษาไทย\";\n}, {\n readonly locale: \"my\";\n readonly label: \"မြန်မာစာ\";\n}, {\n readonly locale: \"ko-kr\";\n readonly label: \"한국어\";\n}, {\n readonly locale: \"ja\";\n readonly label: \"日本語\";\n}, {\n readonly locale: \"zh-cn\";\n readonly label: \"简体中文\";\n}, {\n readonly locale: \"zh-tw\";\n readonly label: \"繁體中文 (台灣)\";\n}]" + "text": "readonly [{\n readonly locale: \"ca\";\n readonly label: \"Català\";\n}, {\n readonly locale: \"cs\";\n readonly label: \"Čeština\";\n}, {\n readonly locale: \"da\";\n readonly label: \"Danish\";\n}, {\n readonly locale: \"de\";\n readonly label: \"Deutsch\";\n}, {\n readonly locale: \"en\";\n readonly label: \"English\";\n}, {\n readonly locale: \"es\";\n readonly label: \"Español\";\n}, {\n readonly locale: \"fr\";\n readonly label: \"Français\";\n}, {\n readonly locale: \"gl\";\n readonly label: \"Galego\";\n}, {\n readonly locale: \"hr\";\n readonly label: \"Hrvatski\";\n}, {\n readonly locale: \"it\";\n readonly label: \"Italiano\";\n}, {\n readonly locale: \"hu\";\n readonly label: \"Magyar\";\n}, {\n readonly locale: \"no\";\n readonly label: \"Norwegian\";\n}, {\n readonly locale: \"pl\";\n readonly label: \"Polski\";\n}, {\n readonly locale: \"pt-br\";\n readonly label: \"Português - Brasil\";\n}, {\n readonly locale: \"pt-pt\";\n readonly label: \"Português - Europeu\";\n}, {\n readonly locale: \"ro\";\n readonly label: \"Română\";\n}, {\n readonly locale: \"ru\";\n readonly label: \"Russian\";\n}, {\n readonly locale: \"sl\";\n readonly label: \"Slovenščina\";\n}, {\n readonly locale: \"fi\";\n readonly label: \"Suomi\";\n}, {\n readonly locale: \"sv\";\n readonly label: \"Svenska\";\n}, {\n readonly locale: \"vi\";\n readonly label: \"Tiếng Việt\";\n}, {\n readonly locale: \"tr\";\n readonly label: \"Türkçe\";\n}, {\n readonly locale: \"uk\";\n readonly label: \"Ukrainian\";\n}, {\n readonly locale: \"he\";\n readonly label: \"עברית\";\n}, {\n readonly locale: \"ar\";\n readonly label: \"عربي\";\n}, {\n readonly locale: \"fa\";\n readonly label: \"فارسی\";\n}, {\n readonly locale: \"ku\";\n readonly label: \"کوردی\";\n}, {\n readonly locale: \"ne\";\n readonly label: \"नेपाली\";\n}, {\n readonly locale: \"hi-in\";\n readonly label: \"हिन्दी\";\n}, {\n readonly locale: \"te\";\n readonly label: \"తెలుగు\";\n}, {\n readonly locale: \"th\";\n readonly label: \"ภาษาไทย\";\n}, {\n readonly locale: \"my\";\n readonly label: \"မြန်မာစာ\";\n}, {\n readonly locale: \"ko-kr\";\n readonly label: \"한국어\";\n}, {\n readonly locale: \"ja\";\n readonly label: \"日本語\";\n}, {\n readonly locale: \"zh-cn\";\n readonly label: \"简体中文\";\n}, {\n readonly locale: \"zh-tw\";\n readonly label: \"繁體中文 (台灣)\";\n}]" } ], "fileUrlPath": "packages/tlschema/src/translations/languages.ts", diff --git a/packages/tlschema/src/translations/languages.ts b/packages/tlschema/src/translations/languages.ts index 325fc7bac..807bb4a66 100644 --- a/packages/tlschema/src/translations/languages.ts +++ b/packages/tlschema/src/translations/languages.ts @@ -26,10 +26,10 @@ export const LANGUAGES = [ { locale: 'vi', label: 'Tiếng Việt' }, { locale: 'tr', label: 'Türkçe' }, { locale: 'uk', label: 'Ukrainian' }, - { locale: 'he', label: 'עברית', isRTL: true }, - { locale: 'ar', label: 'عربي', isRTL: true }, - { locale: 'fa', label: 'فارسی', isRTL: true }, - { locale: 'ku', label: 'کوردی', isRTL: true }, + { locale: 'he', label: 'עברית' }, + { locale: 'ar', label: 'عربي' }, + { locale: 'fa', label: 'فارسی' }, + { locale: 'ku', label: 'کوردی' }, { locale: 'ne', label: 'नेपाली' }, { locale: 'hi-in', label: 'हिन्दी' }, { locale: 'te', label: 'తెలుగు' },