@adminiumjs/i18n 0.3.31 → 0.3.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a11y-keys.d.ts +1 -1
- package/dist/a11y-keys.d.ts.map +1 -1
- package/dist/a11y-keys.js +239 -1
- package/dist/a11y-keys.js.map +1 -1
- package/dist/create-i18n-core.d.ts +69 -0
- package/dist/create-i18n-core.d.ts.map +1 -0
- package/dist/create-i18n-core.js +143 -0
- package/dist/create-i18n-core.js.map +1 -0
- package/dist/create-i18n.d.ts +9 -48
- package/dist/create-i18n.d.ts.map +1 -1
- package/dist/create-i18n.js +12 -134
- package/dist/create-i18n.js.map +1 -1
- package/dist/page.d.ts +19 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +14 -0
- package/dist/page.js.map +1 -0
- package/dist/resources/ar-eg/common.d.ts +4 -16
- package/dist/resources/ar-eg/common.d.ts.map +1 -1
- package/dist/resources/ar-eg/common.js +6 -18
- package/dist/resources/ar-eg/common.js.map +1 -1
- package/dist/resources/ar-eg/designer.d.ts +30 -0
- package/dist/resources/ar-eg/designer.d.ts.map +1 -1
- package/dist/resources/ar-eg/designer.js +30 -0
- package/dist/resources/ar-eg/designer.js.map +1 -1
- package/dist/resources/ar-eg/desktop.d.ts +33 -0
- package/dist/resources/ar-eg/desktop.d.ts.map +1 -1
- package/dist/resources/ar-eg/desktop.js +33 -0
- package/dist/resources/ar-eg/desktop.js.map +1 -1
- package/dist/resources/ar-eg/email.d.ts +26 -0
- package/dist/resources/ar-eg/email.d.ts.map +1 -1
- package/dist/resources/ar-eg/email.js +26 -0
- package/dist/resources/ar-eg/email.js.map +1 -1
- package/dist/resources/ar-eg/pay.d.ts +175 -0
- package/dist/resources/ar-eg/pay.d.ts.map +1 -0
- package/dist/resources/ar-eg/pay.js +175 -0
- package/dist/resources/ar-eg/pay.js.map +1 -0
- package/dist/resources/ar-eg/payments.d.ts +212 -0
- package/dist/resources/ar-eg/payments.d.ts.map +1 -0
- package/dist/resources/ar-eg/payments.js +212 -0
- package/dist/resources/ar-eg/payments.js.map +1 -0
- package/dist/resources/ar-eg/roles.d.ts +3 -0
- package/dist/resources/ar-eg/roles.d.ts.map +1 -1
- package/dist/resources/ar-eg/roles.js +4 -1
- package/dist/resources/ar-eg/roles.js.map +1 -1
- package/dist/resources/ar-eg/studio.d.ts +665 -0
- package/dist/resources/ar-eg/studio.d.ts.map +1 -1
- package/dist/resources/ar-eg/studio.js +666 -1
- package/dist/resources/ar-eg/studio.js.map +1 -1
- package/dist/resources/ar-eg/ui.d.ts +6 -0
- package/dist/resources/ar-eg/ui.d.ts.map +1 -1
- package/dist/resources/ar-eg/ui.js +6 -0
- package/dist/resources/ar-eg/ui.js.map +1 -1
- package/dist/resources/cs-cz/common.d.ts +4 -16
- package/dist/resources/cs-cz/common.d.ts.map +1 -1
- package/dist/resources/cs-cz/common.js +6 -18
- package/dist/resources/cs-cz/common.js.map +1 -1
- package/dist/resources/cs-cz/designer.d.ts +30 -0
- package/dist/resources/cs-cz/designer.d.ts.map +1 -1
- package/dist/resources/cs-cz/designer.js +30 -0
- package/dist/resources/cs-cz/designer.js.map +1 -1
- package/dist/resources/cs-cz/desktop.d.ts +33 -0
- package/dist/resources/cs-cz/desktop.d.ts.map +1 -1
- package/dist/resources/cs-cz/desktop.js +33 -0
- package/dist/resources/cs-cz/desktop.js.map +1 -1
- package/dist/resources/cs-cz/email.d.ts +26 -0
- package/dist/resources/cs-cz/email.d.ts.map +1 -1
- package/dist/resources/cs-cz/email.js +26 -0
- package/dist/resources/cs-cz/email.js.map +1 -1
- package/dist/resources/cs-cz/pay.d.ts +175 -0
- package/dist/resources/cs-cz/pay.d.ts.map +1 -0
- package/dist/resources/cs-cz/pay.js +175 -0
- package/dist/resources/cs-cz/pay.js.map +1 -0
- package/dist/resources/cs-cz/payments.d.ts +212 -0
- package/dist/resources/cs-cz/payments.d.ts.map +1 -0
- package/dist/resources/cs-cz/payments.js +212 -0
- package/dist/resources/cs-cz/payments.js.map +1 -0
- package/dist/resources/cs-cz/roles.d.ts +3 -0
- package/dist/resources/cs-cz/roles.d.ts.map +1 -1
- package/dist/resources/cs-cz/roles.js +4 -1
- package/dist/resources/cs-cz/roles.js.map +1 -1
- package/dist/resources/cs-cz/studio.d.ts +665 -0
- package/dist/resources/cs-cz/studio.d.ts.map +1 -1
- package/dist/resources/cs-cz/studio.js +666 -1
- package/dist/resources/cs-cz/studio.js.map +1 -1
- package/dist/resources/cs-cz/ui.d.ts +6 -0
- package/dist/resources/cs-cz/ui.d.ts.map +1 -1
- package/dist/resources/cs-cz/ui.js +6 -0
- package/dist/resources/cs-cz/ui.js.map +1 -1
- package/dist/resources/da-dk/common.d.ts +4 -16
- package/dist/resources/da-dk/common.d.ts.map +1 -1
- package/dist/resources/da-dk/common.js +6 -18
- package/dist/resources/da-dk/common.js.map +1 -1
- package/dist/resources/da-dk/designer.d.ts +30 -0
- package/dist/resources/da-dk/designer.d.ts.map +1 -1
- package/dist/resources/da-dk/designer.js +30 -0
- package/dist/resources/da-dk/designer.js.map +1 -1
- package/dist/resources/da-dk/desktop.d.ts +33 -0
- package/dist/resources/da-dk/desktop.d.ts.map +1 -1
- package/dist/resources/da-dk/desktop.js +33 -0
- package/dist/resources/da-dk/desktop.js.map +1 -1
- package/dist/resources/da-dk/email.d.ts +26 -0
- package/dist/resources/da-dk/email.d.ts.map +1 -1
- package/dist/resources/da-dk/email.js +26 -0
- package/dist/resources/da-dk/email.js.map +1 -1
- package/dist/resources/da-dk/pay.d.ts +175 -0
- package/dist/resources/da-dk/pay.d.ts.map +1 -0
- package/dist/resources/da-dk/pay.js +175 -0
- package/dist/resources/da-dk/pay.js.map +1 -0
- package/dist/resources/da-dk/payments.d.ts +212 -0
- package/dist/resources/da-dk/payments.d.ts.map +1 -0
- package/dist/resources/da-dk/payments.js +212 -0
- package/dist/resources/da-dk/payments.js.map +1 -0
- package/dist/resources/da-dk/roles.d.ts +3 -0
- package/dist/resources/da-dk/roles.d.ts.map +1 -1
- package/dist/resources/da-dk/roles.js +4 -1
- package/dist/resources/da-dk/roles.js.map +1 -1
- package/dist/resources/da-dk/studio.d.ts +665 -0
- package/dist/resources/da-dk/studio.d.ts.map +1 -1
- package/dist/resources/da-dk/studio.js +666 -1
- package/dist/resources/da-dk/studio.js.map +1 -1
- package/dist/resources/da-dk/ui.d.ts +6 -0
- package/dist/resources/da-dk/ui.d.ts.map +1 -1
- package/dist/resources/da-dk/ui.js +6 -0
- package/dist/resources/da-dk/ui.js.map +1 -1
- package/dist/resources/de-de/common.d.ts +4 -16
- package/dist/resources/de-de/common.d.ts.map +1 -1
- package/dist/resources/de-de/common.js +6 -18
- package/dist/resources/de-de/common.js.map +1 -1
- package/dist/resources/de-de/designer.d.ts +30 -0
- package/dist/resources/de-de/designer.d.ts.map +1 -1
- package/dist/resources/de-de/designer.js +30 -0
- package/dist/resources/de-de/designer.js.map +1 -1
- package/dist/resources/de-de/desktop.d.ts +33 -0
- package/dist/resources/de-de/desktop.d.ts.map +1 -1
- package/dist/resources/de-de/desktop.js +33 -0
- package/dist/resources/de-de/desktop.js.map +1 -1
- package/dist/resources/de-de/email.d.ts +26 -0
- package/dist/resources/de-de/email.d.ts.map +1 -1
- package/dist/resources/de-de/email.js +26 -0
- package/dist/resources/de-de/email.js.map +1 -1
- package/dist/resources/de-de/pay.d.ts +175 -0
- package/dist/resources/de-de/pay.d.ts.map +1 -0
- package/dist/resources/de-de/pay.js +175 -0
- package/dist/resources/de-de/pay.js.map +1 -0
- package/dist/resources/de-de/payments.d.ts +212 -0
- package/dist/resources/de-de/payments.d.ts.map +1 -0
- package/dist/resources/de-de/payments.js +212 -0
- package/dist/resources/de-de/payments.js.map +1 -0
- package/dist/resources/de-de/roles.d.ts +3 -0
- package/dist/resources/de-de/roles.d.ts.map +1 -1
- package/dist/resources/de-de/roles.js +4 -1
- package/dist/resources/de-de/roles.js.map +1 -1
- package/dist/resources/de-de/studio.d.ts +665 -0
- package/dist/resources/de-de/studio.d.ts.map +1 -1
- package/dist/resources/de-de/studio.js +666 -1
- package/dist/resources/de-de/studio.js.map +1 -1
- package/dist/resources/de-de/ui.d.ts +6 -0
- package/dist/resources/de-de/ui.d.ts.map +1 -1
- package/dist/resources/de-de/ui.js +6 -0
- package/dist/resources/de-de/ui.js.map +1 -1
- package/dist/resources/deferred-counts.d.ts +2 -2
- package/dist/resources/deferred-counts.js +1 -1
- package/dist/resources/en-us/common-deferred.d.ts +3 -0
- package/dist/resources/en-us/common-deferred.d.ts.map +1 -1
- package/dist/resources/en-us/common-deferred.js +4 -1
- package/dist/resources/en-us/common-deferred.js.map +1 -1
- package/dist/resources/en-us/common.d.ts +1 -16
- package/dist/resources/en-us/common.d.ts.map +1 -1
- package/dist/resources/en-us/common.js +2 -17
- package/dist/resources/en-us/common.js.map +1 -1
- package/dist/resources/en-us/designer.d.ts +30 -0
- package/dist/resources/en-us/designer.d.ts.map +1 -1
- package/dist/resources/en-us/designer.js +30 -0
- package/dist/resources/en-us/designer.js.map +1 -1
- package/dist/resources/en-us/desktop.d.ts +33 -0
- package/dist/resources/en-us/desktop.d.ts.map +1 -1
- package/dist/resources/en-us/desktop.js +33 -0
- package/dist/resources/en-us/desktop.js.map +1 -1
- package/dist/resources/en-us/email.d.ts +26 -0
- package/dist/resources/en-us/email.d.ts.map +1 -1
- package/dist/resources/en-us/email.js +26 -0
- package/dist/resources/en-us/email.js.map +1 -1
- package/dist/resources/en-us/pay.d.ts +175 -0
- package/dist/resources/en-us/pay.d.ts.map +1 -0
- package/dist/resources/en-us/pay.js +175 -0
- package/dist/resources/en-us/pay.js.map +1 -0
- package/dist/resources/en-us/payments.d.ts +212 -0
- package/dist/resources/en-us/payments.d.ts.map +1 -0
- package/dist/resources/en-us/payments.js +212 -0
- package/dist/resources/en-us/payments.js.map +1 -0
- package/dist/resources/en-us/roles.d.ts +3 -0
- package/dist/resources/en-us/roles.d.ts.map +1 -1
- package/dist/resources/en-us/roles.js +4 -1
- package/dist/resources/en-us/roles.js.map +1 -1
- package/dist/resources/en-us/studio.d.ts +665 -0
- package/dist/resources/en-us/studio.d.ts.map +1 -1
- package/dist/resources/en-us/studio.js +666 -1
- package/dist/resources/en-us/studio.js.map +1 -1
- package/dist/resources/en-us/ui-deferred.d.ts +1 -0
- package/dist/resources/en-us/ui-deferred.d.ts.map +1 -1
- package/dist/resources/en-us/ui-deferred.js +1 -0
- package/dist/resources/en-us/ui-deferred.js.map +1 -1
- package/dist/resources/en-us/ui.d.ts +5 -0
- package/dist/resources/en-us/ui.d.ts.map +1 -1
- package/dist/resources/en-us/ui.js +5 -0
- package/dist/resources/en-us/ui.js.map +1 -1
- package/dist/resources/fr-fr/common.d.ts +4 -16
- package/dist/resources/fr-fr/common.d.ts.map +1 -1
- package/dist/resources/fr-fr/common.js +6 -18
- package/dist/resources/fr-fr/common.js.map +1 -1
- package/dist/resources/fr-fr/designer.d.ts +30 -0
- package/dist/resources/fr-fr/designer.d.ts.map +1 -1
- package/dist/resources/fr-fr/designer.js +30 -0
- package/dist/resources/fr-fr/designer.js.map +1 -1
- package/dist/resources/fr-fr/desktop.d.ts +33 -0
- package/dist/resources/fr-fr/desktop.d.ts.map +1 -1
- package/dist/resources/fr-fr/desktop.js +33 -0
- package/dist/resources/fr-fr/desktop.js.map +1 -1
- package/dist/resources/fr-fr/email.d.ts +26 -0
- package/dist/resources/fr-fr/email.d.ts.map +1 -1
- package/dist/resources/fr-fr/email.js +26 -0
- package/dist/resources/fr-fr/email.js.map +1 -1
- package/dist/resources/fr-fr/pay.d.ts +175 -0
- package/dist/resources/fr-fr/pay.d.ts.map +1 -0
- package/dist/resources/fr-fr/pay.js +175 -0
- package/dist/resources/fr-fr/pay.js.map +1 -0
- package/dist/resources/fr-fr/payments.d.ts +212 -0
- package/dist/resources/fr-fr/payments.d.ts.map +1 -0
- package/dist/resources/fr-fr/payments.js +212 -0
- package/dist/resources/fr-fr/payments.js.map +1 -0
- package/dist/resources/fr-fr/roles.d.ts +3 -0
- package/dist/resources/fr-fr/roles.d.ts.map +1 -1
- package/dist/resources/fr-fr/roles.js +4 -1
- package/dist/resources/fr-fr/roles.js.map +1 -1
- package/dist/resources/fr-fr/studio.d.ts +665 -0
- package/dist/resources/fr-fr/studio.d.ts.map +1 -1
- package/dist/resources/fr-fr/studio.js +666 -1
- package/dist/resources/fr-fr/studio.js.map +1 -1
- package/dist/resources/fr-fr/ui.d.ts +6 -0
- package/dist/resources/fr-fr/ui.d.ts.map +1 -1
- package/dist/resources/fr-fr/ui.js +6 -0
- package/dist/resources/fr-fr/ui.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +4 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/lazy.d.ts.map +1 -1
- package/dist/resources/lazy.js +16 -0
- package/dist/resources/lazy.js.map +1 -1
- package/dist/resources/namespaces.d.ts +2 -2
- package/dist/resources/namespaces.d.ts.map +1 -1
- package/dist/resources/namespaces.js +14 -0
- package/dist/resources/namespaces.js.map +1 -1
- package/dist/resources/zh-cn/common.d.ts +4 -16
- package/dist/resources/zh-cn/common.d.ts.map +1 -1
- package/dist/resources/zh-cn/common.js +6 -18
- package/dist/resources/zh-cn/common.js.map +1 -1
- package/dist/resources/zh-cn/designer.d.ts +30 -0
- package/dist/resources/zh-cn/designer.d.ts.map +1 -1
- package/dist/resources/zh-cn/designer.js +30 -0
- package/dist/resources/zh-cn/designer.js.map +1 -1
- package/dist/resources/zh-cn/desktop.d.ts +33 -0
- package/dist/resources/zh-cn/desktop.d.ts.map +1 -1
- package/dist/resources/zh-cn/desktop.js +33 -0
- package/dist/resources/zh-cn/desktop.js.map +1 -1
- package/dist/resources/zh-cn/email.d.ts +26 -0
- package/dist/resources/zh-cn/email.d.ts.map +1 -1
- package/dist/resources/zh-cn/email.js +26 -0
- package/dist/resources/zh-cn/email.js.map +1 -1
- package/dist/resources/zh-cn/pay.d.ts +175 -0
- package/dist/resources/zh-cn/pay.d.ts.map +1 -0
- package/dist/resources/zh-cn/pay.js +175 -0
- package/dist/resources/zh-cn/pay.js.map +1 -0
- package/dist/resources/zh-cn/payments.d.ts +212 -0
- package/dist/resources/zh-cn/payments.d.ts.map +1 -0
- package/dist/resources/zh-cn/payments.js +212 -0
- package/dist/resources/zh-cn/payments.js.map +1 -0
- package/dist/resources/zh-cn/roles.d.ts +3 -0
- package/dist/resources/zh-cn/roles.d.ts.map +1 -1
- package/dist/resources/zh-cn/roles.js +4 -1
- package/dist/resources/zh-cn/roles.js.map +1 -1
- package/dist/resources/zh-cn/studio.d.ts +665 -0
- package/dist/resources/zh-cn/studio.d.ts.map +1 -1
- package/dist/resources/zh-cn/studio.js +666 -1
- package/dist/resources/zh-cn/studio.js.map +1 -1
- package/dist/resources/zh-cn/ui.d.ts +6 -0
- package/dist/resources/zh-cn/ui.d.ts.map +1 -1
- package/dist/resources/zh-cn/ui.js +6 -0
- package/dist/resources/zh-cn/ui.js.map +1 -1
- package/dist/resources/zh-tw/common.d.ts +4 -16
- package/dist/resources/zh-tw/common.d.ts.map +1 -1
- package/dist/resources/zh-tw/common.js +6 -18
- package/dist/resources/zh-tw/common.js.map +1 -1
- package/dist/resources/zh-tw/designer.d.ts +30 -0
- package/dist/resources/zh-tw/designer.d.ts.map +1 -1
- package/dist/resources/zh-tw/designer.js +30 -0
- package/dist/resources/zh-tw/designer.js.map +1 -1
- package/dist/resources/zh-tw/desktop.d.ts +33 -0
- package/dist/resources/zh-tw/desktop.d.ts.map +1 -1
- package/dist/resources/zh-tw/desktop.js +33 -0
- package/dist/resources/zh-tw/desktop.js.map +1 -1
- package/dist/resources/zh-tw/email.d.ts +26 -0
- package/dist/resources/zh-tw/email.d.ts.map +1 -1
- package/dist/resources/zh-tw/email.js +26 -0
- package/dist/resources/zh-tw/email.js.map +1 -1
- package/dist/resources/zh-tw/pay.d.ts +175 -0
- package/dist/resources/zh-tw/pay.d.ts.map +1 -0
- package/dist/resources/zh-tw/pay.js +175 -0
- package/dist/resources/zh-tw/pay.js.map +1 -0
- package/dist/resources/zh-tw/payments.d.ts +212 -0
- package/dist/resources/zh-tw/payments.d.ts.map +1 -0
- package/dist/resources/zh-tw/payments.js +212 -0
- package/dist/resources/zh-tw/payments.js.map +1 -0
- package/dist/resources/zh-tw/roles.d.ts +3 -0
- package/dist/resources/zh-tw/roles.d.ts.map +1 -1
- package/dist/resources/zh-tw/roles.js +4 -1
- package/dist/resources/zh-tw/roles.js.map +1 -1
- package/dist/resources/zh-tw/studio.d.ts +665 -0
- package/dist/resources/zh-tw/studio.d.ts.map +1 -1
- package/dist/resources/zh-tw/studio.js +666 -1
- package/dist/resources/zh-tw/studio.js.map +1 -1
- package/dist/resources/zh-tw/ui.d.ts +6 -0
- package/dist/resources/zh-tw/ui.d.ts.map +1 -1
- package/dist/resources/zh-tw/ui.js +6 -0
- package/dist/resources/zh-tw/ui.js.map +1 -1
- package/dist/review-status.js +7 -7
- package/dist/review-status.js.map +1 -1
- package/locales/ar-EG/.meta.json +8640 -4992
- package/locales/ar-EG/common.json +6 -18
- package/locales/ar-EG/designer.json +30 -0
- package/locales/ar-EG/desktop.json +33 -0
- package/locales/ar-EG/email.json +26 -0
- package/locales/ar-EG/pay.json +164 -0
- package/locales/ar-EG/payments.json +201 -0
- package/locales/ar-EG/roles.json +4 -1
- package/locales/ar-EG/studio.json +666 -1
- package/locales/ar-EG/ui.json +6 -0
- package/locales/cs-CZ/.meta.json +8680 -5032
- package/locales/cs-CZ/common.json +6 -18
- package/locales/cs-CZ/designer.json +30 -0
- package/locales/cs-CZ/desktop.json +33 -0
- package/locales/cs-CZ/email.json +26 -0
- package/locales/cs-CZ/pay.json +164 -0
- package/locales/cs-CZ/payments.json +201 -0
- package/locales/cs-CZ/roles.json +4 -1
- package/locales/cs-CZ/studio.json +666 -1
- package/locales/cs-CZ/ui.json +6 -0
- package/locales/da-DK/.meta.json +8729 -5081
- package/locales/da-DK/common.json +6 -18
- package/locales/da-DK/designer.json +30 -0
- package/locales/da-DK/desktop.json +33 -0
- package/locales/da-DK/email.json +26 -0
- package/locales/da-DK/pay.json +164 -0
- package/locales/da-DK/payments.json +201 -0
- package/locales/da-DK/roles.json +4 -1
- package/locales/da-DK/studio.json +666 -1
- package/locales/da-DK/ui.json +6 -0
- package/locales/de-DE/.meta.json +8626 -4978
- package/locales/de-DE/common.json +6 -18
- package/locales/de-DE/designer.json +30 -0
- package/locales/de-DE/desktop.json +33 -0
- package/locales/de-DE/email.json +26 -0
- package/locales/de-DE/pay.json +164 -0
- package/locales/de-DE/payments.json +201 -0
- package/locales/de-DE/roles.json +4 -1
- package/locales/de-DE/studio.json +666 -1
- package/locales/de-DE/ui.json +6 -0
- package/locales/en-US/common.json +6 -18
- package/locales/en-US/designer.json +30 -0
- package/locales/en-US/desktop.json +33 -0
- package/locales/en-US/email.json +26 -0
- package/locales/en-US/pay.json +164 -0
- package/locales/en-US/payments.json +201 -0
- package/locales/en-US/roles.json +4 -1
- package/locales/en-US/studio.json +666 -1
- package/locales/en-US/ui.json +6 -0
- package/locales/fr-FR/.meta.json +8614 -4966
- package/locales/fr-FR/common.json +6 -18
- package/locales/fr-FR/designer.json +30 -0
- package/locales/fr-FR/desktop.json +33 -0
- package/locales/fr-FR/email.json +26 -0
- package/locales/fr-FR/pay.json +164 -0
- package/locales/fr-FR/payments.json +201 -0
- package/locales/fr-FR/roles.json +4 -1
- package/locales/fr-FR/studio.json +666 -1
- package/locales/fr-FR/ui.json +6 -0
- package/locales/zh-CN/.meta.json +8643 -4995
- package/locales/zh-CN/common.json +6 -18
- package/locales/zh-CN/designer.json +30 -0
- package/locales/zh-CN/desktop.json +33 -0
- package/locales/zh-CN/email.json +26 -0
- package/locales/zh-CN/pay.json +164 -0
- package/locales/zh-CN/payments.json +201 -0
- package/locales/zh-CN/roles.json +4 -1
- package/locales/zh-CN/studio.json +666 -1
- package/locales/zh-CN/ui.json +6 -0
- package/locales/zh-TW/.meta.json +8643 -4995
- package/locales/zh-TW/common.json +6 -18
- package/locales/zh-TW/designer.json +30 -0
- package/locales/zh-TW/desktop.json +33 -0
- package/locales/zh-TW/email.json +26 -0
- package/locales/zh-TW/pay.json +164 -0
- package/locales/zh-TW/payments.json +201 -0
- package/locales/zh-TW/roles.json +4 -1
- package/locales/zh-TW/studio.json +666 -1
- package/locales/zh-TW/ui.json +6 -0
- package/package.json +5 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
/**
|
|
3
|
+
* THE CORE, with no bundle of its own: `create-i18n.ts` hands it the
|
|
4
|
+
* dashboard's eager English, and a page with its own small vocabulary (the
|
|
5
|
+
* customer's pay page, `./page.ts`) hands it only its own, so a bundler
|
|
6
|
+
* never sees the dashboard's words from there.
|
|
7
|
+
*
|
|
8
|
+
* i18next factory: i18next + IcuFormat (ICU MessageFormat for every
|
|
9
|
+
* message — i18next's own plural-suffix system is disabled by the ICU
|
|
10
|
+
* format plugin) + an inline lazy backend.
|
|
11
|
+
*
|
|
12
|
+
* The instance starts with the EAGER namespaces only: en-US's ship
|
|
13
|
+
* synchronously (they are the fallback text and must never be async) and the
|
|
14
|
+
* active locale's are fetched through `loadBundle` before `init` resolves —
|
|
15
|
+
* the dashboard passes a Vite dynamic-import loader, so each locale becomes
|
|
16
|
+
* its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
|
|
17
|
+
* surface that owns it calls `instance.loadNamespaces()` and waits, which is
|
|
18
|
+
* what keeps the admin console's text out of every user's first load. See
|
|
19
|
+
* ./resources/namespaces.ts.
|
|
20
|
+
*/
|
|
21
|
+
import i18next, {} from 'i18next';
|
|
22
|
+
import { IcuFormat } from './icu-format.js';
|
|
23
|
+
import { localeEntry, tagForLocale } from './locales.js';
|
|
24
|
+
import { bumpI18nRevision } from './revision.js';
|
|
25
|
+
function lazyBackend(load) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'backend',
|
|
28
|
+
init() {
|
|
29
|
+
// Options come through the closure — nothing to do.
|
|
30
|
+
},
|
|
31
|
+
read(language, namespace, callback) {
|
|
32
|
+
void Promise.resolve()
|
|
33
|
+
.then(async () => await load(language, namespace))
|
|
34
|
+
.then((bundle) => {
|
|
35
|
+
if (bundle === null) {
|
|
36
|
+
callback(null, {});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const data = 'default' in bundle ? bundle.default : bundle;
|
|
40
|
+
// CLONE. i18next stores a backend bundle BY REFERENCE
|
|
41
|
+
// (`skipCopy: true` on the connector's store write), and this
|
|
42
|
+
// object is the live default export of a dynamic-import module —
|
|
43
|
+
// a process-wide singleton. Anything that later merges runtime
|
|
44
|
+
// overrides into the store would rewrite the compiled chunk
|
|
45
|
+
// itself, destroying the original text for every other instance
|
|
46
|
+
// in the process. Clone once here so the store owns its copy.
|
|
47
|
+
callback(null, structuredClone(data));
|
|
48
|
+
}, () => {
|
|
49
|
+
// Missing/failed chunk: resolve empty so the fallback chain applies
|
|
50
|
+
// (degraded network beats a blank screen).
|
|
51
|
+
callback(null, {});
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export async function buildI18n(opts, base) {
|
|
57
|
+
const tag = tagForLocale(opts.locale);
|
|
58
|
+
// DEEP clone, not a spread. A shallow spread leaves
|
|
59
|
+
// `resources['en-US'].common === <the bundled module>.common`, and i18next's
|
|
60
|
+
// ResourceStore takes `this.data = data` with no copy of its own — so the
|
|
61
|
+
// store would alias the compiled ES-module singletons. Any later merge of
|
|
62
|
+
// runtime overrides would then permanently rewrite the compiled
|
|
63
|
+
// English in memory: the original text is gone, so even a correct
|
|
64
|
+
// reset-to-built-in has nothing to restore, and on the server every
|
|
65
|
+
// subsequently created instance inherits another caller's overrides.
|
|
66
|
+
const resources = {
|
|
67
|
+
'en-US': structuredClone(base.english),
|
|
68
|
+
};
|
|
69
|
+
for (const [resourceTag, byNs] of Object.entries(opts.resources ?? {})) {
|
|
70
|
+
if (byNs === undefined)
|
|
71
|
+
continue;
|
|
72
|
+
const target = (resources[resourceTag] ??= {});
|
|
73
|
+
for (const [ns, bundle] of Object.entries(byNs)) {
|
|
74
|
+
// Cloned for the same reason as the bundled resources above: a caller
|
|
75
|
+
// (Electron packaging, tests) may hand us a module singleton.
|
|
76
|
+
if (bundle !== undefined)
|
|
77
|
+
target[ns] = structuredClone(bundle);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const instance = i18next.createInstance();
|
|
81
|
+
instance.use(new IcuFormat());
|
|
82
|
+
if (opts.loadBundle !== undefined)
|
|
83
|
+
instance.use(lazyBackend(opts.loadBundle));
|
|
84
|
+
await instance.init({
|
|
85
|
+
lng: tag,
|
|
86
|
+
fallbackLng: 'en-US',
|
|
87
|
+
// EAGER only. `studio` joins `options.ns` the first time something calls
|
|
88
|
+
// `loadNamespaces('studio')`, which is also what makes a later
|
|
89
|
+
// `switchLocale` load the new language's copy of it.
|
|
90
|
+
ns: [...base.namespaces],
|
|
91
|
+
defaultNS: base.defaultNamespace,
|
|
92
|
+
resources,
|
|
93
|
+
// Bundled en-US coexists with the lazy backend for other locales.
|
|
94
|
+
partialBundledLanguages: true,
|
|
95
|
+
// React escapes; ICU handles placeables.
|
|
96
|
+
interpolation: { escapeValue: false },
|
|
97
|
+
returnNull: false,
|
|
98
|
+
// TRUE since: an empty string is a deliberate override state
|
|
99
|
+
// ("render nothing"), not a missing value. With `false`, an
|
|
100
|
+
// admin's blank would fall through to the en-US built-in and the state
|
|
101
|
+
// would be unexpressible. Compiled bundles are unaffected — the parity
|
|
102
|
+
// gate asserts no compiled message is empty.
|
|
103
|
+
returnEmptyString: true,
|
|
104
|
+
...(opts.onMissingKey === undefined
|
|
105
|
+
? {}
|
|
106
|
+
: {
|
|
107
|
+
saveMissing: true,
|
|
108
|
+
missingKeyHandler: (lngs, ns, key) => {
|
|
109
|
+
for (const lng of lngs)
|
|
110
|
+
opts.onMissingKey?.(lng, ns, key);
|
|
111
|
+
},
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
// A language switch changes what every key resolves to, so it is a revision
|
|
115
|
+
// change like any other. Without this, only components that
|
|
116
|
+
// consume `I18nProvider`'s context re-render — and the dashboard's ~2.3k
|
|
117
|
+
// call sites use a module-level `t()` that is not a hook, so already-painted
|
|
118
|
+
// strings kept the OUTGOING language until a reload while `dir` flipped
|
|
119
|
+
// immediately. That produced a mirrored English UI, and it is the defect
|
|
120
|
+
// `apps/e2e/tests/rtl-locale.spec.ts` used to pin as a known bug.
|
|
121
|
+
instance.on('languageChanged', () => {
|
|
122
|
+
bumpI18nRevision();
|
|
123
|
+
});
|
|
124
|
+
return instance;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Preloaded live locale switch: the target locale's namespaces load BEFORE
|
|
128
|
+
* `changeLanguage` fires, so the UI never renders a half-translated frame
|
|
129
|
+
* while `dir`/`lang` flip.
|
|
130
|
+
*
|
|
131
|
+
* `loadLanguages` covers whatever is in `options.ns` at the time, which is the
|
|
132
|
+
* eager set plus any deferred namespace already pulled in — so switching
|
|
133
|
+
* locale inside the Studio reloads the Studio's text, and switching locale
|
|
134
|
+
* outside it does not fetch a console the user has not opened.
|
|
135
|
+
*/
|
|
136
|
+
export async function switchLocale(instance, locale) {
|
|
137
|
+
const { tag } = localeEntry(locale);
|
|
138
|
+
if (instance.language === tag)
|
|
139
|
+
return;
|
|
140
|
+
await instance.loadLanguages(tag);
|
|
141
|
+
await instance.changeLanguage(tag);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=create-i18n-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-i18n-core.js","sourceRoot":"","sources":["../src/create-i18n-core.ts"],"names":[],"mappings":"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"}
|
package/dist/create-i18n.d.ts
CHANGED
|
@@ -1,42 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* i18next
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* active locale's are fetched through `loadBundle` before `init` resolves —
|
|
9
|
-
* the dashboard passes a Vite dynamic-import loader, so each locale becomes
|
|
10
|
-
* its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
|
|
11
|
-
* surface that owns it calls `instance.loadNamespaces()` and waits, which is
|
|
12
|
-
* what keeps the admin console's text out of every user's first load. See
|
|
13
|
-
* ./resources/namespaces.ts.
|
|
2
|
+
* The dashboard's i18next instance: the core (`create-i18n-core.ts`) started
|
|
3
|
+
* with the EAGER namespaces. en-US's ship synchronously (they are the fallback
|
|
4
|
+
* text and must never be async) and the active locale's are fetched through
|
|
5
|
+
* `loadBundle` before `init` resolves. A DEFERRED namespace (`studio`) is in
|
|
6
|
+
* neither set: the surface that owns it calls `instance.loadNamespaces()` and
|
|
7
|
+
* waits. See ./resources/namespaces.ts.
|
|
14
8
|
*/
|
|
15
|
-
import { type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** The concrete i18next instance type consumers hold (re-exported so callers never import i18next directly). */
|
|
19
|
-
export type I18nInstance = i18n;
|
|
20
|
-
export type BundleLoader = (tag: string, ns: Namespace) => Promise<ResourceBundle | {
|
|
21
|
-
default: ResourceBundle;
|
|
22
|
-
} | null>;
|
|
23
|
-
export interface CreateI18nOptions {
|
|
24
|
-
/** Canonical locale id (`en_US` … `ar_EG`) the instance starts in. */
|
|
25
|
-
locale: LocaleId;
|
|
26
|
-
/**
|
|
27
|
-
* Extra/override resource bundles, keyed by BCP-47 tag then namespace.
|
|
28
|
-
* Merged over the bundled en-US resources (tests, Electron packaging).
|
|
29
|
-
*/
|
|
30
|
-
resources?: Partial<Record<string, Partial<Record<Namespace, ResourceBundle>>>> | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* Lazy loader for non-bundled locale/namespace pairs. Return `null` (or
|
|
33
|
-
* reject) for a missing bundle — the key then resolves through the en-US
|
|
34
|
-
* fallback chain instead of failing.
|
|
35
|
-
*/
|
|
36
|
-
loadBundle?: BundleLoader | undefined;
|
|
37
|
-
/** Missing-key hook (dev overlay / CI missing-key guard). */
|
|
38
|
-
onMissingKey?: ((lng: string, ns: string, key: string) => void) | undefined;
|
|
39
|
-
}
|
|
9
|
+
import { type CreateI18nOptions, type I18nInstance } from './create-i18n-core.js';
|
|
10
|
+
export { switchLocale } from './create-i18n-core.js';
|
|
11
|
+
export type { BundleLoader, CreateI18nOptions, I18nInstance } from './create-i18n-core.js';
|
|
40
12
|
/**
|
|
41
13
|
* Builds a ready (initialized) i18next instance for `locale`. For `en_US`
|
|
42
14
|
* initialization is effectively synchronous (bundled resources); other
|
|
@@ -44,15 +16,4 @@ export interface CreateI18nOptions {
|
|
|
44
16
|
* en-US, when no loader/bundle exists yet).
|
|
45
17
|
*/
|
|
46
18
|
export declare function createI18n(opts: CreateI18nOptions): Promise<I18nInstance>;
|
|
47
|
-
/**
|
|
48
|
-
* Preloaded live locale switch: the target locale's namespaces load BEFORE
|
|
49
|
-
* `changeLanguage` fires, so the UI never renders a half-translated frame
|
|
50
|
-
* while `dir`/`lang` flip.
|
|
51
|
-
*
|
|
52
|
-
* `loadLanguages` covers whatever is in `options.ns` at the time, which is the
|
|
53
|
-
* eager set plus any deferred namespace already pulled in — so switching
|
|
54
|
-
* locale inside the Studio reloads the Studio's text, and switching locale
|
|
55
|
-
* outside it does not fetch a console the user has not opened.
|
|
56
|
-
*/
|
|
57
|
-
export declare function switchLocale(instance: I18nInstance, locale: LocaleId): Promise<void>;
|
|
58
19
|
//# sourceMappingURL=create-i18n.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-i18n.d.ts","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"create-i18n.d.ts","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK7F,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3F;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQ/E"}
|
package/dist/create-i18n.js
CHANGED
|
@@ -1,56 +1,17 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
/**
|
|
3
|
-
* i18next
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* active locale's are fetched through `loadBundle` before `init` resolves —
|
|
10
|
-
* the dashboard passes a Vite dynamic-import loader, so each locale becomes
|
|
11
|
-
* its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
|
|
12
|
-
* surface that owns it calls `instance.loadNamespaces()` and waits, which is
|
|
13
|
-
* what keeps the admin console's text out of every user's first load. See
|
|
14
|
-
* ./resources/namespaces.ts.
|
|
3
|
+
* The dashboard's i18next instance: the core (`create-i18n-core.ts`) started
|
|
4
|
+
* with the EAGER namespaces. en-US's ship synchronously (they are the fallback
|
|
5
|
+
* text and must never be async) and the active locale's are fetched through
|
|
6
|
+
* `loadBundle` before `init` resolves. A DEFERRED namespace (`studio`) is in
|
|
7
|
+
* neither set: the surface that owns it calls `instance.loadNamespaces()` and
|
|
8
|
+
* waits. See ./resources/namespaces.ts.
|
|
15
9
|
*/
|
|
16
|
-
import
|
|
17
|
-
import { IcuFormat } from './icu-format.js';
|
|
18
|
-
import { localeEntry, tagForLocale } from './locales.js';
|
|
19
|
-
import { bumpI18nRevision } from './revision.js';
|
|
20
|
-
import { loadedWords } from './ui-words.js';
|
|
10
|
+
import { buildI18n } from './create-i18n-core.js';
|
|
21
11
|
import { EN_US_EAGER } from './resources/eager.js';
|
|
22
12
|
import { EAGER_NAMESPACES } from './resources/namespaces.js';
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
type: 'backend',
|
|
26
|
-
init() {
|
|
27
|
-
// Options come through the closure — nothing to do.
|
|
28
|
-
},
|
|
29
|
-
read(language, namespace, callback) {
|
|
30
|
-
void Promise.resolve()
|
|
31
|
-
.then(async () => await load(language, namespace))
|
|
32
|
-
.then((bundle) => {
|
|
33
|
-
if (bundle === null) {
|
|
34
|
-
callback(null, {});
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const data = 'default' in bundle ? bundle.default : bundle;
|
|
38
|
-
// CLONE. i18next stores a backend bundle BY REFERENCE
|
|
39
|
-
// (`skipCopy: true` on the connector's store write), and this
|
|
40
|
-
// object is the live default export of a dynamic-import module —
|
|
41
|
-
// a process-wide singleton. Anything that later merges runtime
|
|
42
|
-
// overrides into the store would rewrite the compiled chunk
|
|
43
|
-
// itself, destroying the original text for every other instance
|
|
44
|
-
// in the process. Clone once here so the store owns its copy.
|
|
45
|
-
callback(null, structuredClone(data));
|
|
46
|
-
}, () => {
|
|
47
|
-
// Missing/failed chunk: resolve empty so the fallback chain applies
|
|
48
|
-
// (degraded network beats a blank screen).
|
|
49
|
-
callback(null, {});
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
}
|
|
13
|
+
import { loadedWords } from './ui-words.js';
|
|
14
|
+
export { switchLocale } from './create-i18n-core.js';
|
|
54
15
|
/**
|
|
55
16
|
* Builds a ready (initialized) i18next instance for `locale`. For `en_US`
|
|
56
17
|
* initialization is effectively synchronous (bundled resources); other
|
|
@@ -58,96 +19,13 @@ function lazyBackend(load) {
|
|
|
58
19
|
* en-US, when no loader/bundle exists yet).
|
|
59
20
|
*/
|
|
60
21
|
export async function createI18n(opts) {
|
|
61
|
-
const
|
|
62
|
-
// DEEP clone, not a spread. A shallow spread leaves
|
|
63
|
-
// `resources['en-US'].common === EN_US_EAGER.common`, and i18next's
|
|
64
|
-
// ResourceStore takes `this.data = data` with no copy of its own — so the
|
|
65
|
-
// store would alias the compiled ES-module singletons. Any later merge of
|
|
66
|
-
// runtime overrides would then permanently rewrite the compiled
|
|
67
|
-
// English in memory: the original text is gone, so even a correct
|
|
68
|
-
// reset-to-built-in has nothing to restore, and on the server every
|
|
69
|
-
// subsequently created instance inherits another caller's overrides.
|
|
70
|
-
const resources = {
|
|
71
|
-
'en-US': structuredClone(EN_US_EAGER),
|
|
72
|
-
};
|
|
22
|
+
const english = { ...EN_US_EAGER };
|
|
73
23
|
// The widget and template words, once any instance in this process has read them (ui-words.ts).
|
|
74
24
|
for (const ns of ['ui', 'common']) {
|
|
75
25
|
const words = loadedWords(ns);
|
|
76
26
|
if (words !== null)
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
for (const [resourceTag, byNs] of Object.entries(opts.resources ?? {})) {
|
|
80
|
-
if (byNs === undefined)
|
|
81
|
-
continue;
|
|
82
|
-
const target = (resources[resourceTag] ??= {});
|
|
83
|
-
for (const [ns, bundle] of Object.entries(byNs)) {
|
|
84
|
-
// Cloned for the same reason as the bundled resources above: a caller
|
|
85
|
-
// (Electron packaging, tests) may hand us a module singleton.
|
|
86
|
-
if (bundle !== undefined)
|
|
87
|
-
target[ns] = structuredClone(bundle);
|
|
88
|
-
}
|
|
27
|
+
english[ns] = { ...english[ns], ...words };
|
|
89
28
|
}
|
|
90
|
-
|
|
91
|
-
instance.use(new IcuFormat());
|
|
92
|
-
if (opts.loadBundle !== undefined)
|
|
93
|
-
instance.use(lazyBackend(opts.loadBundle));
|
|
94
|
-
await instance.init({
|
|
95
|
-
lng: tag,
|
|
96
|
-
fallbackLng: 'en-US',
|
|
97
|
-
// EAGER only. `studio` joins `options.ns` the first time something calls
|
|
98
|
-
// `loadNamespaces('studio')`, which is also what makes a later
|
|
99
|
-
// `switchLocale` load the new language's copy of it.
|
|
100
|
-
ns: [...EAGER_NAMESPACES],
|
|
101
|
-
defaultNS: 'common',
|
|
102
|
-
resources,
|
|
103
|
-
// Bundled en-US coexists with the lazy backend for other locales.
|
|
104
|
-
partialBundledLanguages: true,
|
|
105
|
-
// React escapes; ICU handles placeables.
|
|
106
|
-
interpolation: { escapeValue: false },
|
|
107
|
-
returnNull: false,
|
|
108
|
-
// TRUE since: an empty string is a deliberate override state
|
|
109
|
-
// ("render nothing"), not a missing value. With `false`, an
|
|
110
|
-
// admin's blank would fall through to the en-US built-in and the state
|
|
111
|
-
// would be unexpressible. Compiled bundles are unaffected — the parity
|
|
112
|
-
// gate asserts no compiled message is empty.
|
|
113
|
-
returnEmptyString: true,
|
|
114
|
-
...(opts.onMissingKey === undefined
|
|
115
|
-
? {}
|
|
116
|
-
: {
|
|
117
|
-
saveMissing: true,
|
|
118
|
-
missingKeyHandler: (lngs, ns, key) => {
|
|
119
|
-
for (const lng of lngs)
|
|
120
|
-
opts.onMissingKey?.(lng, ns, key);
|
|
121
|
-
},
|
|
122
|
-
}),
|
|
123
|
-
});
|
|
124
|
-
// A language switch changes what every key resolves to, so it is a revision
|
|
125
|
-
// change like any other. Without this, only components that
|
|
126
|
-
// consume `I18nProvider`'s context re-render — and the dashboard's ~2.3k
|
|
127
|
-
// call sites use a module-level `t()` that is not a hook, so already-painted
|
|
128
|
-
// strings kept the OUTGOING language until a reload while `dir` flipped
|
|
129
|
-
// immediately. That produced a mirrored English UI, and it is the defect
|
|
130
|
-
// `apps/e2e/tests/rtl-locale.spec.ts` used to pin as a known bug.
|
|
131
|
-
instance.on('languageChanged', () => {
|
|
132
|
-
bumpI18nRevision();
|
|
133
|
-
});
|
|
134
|
-
return instance;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Preloaded live locale switch: the target locale's namespaces load BEFORE
|
|
138
|
-
* `changeLanguage` fires, so the UI never renders a half-translated frame
|
|
139
|
-
* while `dir`/`lang` flip.
|
|
140
|
-
*
|
|
141
|
-
* `loadLanguages` covers whatever is in `options.ns` at the time, which is the
|
|
142
|
-
* eager set plus any deferred namespace already pulled in — so switching
|
|
143
|
-
* locale inside the Studio reloads the Studio's text, and switching locale
|
|
144
|
-
* outside it does not fetch a console the user has not opened.
|
|
145
|
-
*/
|
|
146
|
-
export async function switchLocale(instance, locale) {
|
|
147
|
-
const { tag } = localeEntry(locale);
|
|
148
|
-
if (instance.language === tag)
|
|
149
|
-
return;
|
|
150
|
-
await instance.loadLanguages(tag);
|
|
151
|
-
await instance.changeLanguage(tag);
|
|
29
|
+
return buildI18n(opts, { english, namespaces: EAGER_NAMESPACES, defaultNamespace: 'common' });
|
|
152
30
|
}
|
|
153
31
|
//# sourceMappingURL=create-i18n.js.map
|
package/dist/create-i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-i18n.js","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC
|
|
1
|
+
{"version":3,"file":"create-i18n.js","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAA6C,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAuC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,OAAO,GAA+C,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/E,gGAAgG;IAChG,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAI,OAAO,CAAC,EAAE,CAAY,EAAE,GAAG,KAAK,EAAoB,CAAC;IAC/F,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChG,CAAC"}
|
package/dist/page.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* For a page with its own small vocabulary and nothing of the dashboard's
|
|
3
|
+
* (the customer's pay page): an instance started with ONE namespace, whose
|
|
4
|
+
* English the caller bundles itself. Importing this entry never reaches the
|
|
5
|
+
* dashboard's bundles.
|
|
6
|
+
*/
|
|
7
|
+
import { type BundleLoader, type I18nInstance } from './create-i18n-core.js';
|
|
8
|
+
import type { LocaleId } from './locales.js';
|
|
9
|
+
import type { Namespace, ResourceBundle } from './resources/namespaces.js';
|
|
10
|
+
export { switchLocale } from './create-i18n-core.js';
|
|
11
|
+
export { localeFromTag, type LocaleId } from './locales.js';
|
|
12
|
+
export type { BundleLoader, I18nInstance } from './create-i18n-core.js';
|
|
13
|
+
export declare function createPageI18n(opts: {
|
|
14
|
+
locale: LocaleId;
|
|
15
|
+
namespace: Namespace;
|
|
16
|
+
english: ResourceBundle;
|
|
17
|
+
loadBundle: BundleLoader;
|
|
18
|
+
}): Promise<I18nInstance>;
|
|
19
|
+
//# sourceMappingURL=page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAE/J"}
|
package/dist/page.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
/**
|
|
3
|
+
* For a page with its own small vocabulary and nothing of the dashboard's
|
|
4
|
+
* (the customer's pay page): an instance started with ONE namespace, whose
|
|
5
|
+
* English the caller bundles itself. Importing this entry never reaches the
|
|
6
|
+
* dashboard's bundles.
|
|
7
|
+
*/
|
|
8
|
+
import { buildI18n } from './create-i18n-core.js';
|
|
9
|
+
export { switchLocale } from './create-i18n-core.js';
|
|
10
|
+
export { localeFromTag } from './locales.js';
|
|
11
|
+
export async function createPageI18n(opts) {
|
|
12
|
+
return buildI18n({ locale: opts.locale, loadBundle: opts.loadBundle }, { english: { [opts.namespace]: opts.english }, namespaces: [opts.namespace], defaultNamespace: opts.namespace });
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAwC,MAAM,uBAAuB,CAAC;AAIxF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAG5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAmG;IACtI,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1L,CAAC"}
|
|
@@ -162,6 +162,7 @@ declare const _default: {
|
|
|
162
162
|
readonly changelog: "ما الجديد";
|
|
163
163
|
readonly signOut: "تسجيل الخروج";
|
|
164
164
|
readonly toggleSidebar: "إظهار/إخفاء الشريط الجانبي";
|
|
165
|
+
readonly payments: "المدفوعات";
|
|
165
166
|
};
|
|
166
167
|
readonly palette: {
|
|
167
168
|
readonly dialog: "لوحة الأوامر";
|
|
@@ -1123,22 +1124,6 @@ declare const _default: {
|
|
|
1123
1124
|
};
|
|
1124
1125
|
};
|
|
1125
1126
|
readonly desktop: {
|
|
1126
|
-
readonly menu: {
|
|
1127
|
-
readonly file: "ملف";
|
|
1128
|
-
readonly fileNewDatabase: "قاعدة بيانات محلية جديدة…";
|
|
1129
|
-
readonly fileOpenSqlite: "فتح ملف SQLite…";
|
|
1130
|
-
readonly fileBackupNow: "النسخ الاحتياطي الآن…";
|
|
1131
|
-
readonly fileRestore: "الاستعادة من نسخة احتياطية…";
|
|
1132
|
-
readonly edit: "تحرير";
|
|
1133
|
-
readonly view: "عرض";
|
|
1134
|
-
readonly window: "نافذة";
|
|
1135
|
-
readonly help: "مساعدة";
|
|
1136
|
-
readonly helpDocs: "مستندات Adminium";
|
|
1137
|
-
readonly helpShortcuts: "اختصارات لوحة المفاتيح";
|
|
1138
|
-
readonly helpLogs: "عرض السجلات";
|
|
1139
|
-
readonly helpCheckForUpdates: "التحقق من وجود تحديثات…";
|
|
1140
|
-
readonly helpAbout: "حول Adminium";
|
|
1141
|
-
};
|
|
1142
1127
|
readonly settings: {
|
|
1143
1128
|
readonly explainer: "تنطبق هذه الإعدادات على تطبيق Adminium على هذا الكمبيوتر فقط، وتُحفَظ على هذا الجهاز لا في مساحة العمل.";
|
|
1144
1129
|
readonly title: "إعدادات سطح المكتب";
|
|
@@ -1578,6 +1563,9 @@ declare const _default: {
|
|
|
1578
1563
|
readonly schema: "المخطط";
|
|
1579
1564
|
readonly settings: "الإعدادات";
|
|
1580
1565
|
readonly system: "النظام";
|
|
1566
|
+
readonly addOn: "الإضافات";
|
|
1567
|
+
readonly app: "التطبيقات";
|
|
1568
|
+
readonly payments: "المدفوعات";
|
|
1581
1569
|
};
|
|
1582
1570
|
readonly column: {
|
|
1583
1571
|
readonly action: "الإجراء";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/resources/ar-eg/common.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/resources/ar-eg/common.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBA22DW"}
|
|
@@ -162,7 +162,8 @@ export default {
|
|
|
162
162
|
"help": "مركز المساعدة",
|
|
163
163
|
"changelog": "ما الجديد",
|
|
164
164
|
"signOut": "تسجيل الخروج",
|
|
165
|
-
"toggleSidebar": "إظهار/إخفاء الشريط الجانبي"
|
|
165
|
+
"toggleSidebar": "إظهار/إخفاء الشريط الجانبي",
|
|
166
|
+
"payments": "المدفوعات"
|
|
166
167
|
},
|
|
167
168
|
"palette": {
|
|
168
169
|
"dialog": "لوحة الأوامر",
|
|
@@ -1124,22 +1125,6 @@ export default {
|
|
|
1124
1125
|
}
|
|
1125
1126
|
},
|
|
1126
1127
|
"desktop": {
|
|
1127
|
-
"menu": {
|
|
1128
|
-
"file": "ملف",
|
|
1129
|
-
"fileNewDatabase": "قاعدة بيانات محلية جديدة…",
|
|
1130
|
-
"fileOpenSqlite": "فتح ملف SQLite…",
|
|
1131
|
-
"fileBackupNow": "النسخ الاحتياطي الآن…",
|
|
1132
|
-
"fileRestore": "الاستعادة من نسخة احتياطية…",
|
|
1133
|
-
"edit": "تحرير",
|
|
1134
|
-
"view": "عرض",
|
|
1135
|
-
"window": "نافذة",
|
|
1136
|
-
"help": "مساعدة",
|
|
1137
|
-
"helpDocs": "مستندات Adminium",
|
|
1138
|
-
"helpShortcuts": "اختصارات لوحة المفاتيح",
|
|
1139
|
-
"helpLogs": "عرض السجلات",
|
|
1140
|
-
"helpCheckForUpdates": "التحقق من وجود تحديثات…",
|
|
1141
|
-
"helpAbout": "حول Adminium"
|
|
1142
|
-
},
|
|
1143
1128
|
"settings": {
|
|
1144
1129
|
"explainer": "تنطبق هذه الإعدادات على تطبيق Adminium على هذا الكمبيوتر فقط، وتُحفَظ على هذا الجهاز لا في مساحة العمل.",
|
|
1145
1130
|
"title": "إعدادات سطح المكتب"
|
|
@@ -1578,7 +1563,10 @@ export default {
|
|
|
1578
1563
|
"rbac": "الأدوار والصلاحيات",
|
|
1579
1564
|
"schema": "المخطط",
|
|
1580
1565
|
"settings": "الإعدادات",
|
|
1581
|
-
"system": "النظام"
|
|
1566
|
+
"system": "النظام",
|
|
1567
|
+
"addOn": "الإضافات",
|
|
1568
|
+
"app": "التطبيقات",
|
|
1569
|
+
"payments": "المدفوعات"
|
|
1582
1570
|
},
|
|
1583
1571
|
"column": {
|
|
1584
1572
|
"action": "الإجراء",
|