@apollo-design/locale 0.0.0-stage → 0.1.9

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.
Files changed (82) hide show
  1. package/README.md +86 -2
  2. package/dist/confirm-locale.mjs +53 -0
  3. package/dist/context.mjs +3 -0
  4. package/dist/index.d.mts +564 -0
  5. package/dist/index.d.ts +564 -0
  6. package/dist/index.mjs +77 -0
  7. package/dist/locale-provider.mjs +38 -0
  8. package/dist/locales/ar_EG.mjs +281 -0
  9. package/dist/locales/az_AZ.mjs +248 -0
  10. package/dist/locales/bg_BG.mjs +249 -0
  11. package/dist/locales/bn_BD.mjs +245 -0
  12. package/dist/locales/by_BY.mjs +247 -0
  13. package/dist/locales/ca_ES.mjs +249 -0
  14. package/dist/locales/cs_CZ.mjs +249 -0
  15. package/dist/locales/da_DK.mjs +249 -0
  16. package/dist/locales/de_DE.mjs +283 -0
  17. package/dist/locales/el_GR.mjs +249 -0
  18. package/dist/locales/en_GB.mjs +249 -0
  19. package/dist/locales/en_US.mjs +252 -0
  20. package/dist/locales/es_ES.mjs +279 -0
  21. package/dist/locales/es_US.mjs +279 -0
  22. package/dist/locales/et_EE.mjs +233 -0
  23. package/dist/locales/eu_ES.mjs +231 -0
  24. package/dist/locales/fa_IR.mjs +249 -0
  25. package/dist/locales/fi_FI.mjs +249 -0
  26. package/dist/locales/fr_BE.mjs +249 -0
  27. package/dist/locales/fr_CA.mjs +249 -0
  28. package/dist/locales/fr_FR.mjs +249 -0
  29. package/dist/locales/ga_IE.mjs +245 -0
  30. package/dist/locales/gl_ES.mjs +249 -0
  31. package/dist/locales/he_IL.mjs +251 -0
  32. package/dist/locales/hi_IN.mjs +251 -0
  33. package/dist/locales/hr_HR.mjs +251 -0
  34. package/dist/locales/hu_HU.mjs +249 -0
  35. package/dist/locales/hy_AM.mjs +225 -0
  36. package/dist/locales/id_ID.mjs +251 -0
  37. package/dist/locales/is_IS.mjs +229 -0
  38. package/dist/locales/it_IT.mjs +279 -0
  39. package/dist/locales/ja_JP.mjs +255 -0
  40. package/dist/locales/ka_GE.mjs +245 -0
  41. package/dist/locales/kk_KZ.mjs +243 -0
  42. package/dist/locales/km_KH.mjs +245 -0
  43. package/dist/locales/kmr_IQ.mjs +229 -0
  44. package/dist/locales/kn_IN.mjs +248 -0
  45. package/dist/locales/ko_KR.mjs +253 -0
  46. package/dist/locales/ku_IQ.mjs +229 -0
  47. package/dist/locales/lt_LT.mjs +251 -0
  48. package/dist/locales/lv_LV.mjs +233 -0
  49. package/dist/locales/mk_MK.mjs +229 -0
  50. package/dist/locales/ml_IN.mjs +245 -0
  51. package/dist/locales/mn_MN.mjs +231 -0
  52. package/dist/locales/mr_IN.mjs +283 -0
  53. package/dist/locales/ms_MY.mjs +252 -0
  54. package/dist/locales/my_MM.mjs +247 -0
  55. package/dist/locales/nb_NO.mjs +250 -0
  56. package/dist/locales/ne_NP.mjs +247 -0
  57. package/dist/locales/nl_BE.mjs +249 -0
  58. package/dist/locales/nl_NL.mjs +249 -0
  59. package/dist/locales/pl_PL.mjs +281 -0
  60. package/dist/locales/pt_BR.mjs +279 -0
  61. package/dist/locales/pt_PT.mjs +281 -0
  62. package/dist/locales/ro_RO.mjs +251 -0
  63. package/dist/locales/ru_RU.mjs +279 -0
  64. package/dist/locales/si_LK.mjs +247 -0
  65. package/dist/locales/sk_SK.mjs +249 -0
  66. package/dist/locales/sl_SI.mjs +231 -0
  67. package/dist/locales/sq_AL.mjs +282 -0
  68. package/dist/locales/sr_RS.mjs +248 -0
  69. package/dist/locales/sv_SE.mjs +249 -0
  70. package/dist/locales/ta_IN.mjs +246 -0
  71. package/dist/locales/th_TH.mjs +249 -0
  72. package/dist/locales/tk_TK.mjs +245 -0
  73. package/dist/locales/tr_TR.mjs +279 -0
  74. package/dist/locales/uk_UA.mjs +279 -0
  75. package/dist/locales/ur_PK.mjs +245 -0
  76. package/dist/locales/uz_UZ.mjs +245 -0
  77. package/dist/locales/vi_VN.mjs +281 -0
  78. package/dist/locales/zh_CN.mjs +254 -0
  79. package/dist/locales/zh_HK.mjs +253 -0
  80. package/dist/locales/zh_TW.mjs +253 -0
  81. package/dist/use-locale.mjs +25 -0
  82. package/package.json +29 -3
package/README.md CHANGED
@@ -1,3 +1,87 @@
1
- # Temporary Holding Version
1
+ > 规范范围:本文件保留实现说明与历史对照证据;上游同构、旧阶段与历史 Gate 要求不再生效。现行规则见 [项目规范](../../AGENTS.md),公共行为以 Apollo 组件 API 文档与测试契约为准。
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ # @apollo-design/locale
4
+
5
+ > **层**:L2 | **风险**:low
6
+ >
7
+ > 本文档声明本包的**职责边界**。边界之外的事情不做 —— 如果发现需要做,说明架构需要调整,
8
+ > 应当先修改 `ARCHITECTURE.md` 并记录 ADR。
9
+
10
+ ---
11
+
12
+ ## 职责
13
+
14
+ 国际化数据包:73 个语言包 + Locale 类型 + 各组件 locale 分片。**由脚本从 antd 的 locale 源生成**(与 icons 同一套路),不手工维护;Apollo 扩展由 `registry/source/locale-apollo-overrides.json` 合入生成,原始上游快照保持独立。
15
+
16
+ ## 替代的 Ant Design 依赖
17
+
18
+ - `antd/locale/*`
19
+
20
+ ## 公开 API
21
+
22
+ - Locale 类型及已声明的组件分片类型;语言数据保留来源字段,并包含明确的 Apollo 扩展。
23
+ - 73 个语言包:zh_CN / en_US / ja_JP / ...(导出名保留 antd 的下划线原名,便于只改包名迁移)
24
+ - 各组件 locale 分片:DatePicker / Pagination / Table / Form / Upload / ...
25
+ - useLocale(name, defaultLocale?) —— 取某组件的 locale,返回 `[ComputedRef<分片>, ComputedRef<string | undefined>]`(浅合并,context 侧赢);脚本中读取 `.value`,动态语言同步更新。
26
+ - LocaleProvider(已废弃)+ ANT_MARK —— 接收 `locale?: Partial<Locale>`,通过默认插槽提供无宿主的语言上下文;保留原有标记与开发告警。
27
+ - useConfirmLocale(source) —— 在 Provider 的 setup 中绑定当前 Modal 分片。客户端挂载顺序决定静态服务来源优先级,替换、深更新、撤除和重新提供保留该实例的位置;卸载释放自身来源,SSR 不注册。
28
+ - changeConfirmLocale / getConfirmLocale —— 无组件上下文的 Modal 静态服务使用的全局语言来源;注册返回清理函数,后注册来源覆盖同名字段。无参调用清空全部来源并恢复英文,旧清理函数不会复活已清除的数据。
29
+
30
+ 普通组件通过 `useLocale` 沿当前 Vue 父链读取语言;兄弟、嵌套应用和 SSR 请求的上下文各自独立。`getConfirmLocale()` 读取显式全局静态服务的当前快照,不携带应用身份;需要应用上下文时使用组件或对应的上下文服务。
31
+
32
+ `LocaleProvider` 默认 `{}` 是一个明确的英文回退边界,语言码为 `en`,不继承父语言。它不拥有 DOM 宿主,因此忽略 attrs;class、style 和原生监听器应放在插槽内的实际元素。默认插槽支持完整 Vue 内容并在每次渲染中读取,没有业务 Emits、v-model 或 Expose 方法。
33
+
34
+ ## 明确不做(边界)
35
+
36
+ - 不管理应用选择的语言;通过 ConfigProvider / LocaleProvider 接收当前语言并响应更新。
37
+ - ❌ 不含有视觉语义的 UI 组件实现
38
+ - ❌ 不手工编辑生成产物 —— 改源头或改生成脚本
39
+ - ❌ 不做语言包公共子路径入口(antd 的 `antd/locale/zh_CN`);从包根具名导入。
40
+
41
+ ## 必须遵守的契约
42
+
43
+ - Locale 保留已声明的组件分片;Apollo 扩展 `global.clear?: string` 作为输入清除按钮文案。en_US 为 `Clear input`,zh_CN 为 `清空输入`;其他语言缺省时由 useLocale 回退到英文。
44
+ - 生成管线必须可重跑且幂等
45
+ - 语言数据按生成源验证;分片的公开可选性保持真实,未提供字段由 `useLocale` 的默认分片补齐,不凭空补译文本。
46
+
47
+ ## 依赖
48
+
49
+ ### 运行时依赖
50
+
51
+ (无;Vue 由 peer 依赖提供。)
52
+
53
+ ### peer 依赖
54
+
55
+ | `vue` | `catalog:` |
56
+
57
+ ### 构建期 / 测试依赖(devDependencies,**不会**进入用户的依赖树)
58
+
59
+ `@apollo-design/test-utils`,仅用于开发与测试。
60
+
61
+ ## 依赖约束(ARCHITECTURE.md §3.1)
62
+
63
+ - **R1 单向**:只能依赖同层或更低层
64
+ - **R2 无环**:不得与其他包循环依赖
65
+ - **R3 地基纯净**(仅 L0):不得包含任何组件视觉语义
66
+ - **R4 引擎无视觉**(仅 L2):不得定义颜色/圆角/阴影,不得产出 CSS
67
+ - **R6 显式声明**:跨包导入必须在本文件的 `dependencies` 中声明(`.npmrc` 已设 `hoist=false`)
68
+ - **R7 零 Ant Design 运行时依赖**:发布包的 `dependencies` 不得出现任何 `@ant-design/*`。
69
+ Ant Design 生态包只允许出现在三处 —— ① 构建期数据源(`registry/tools/gen-*.mjs`)
70
+ ② 测试 Oracle(`*.oracle.test.ts`)③ `devDependencies`。由 `registry:validate` 的 **E19** 强制。
71
+
72
+ 本包的依赖已通过 `registry/tools/scaffold-packages.mjs` 的分层校验。
73
+
74
+ ## 构建说明
75
+
76
+ 本包由 `registry/tools/gen-locale.mjs` 从 antd 6.6.4 的 **ESM 产物**(`es/locale/*.js`)求值后生成到 `src/locales/`。生成数据变化需核对来源与差异。rc 的 locale 数据固化在 `registry/source/locale-rc/`(带 provenance + sha256)。
77
+
78
+ ## 测试
79
+
80
+ ```bash
81
+ pnpm exec vitest run --project unit packages/locale/src/__tests__
82
+ ```
83
+
84
+ 测试要求见 [`TESTING.md`](../../TESTING.md)。
85
+ 相关严格类型检查由集成人合并执行;最终覆盖率、发布产物与消费者验证按冻结版本统一验收,阈值以 `vitest.config.ts` 为准。
86
+
87
+ `useLocaleReactive` 已于 2026-10-29 移除,原有调用统一迁移至 `useLocale`。底层 localeContextKey 可接收响应式来源。历史消费链交付见[ConfigProvider 迁移](../../docs/migrations/config-provider-contracts.md),当前静态来源顺序及重置修复见[Locale 契约](../../docs/foundation/locale-contract.md)。历史结果不代表当前冻结版本的最终验收。
@@ -0,0 +1,53 @@
1
+ import { onScopeDispose, onBeforeMount, watch, toValue } from 'vue';
2
+ import localeValues from './locales/en_US.mjs';
3
+
4
+ const defaultModalLocale = localeValues.Modal;
5
+ let runtimeLocale = { ...defaultModalLocale };
6
+ const localeList = [];
7
+ function generateLocale() {
8
+ const merged = { ...defaultModalLocale };
9
+ for (const entry of localeList) Object.assign(merged, entry.locale);
10
+ return merged;
11
+ }
12
+ function registerConfirmLocale(locale) {
13
+ const entry = { locale: locale ? { ...locale } : void 0 };
14
+ localeList.push(entry);
15
+ runtimeLocale = generateLocale();
16
+ return {
17
+ update(current) {
18
+ entry.locale = current ? { ...current } : void 0;
19
+ runtimeLocale = generateLocale();
20
+ },
21
+ dispose() {
22
+ const index = localeList.indexOf(entry);
23
+ if (index < 0) return;
24
+ localeList.splice(index, 1);
25
+ runtimeLocale = generateLocale();
26
+ }
27
+ };
28
+ }
29
+ function useConfirmLocale(source) {
30
+ let registration;
31
+ onScopeDispose(() => registration?.dispose());
32
+ onBeforeMount(() => {
33
+ const current = registerConfirmLocale();
34
+ registration = current;
35
+ watch(() => toValue(source), current.update, { immediate: true, deep: true });
36
+ });
37
+ }
38
+ function changeConfirmLocale(newLocale) {
39
+ if (newLocale) {
40
+ return registerConfirmLocale(newLocale).dispose;
41
+ }
42
+ resetConfirmLocale();
43
+ return void 0;
44
+ }
45
+ function getConfirmLocale() {
46
+ return runtimeLocale;
47
+ }
48
+ function resetConfirmLocale() {
49
+ localeList.length = 0;
50
+ runtimeLocale = { ...defaultModalLocale };
51
+ }
52
+
53
+ export { changeConfirmLocale, getConfirmLocale, resetConfirmLocale, useConfirmLocale };
@@ -0,0 +1,3 @@
1
+ const localeContextKey = Symbol("apollo-locale-context");
2
+
3
+ export { localeContextKey };