@object-ui/i18n 3.3.2 → 3.4.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @object-ui/i18n
2
2
 
3
+ ## 3.4.0
4
+
3
5
  ## 3.3.2
4
6
 
5
7
  ## 3.3.1
@@ -168,6 +168,14 @@ declare const en: {
168
168
  readonly moreViews: "{{count}} more";
169
169
  readonly activeFilters: "Active filters";
170
170
  readonly activeSort: "Active sort";
171
+ readonly manageViews: "Manage views";
172
+ readonly manageAllViews: "Manage all views…";
173
+ readonly searchViews: "Search views";
174
+ readonly addNewView: "Add new view";
175
+ readonly done: "Done";
176
+ readonly noViewsFound: "No views match your search.";
177
+ readonly dragToReorder: "Drag to reorder";
178
+ readonly defaultView: "Default view";
171
179
  };
172
180
  readonly detail: {
173
181
  readonly back: "Back";
@@ -571,6 +579,12 @@ declare const en: {
571
579
  readonly reports: "Reports";
572
580
  readonly system: "System";
573
581
  };
582
+ readonly nav: {
583
+ readonly pinItem: "Pin {{name}}";
584
+ readonly unpinItem: "Unpin {{name}}";
585
+ readonly dragToReorder: "Drag to reorder";
586
+ readonly favorites: "Favorites";
587
+ };
574
588
  readonly loadingSteps: {
575
589
  readonly connecting: "Connecting to data source";
576
590
  readonly loadingConfig: "Loading configuration";
@@ -695,6 +709,29 @@ declare const en: {
695
709
  readonly save: "Save";
696
710
  readonly discard: "Discard";
697
711
  readonly createView: "Create View";
712
+ readonly createViewDesc: "Pick a view type, then give it a name. You can change every setting afterwards.";
713
+ readonly cancel: "Cancel";
714
+ readonly create: "Create";
715
+ readonly delete: "Delete";
716
+ readonly deleteViewTitle: "Delete view";
717
+ readonly deleteViewConfirm: "Are you sure you want to delete the view \"{{name}}\"? This cannot be undone.";
718
+ readonly duplicateViewName: "A view with this name already exists.";
719
+ readonly viewTypeGrid: "Grid";
720
+ readonly viewTypeGridDesc: "A spreadsheet-style table of records.";
721
+ readonly viewTypeKanban: "Kanban";
722
+ readonly viewTypeKanbanDesc: "Cards grouped into columns by a single-select field.";
723
+ readonly viewTypeCalendar: "Calendar";
724
+ readonly viewTypeCalendarDesc: "Records placed on a monthly calendar by date.";
725
+ readonly viewTypeGallery: "Gallery";
726
+ readonly viewTypeGalleryDesc: "Large image cards driven by an attachment field.";
727
+ readonly viewTypeTimeline: "Timeline";
728
+ readonly viewTypeTimelineDesc: "Records along a horizontal time axis.";
729
+ readonly viewTypeGantt: "Gantt";
730
+ readonly viewTypeGanttDesc: "Project bars with start / end and dependencies.";
731
+ readonly viewTypeMap: "Map";
732
+ readonly viewTypeMapDesc: "Geographic markers from latitude / longitude fields.";
733
+ readonly viewTypeChart: "Chart";
734
+ readonly viewTypeChartDesc: "Aggregated bar / line / pie visualisations.";
698
735
  readonly newView: "New View";
699
736
  readonly typeOptions: "Type Options";
700
737
  readonly groupByField: "Group by field";
@@ -705,6 +742,7 @@ declare const en: {
705
742
  readonly imageField: "Image field";
706
743
  readonly dateField: "Date field";
707
744
  readonly selectField: "Select field...";
745
+ readonly noEligibleFieldForType: "No eligible field of this type. Add one to the object first.";
708
746
  readonly gridOptionsHint: "Grid view uses the columns configured above.";
709
747
  readonly groupBy: "Group by";
710
748
  readonly prefixField: "Prefix field";
@@ -862,6 +900,11 @@ declare const en: {
862
900
  readonly help: "Help";
863
901
  readonly helpTooltip: "Help & Documentation";
864
902
  readonly activityFeed: "Activity feed";
903
+ readonly area: "Area";
904
+ readonly recent: "Recent";
905
+ readonly favorites: "Favorites";
906
+ readonly starred: "Starred";
907
+ readonly removeFromFavorites: "Remove {{name}} from favorites";
865
908
  };
866
909
  readonly home: {
867
910
  readonly title: "Home";
@@ -168,6 +168,14 @@ const en = {
168
168
  moreViews: '{{count}} more',
169
169
  activeFilters: 'Active filters',
170
170
  activeSort: 'Active sort',
171
+ manageViews: 'Manage views',
172
+ manageAllViews: 'Manage all views…',
173
+ searchViews: 'Search views',
174
+ addNewView: 'Add new view',
175
+ done: 'Done',
176
+ noViewsFound: 'No views match your search.',
177
+ dragToReorder: 'Drag to reorder',
178
+ defaultView: 'Default view',
171
179
  },
172
180
  detail: {
173
181
  back: 'Back',
@@ -581,6 +589,12 @@ const en = {
581
589
  reports: 'Reports',
582
590
  system: 'System',
583
591
  },
592
+ nav: {
593
+ pinItem: 'Pin {{name}}',
594
+ unpinItem: 'Unpin {{name}}',
595
+ dragToReorder: 'Drag to reorder',
596
+ favorites: 'Favorites',
597
+ },
584
598
  loadingSteps: {
585
599
  connecting: 'Connecting to data source',
586
600
  loadingConfig: 'Loading configuration',
@@ -705,6 +719,29 @@ const en = {
705
719
  save: 'Save',
706
720
  discard: 'Discard',
707
721
  createView: 'Create View',
722
+ createViewDesc: 'Pick a view type, then give it a name. You can change every setting afterwards.',
723
+ cancel: 'Cancel',
724
+ create: 'Create',
725
+ delete: 'Delete',
726
+ deleteViewTitle: 'Delete view',
727
+ deleteViewConfirm: 'Are you sure you want to delete the view "{{name}}"? This cannot be undone.',
728
+ duplicateViewName: 'A view with this name already exists.',
729
+ viewTypeGrid: 'Grid',
730
+ viewTypeGridDesc: 'A spreadsheet-style table of records.',
731
+ viewTypeKanban: 'Kanban',
732
+ viewTypeKanbanDesc: 'Cards grouped into columns by a single-select field.',
733
+ viewTypeCalendar: 'Calendar',
734
+ viewTypeCalendarDesc: 'Records placed on a monthly calendar by date.',
735
+ viewTypeGallery: 'Gallery',
736
+ viewTypeGalleryDesc: 'Large image cards driven by an attachment field.',
737
+ viewTypeTimeline: 'Timeline',
738
+ viewTypeTimelineDesc: 'Records along a horizontal time axis.',
739
+ viewTypeGantt: 'Gantt',
740
+ viewTypeGanttDesc: 'Project bars with start / end and dependencies.',
741
+ viewTypeMap: 'Map',
742
+ viewTypeMapDesc: 'Geographic markers from latitude / longitude fields.',
743
+ viewTypeChart: 'Chart',
744
+ viewTypeChartDesc: 'Aggregated bar / line / pie visualisations.',
708
745
  newView: 'New View',
709
746
  typeOptions: 'Type Options',
710
747
  groupByField: 'Group by field',
@@ -715,6 +752,7 @@ const en = {
715
752
  imageField: 'Image field',
716
753
  dateField: 'Date field',
717
754
  selectField: 'Select field...',
755
+ noEligibleFieldForType: 'No eligible field of this type. Add one to the object first.',
718
756
  gridOptionsHint: 'Grid view uses the columns configured above.',
719
757
  groupBy: 'Group by',
720
758
  prefixField: 'Prefix field',
@@ -872,6 +910,11 @@ const en = {
872
910
  help: 'Help',
873
911
  helpTooltip: 'Help & Documentation',
874
912
  activityFeed: 'Activity feed',
913
+ area: 'Area',
914
+ recent: 'Recent',
915
+ favorites: 'Favorites',
916
+ starred: 'Starred',
917
+ removeFromFavorites: 'Remove {{name}} from favorites',
875
918
  },
876
919
  home: {
877
920
  title: 'Home',
@@ -180,6 +180,14 @@ export declare const builtInLocales: {
180
180
  readonly moreViews: "{{count}} more";
181
181
  readonly activeFilters: "Active filters";
182
182
  readonly activeSort: "Active sort";
183
+ readonly manageViews: "Manage views";
184
+ readonly manageAllViews: "Manage all views…";
185
+ readonly searchViews: "Search views";
186
+ readonly addNewView: "Add new view";
187
+ readonly done: "Done";
188
+ readonly noViewsFound: "No views match your search.";
189
+ readonly dragToReorder: "Drag to reorder";
190
+ readonly defaultView: "Default view";
183
191
  };
184
192
  readonly detail: {
185
193
  readonly back: "Back";
@@ -583,6 +591,12 @@ export declare const builtInLocales: {
583
591
  readonly reports: "Reports";
584
592
  readonly system: "System";
585
593
  };
594
+ readonly nav: {
595
+ readonly pinItem: "Pin {{name}}";
596
+ readonly unpinItem: "Unpin {{name}}";
597
+ readonly dragToReorder: "Drag to reorder";
598
+ readonly favorites: "Favorites";
599
+ };
586
600
  readonly loadingSteps: {
587
601
  readonly connecting: "Connecting to data source";
588
602
  readonly loadingConfig: "Loading configuration";
@@ -707,6 +721,29 @@ export declare const builtInLocales: {
707
721
  readonly save: "Save";
708
722
  readonly discard: "Discard";
709
723
  readonly createView: "Create View";
724
+ readonly createViewDesc: "Pick a view type, then give it a name. You can change every setting afterwards.";
725
+ readonly cancel: "Cancel";
726
+ readonly create: "Create";
727
+ readonly delete: "Delete";
728
+ readonly deleteViewTitle: "Delete view";
729
+ readonly deleteViewConfirm: "Are you sure you want to delete the view \"{{name}}\"? This cannot be undone.";
730
+ readonly duplicateViewName: "A view with this name already exists.";
731
+ readonly viewTypeGrid: "Grid";
732
+ readonly viewTypeGridDesc: "A spreadsheet-style table of records.";
733
+ readonly viewTypeKanban: "Kanban";
734
+ readonly viewTypeKanbanDesc: "Cards grouped into columns by a single-select field.";
735
+ readonly viewTypeCalendar: "Calendar";
736
+ readonly viewTypeCalendarDesc: "Records placed on a monthly calendar by date.";
737
+ readonly viewTypeGallery: "Gallery";
738
+ readonly viewTypeGalleryDesc: "Large image cards driven by an attachment field.";
739
+ readonly viewTypeTimeline: "Timeline";
740
+ readonly viewTypeTimelineDesc: "Records along a horizontal time axis.";
741
+ readonly viewTypeGantt: "Gantt";
742
+ readonly viewTypeGanttDesc: "Project bars with start / end and dependencies.";
743
+ readonly viewTypeMap: "Map";
744
+ readonly viewTypeMapDesc: "Geographic markers from latitude / longitude fields.";
745
+ readonly viewTypeChart: "Chart";
746
+ readonly viewTypeChartDesc: "Aggregated bar / line / pie visualisations.";
710
747
  readonly newView: "New View";
711
748
  readonly typeOptions: "Type Options";
712
749
  readonly groupByField: "Group by field";
@@ -717,6 +754,7 @@ export declare const builtInLocales: {
717
754
  readonly imageField: "Image field";
718
755
  readonly dateField: "Date field";
719
756
  readonly selectField: "Select field...";
757
+ readonly noEligibleFieldForType: "No eligible field of this type. Add one to the object first.";
720
758
  readonly gridOptionsHint: "Grid view uses the columns configured above.";
721
759
  readonly groupBy: "Group by";
722
760
  readonly prefixField: "Prefix field";
@@ -874,6 +912,11 @@ export declare const builtInLocales: {
874
912
  readonly help: "Help";
875
913
  readonly helpTooltip: "Help & Documentation";
876
914
  readonly activityFeed: "Activity feed";
915
+ readonly area: "Area";
916
+ readonly recent: "Recent";
917
+ readonly favorites: "Favorites";
918
+ readonly starred: "Starred";
919
+ readonly removeFromFavorites: "Remove {{name}} from favorites";
877
920
  };
878
921
  readonly home: {
879
922
  readonly title: "Home";
@@ -1078,6 +1121,14 @@ export declare const builtInLocales: {
1078
1121
  readonly moreViews: "还有 {{count}} 个";
1079
1122
  readonly activeFilters: "筛选条件生效中";
1080
1123
  readonly activeSort: "排序生效中";
1124
+ readonly manageViews: "管理视图";
1125
+ readonly manageAllViews: "管理所有视图…";
1126
+ readonly searchViews: "搜索视图";
1127
+ readonly addNewView: "新建视图";
1128
+ readonly done: "完成";
1129
+ readonly noViewsFound: "没有匹配的视图。";
1130
+ readonly dragToReorder: "拖动排序";
1131
+ readonly defaultView: "默认视图";
1081
1132
  };
1082
1133
  readonly detail: {
1083
1134
  readonly back: "返回";
@@ -1481,6 +1532,12 @@ export declare const builtInLocales: {
1481
1532
  readonly reports: "报告";
1482
1533
  readonly system: "系统";
1483
1534
  };
1535
+ readonly nav: {
1536
+ readonly pinItem: "固定 {{name}}";
1537
+ readonly unpinItem: "取消固定 {{name}}";
1538
+ readonly dragToReorder: "拖动以重新排序";
1539
+ readonly favorites: "收藏";
1540
+ };
1484
1541
  readonly loadingSteps: {
1485
1542
  readonly connecting: "正在连接数据源";
1486
1543
  readonly loadingConfig: "正在加载配置";
@@ -1605,6 +1662,29 @@ export declare const builtInLocales: {
1605
1662
  readonly save: "保存";
1606
1663
  readonly discard: "丢弃";
1607
1664
  readonly createView: "创建视图";
1665
+ readonly createViewDesc: "先选择视图类型,再为它命名。所有设置之后都可以修改。";
1666
+ readonly cancel: "取消";
1667
+ readonly create: "创建";
1668
+ readonly delete: "删除";
1669
+ readonly deleteViewTitle: "删除视图";
1670
+ readonly deleteViewConfirm: "确定要删除视图 \"{{name}}\" 吗?此操作无法撤销。";
1671
+ readonly duplicateViewName: "已存在同名视图。";
1672
+ readonly viewTypeGrid: "表格";
1673
+ readonly viewTypeGridDesc: "电子表格风格的记录表格。";
1674
+ readonly viewTypeKanban: "看板";
1675
+ readonly viewTypeKanbanDesc: "按单选字段分列的卡片视图。";
1676
+ readonly viewTypeCalendar: "日历";
1677
+ readonly viewTypeCalendarDesc: "按日期把记录放到月历上。";
1678
+ readonly viewTypeGallery: "画廊";
1679
+ readonly viewTypeGalleryDesc: "由附件字段驱动的大图卡片。";
1680
+ readonly viewTypeTimeline: "时间线";
1681
+ readonly viewTypeTimelineDesc: "记录按横向时间轴展开。";
1682
+ readonly viewTypeGantt: "甘特图";
1683
+ readonly viewTypeGanttDesc: "展示项目起止时间和依赖。";
1684
+ readonly viewTypeMap: "地图";
1685
+ readonly viewTypeMapDesc: "根据经纬度字段显示地理标记。";
1686
+ readonly viewTypeChart: "图表";
1687
+ readonly viewTypeChartDesc: "聚合的柱状/折线/饼状图。";
1608
1688
  readonly newView: "新视图";
1609
1689
  readonly typeOptions: "类型选项";
1610
1690
  readonly groupByField: "分组字段";
@@ -1615,6 +1695,7 @@ export declare const builtInLocales: {
1615
1695
  readonly imageField: "图片字段";
1616
1696
  readonly dateField: "日期字段";
1617
1697
  readonly selectField: "选择字段...";
1698
+ readonly noEligibleFieldForType: "没有符合条件的字段。请先在对象上添加该类型字段。";
1618
1699
  readonly gridOptionsHint: "网格视图使用上方配置的列。";
1619
1700
  readonly groupBy: "分组依据";
1620
1701
  readonly prefixField: "前缀字段";
@@ -1772,6 +1853,11 @@ export declare const builtInLocales: {
1772
1853
  readonly help: "帮助";
1773
1854
  readonly helpTooltip: "帮助与文档";
1774
1855
  readonly activityFeed: "活动动态";
1856
+ readonly area: "区域";
1857
+ readonly recent: "最近使用";
1858
+ readonly favorites: "收藏";
1859
+ readonly starred: "已收藏";
1860
+ readonly removeFromFavorites: "从收藏中移除 {{name}}";
1775
1861
  };
1776
1862
  readonly home: {
1777
1863
  readonly title: "首页";
@@ -168,6 +168,14 @@ declare const zh: {
168
168
  readonly moreViews: "还有 {{count}} 个";
169
169
  readonly activeFilters: "筛选条件生效中";
170
170
  readonly activeSort: "排序生效中";
171
+ readonly manageViews: "管理视图";
172
+ readonly manageAllViews: "管理所有视图…";
173
+ readonly searchViews: "搜索视图";
174
+ readonly addNewView: "新建视图";
175
+ readonly done: "完成";
176
+ readonly noViewsFound: "没有匹配的视图。";
177
+ readonly dragToReorder: "拖动排序";
178
+ readonly defaultView: "默认视图";
171
179
  };
172
180
  readonly detail: {
173
181
  readonly back: "返回";
@@ -571,6 +579,12 @@ declare const zh: {
571
579
  readonly reports: "报告";
572
580
  readonly system: "系统";
573
581
  };
582
+ readonly nav: {
583
+ readonly pinItem: "固定 {{name}}";
584
+ readonly unpinItem: "取消固定 {{name}}";
585
+ readonly dragToReorder: "拖动以重新排序";
586
+ readonly favorites: "收藏";
587
+ };
574
588
  readonly loadingSteps: {
575
589
  readonly connecting: "正在连接数据源";
576
590
  readonly loadingConfig: "正在加载配置";
@@ -695,6 +709,29 @@ declare const zh: {
695
709
  readonly save: "保存";
696
710
  readonly discard: "丢弃";
697
711
  readonly createView: "创建视图";
712
+ readonly createViewDesc: "先选择视图类型,再为它命名。所有设置之后都可以修改。";
713
+ readonly cancel: "取消";
714
+ readonly create: "创建";
715
+ readonly delete: "删除";
716
+ readonly deleteViewTitle: "删除视图";
717
+ readonly deleteViewConfirm: "确定要删除视图 \"{{name}}\" 吗?此操作无法撤销。";
718
+ readonly duplicateViewName: "已存在同名视图。";
719
+ readonly viewTypeGrid: "表格";
720
+ readonly viewTypeGridDesc: "电子表格风格的记录表格。";
721
+ readonly viewTypeKanban: "看板";
722
+ readonly viewTypeKanbanDesc: "按单选字段分列的卡片视图。";
723
+ readonly viewTypeCalendar: "日历";
724
+ readonly viewTypeCalendarDesc: "按日期把记录放到月历上。";
725
+ readonly viewTypeGallery: "画廊";
726
+ readonly viewTypeGalleryDesc: "由附件字段驱动的大图卡片。";
727
+ readonly viewTypeTimeline: "时间线";
728
+ readonly viewTypeTimelineDesc: "记录按横向时间轴展开。";
729
+ readonly viewTypeGantt: "甘特图";
730
+ readonly viewTypeGanttDesc: "展示项目起止时间和依赖。";
731
+ readonly viewTypeMap: "地图";
732
+ readonly viewTypeMapDesc: "根据经纬度字段显示地理标记。";
733
+ readonly viewTypeChart: "图表";
734
+ readonly viewTypeChartDesc: "聚合的柱状/折线/饼状图。";
698
735
  readonly newView: "新视图";
699
736
  readonly typeOptions: "类型选项";
700
737
  readonly groupByField: "分组字段";
@@ -705,6 +742,7 @@ declare const zh: {
705
742
  readonly imageField: "图片字段";
706
743
  readonly dateField: "日期字段";
707
744
  readonly selectField: "选择字段...";
745
+ readonly noEligibleFieldForType: "没有符合条件的字段。请先在对象上添加该类型字段。";
708
746
  readonly gridOptionsHint: "网格视图使用上方配置的列。";
709
747
  readonly groupBy: "分组依据";
710
748
  readonly prefixField: "前缀字段";
@@ -862,6 +900,11 @@ declare const zh: {
862
900
  readonly help: "帮助";
863
901
  readonly helpTooltip: "帮助与文档";
864
902
  readonly activityFeed: "活动动态";
903
+ readonly area: "区域";
904
+ readonly recent: "最近使用";
905
+ readonly favorites: "收藏";
906
+ readonly starred: "已收藏";
907
+ readonly removeFromFavorites: "从收藏中移除 {{name}}";
865
908
  };
866
909
  readonly home: {
867
910
  readonly title: "首页";
@@ -168,6 +168,14 @@ const zh = {
168
168
  moreViews: '还有 {{count}} 个',
169
169
  activeFilters: '筛选条件生效中',
170
170
  activeSort: '排序生效中',
171
+ manageViews: '管理视图',
172
+ manageAllViews: '管理所有视图…',
173
+ searchViews: '搜索视图',
174
+ addNewView: '新建视图',
175
+ done: '完成',
176
+ noViewsFound: '没有匹配的视图。',
177
+ dragToReorder: '拖动排序',
178
+ defaultView: '默认视图',
171
179
  },
172
180
  detail: {
173
181
  back: '返回',
@@ -581,6 +589,12 @@ const zh = {
581
589
  reports: '报告',
582
590
  system: '系统',
583
591
  },
592
+ nav: {
593
+ pinItem: '固定 {{name}}',
594
+ unpinItem: '取消固定 {{name}}',
595
+ dragToReorder: '拖动以重新排序',
596
+ favorites: '收藏',
597
+ },
584
598
  loadingSteps: {
585
599
  connecting: '正在连接数据源',
586
600
  loadingConfig: '正在加载配置',
@@ -705,6 +719,29 @@ const zh = {
705
719
  save: '保存',
706
720
  discard: '丢弃',
707
721
  createView: '创建视图',
722
+ createViewDesc: '先选择视图类型,再为它命名。所有设置之后都可以修改。',
723
+ cancel: '取消',
724
+ create: '创建',
725
+ delete: '删除',
726
+ deleteViewTitle: '删除视图',
727
+ deleteViewConfirm: '确定要删除视图 "{{name}}" 吗?此操作无法撤销。',
728
+ duplicateViewName: '已存在同名视图。',
729
+ viewTypeGrid: '表格',
730
+ viewTypeGridDesc: '电子表格风格的记录表格。',
731
+ viewTypeKanban: '看板',
732
+ viewTypeKanbanDesc: '按单选字段分列的卡片视图。',
733
+ viewTypeCalendar: '日历',
734
+ viewTypeCalendarDesc: '按日期把记录放到月历上。',
735
+ viewTypeGallery: '画廊',
736
+ viewTypeGalleryDesc: '由附件字段驱动的大图卡片。',
737
+ viewTypeTimeline: '时间线',
738
+ viewTypeTimelineDesc: '记录按横向时间轴展开。',
739
+ viewTypeGantt: '甘特图',
740
+ viewTypeGanttDesc: '展示项目起止时间和依赖。',
741
+ viewTypeMap: '地图',
742
+ viewTypeMapDesc: '根据经纬度字段显示地理标记。',
743
+ viewTypeChart: '图表',
744
+ viewTypeChartDesc: '聚合的柱状/折线/饼状图。',
708
745
  newView: '新视图',
709
746
  typeOptions: '类型选项',
710
747
  groupByField: '分组字段',
@@ -715,6 +752,7 @@ const zh = {
715
752
  imageField: '图片字段',
716
753
  dateField: '日期字段',
717
754
  selectField: '选择字段...',
755
+ noEligibleFieldForType: '没有符合条件的字段。请先在对象上添加该类型字段。',
718
756
  gridOptionsHint: '网格视图使用上方配置的列。',
719
757
  groupBy: '分组依据',
720
758
  prefixField: '前缀字段',
@@ -872,6 +910,11 @@ const zh = {
872
910
  help: '帮助',
873
911
  helpTooltip: '帮助与文档',
874
912
  activityFeed: '活动动态',
913
+ area: '区域',
914
+ recent: '最近使用',
915
+ favorites: '收藏',
916
+ starred: '已收藏',
917
+ removeFromFavorites: '从收藏中移除 {{name}}',
875
918
  },
876
919
  home: {
877
920
  title: '首页',
@@ -87,6 +87,68 @@ export declare function useObjectLabel(): {
87
87
  name: string;
88
88
  description?: string;
89
89
  }) => string | undefined;
90
+ /**
91
+ * Resolve translated label for a navigation group within an app.
92
+ * Convention: `{ns}.apps.{appName}.navigation.{groupId}.label`.
93
+ *
94
+ * Mirrors `objectLabel`/`dashboardLabel` so app metadata can keep
95
+ * English fallbacks while translation packs supply localised
96
+ * sidebar group labels (e.g. "Sales" → "销售") without explicit
97
+ * I18nLabel `{ key, defaultValue }` annotations.
98
+ */
99
+ navGroupLabel: (appName: string, groupId: string, fallback: string) => string;
100
+ /**
101
+ * Resolve translated dashboard label, falling back to dashboardDef.label.
102
+ * Convention: `{ns}.dashboards.{dashboardName}.label`.
103
+ */
104
+ dashboardLabel: (dashboardDef: {
105
+ name: string;
106
+ label?: string;
107
+ }) => string;
108
+ /**
109
+ * Resolve translated dashboard description, falling back to
110
+ * dashboardDef.description. Returns undefined when neither metadata nor
111
+ * translation provides one.
112
+ * Convention: `{ns}.dashboards.{dashboardName}.description`.
113
+ */
114
+ dashboardDescription: (dashboardDef: {
115
+ name: string;
116
+ description?: string;
117
+ }) => string | undefined;
118
+ /**
119
+ * Resolve translated dashboard header-action label.
120
+ * Convention: `{ns}.dashboards.{dashboardName}.actions.{actionKey}.label`.
121
+ * The actionKey is typically the action's `actionUrl` (e.g.
122
+ * `create_opportunity`) or its English label slugified.
123
+ */
124
+ dashboardActionLabel: (dashboardName: string, actionKey: string, fallback: string) => string;
125
+ /**
126
+ * Resolve translated widget title within a dashboard.
127
+ * Convention: `{ns}.dashboards.{dashboardName}.widgets.{widgetId}.title`.
128
+ */
129
+ widgetTitle: (dashboardName: string, widgetId: string, fallback: string) => string;
130
+ /**
131
+ * Resolve translated widget description within a dashboard.
132
+ * Convention: `{ns}.dashboards.{dashboardName}.widgets.{widgetId}.description`.
133
+ * Returns undefined when neither metadata nor translation provides one.
134
+ */
135
+ widgetDescription: (dashboardName: string, widgetId: string, fallback?: string) => string | undefined;
136
+ /**
137
+ * Resolve translated page label, falling back to pageDef.label.
138
+ * Convention: `{ns}.pages.{pageName}.label`.
139
+ */
140
+ pageLabel: (pageDef: {
141
+ name: string;
142
+ label?: string;
143
+ }) => string;
144
+ /**
145
+ * Resolve translated report label, falling back to reportDef.label.
146
+ * Convention: `{ns}.reports.{reportName}.label`.
147
+ */
148
+ reportLabel: (reportDef: {
149
+ name: string;
150
+ label?: string;
151
+ }) => string;
90
152
  };
91
153
  /**
92
154
  * Safe wrapper for useObjectLabel that falls back to identity functions
@@ -104,4 +166,5 @@ export declare function useSafeFieldLabel(): {
104
166
  label: string;
105
167
  [key: string]: any;
106
168
  }>;
169
+ fieldOptionLabel: (objectName: string, fieldName: string, optionValue: string, fallback: string) => string;
107
170
  };
@@ -59,7 +59,8 @@ export function useObjectLabel() {
59
59
  if (!bundle)
60
60
  return [];
61
61
  return Object.keys(bundle).filter((key) => !BUILTIN_KEYS.has(key) && bundle[key] && typeof bundle[key] === 'object'
62
- && (bundle[key].objects || bundle[key].fields || bundle[key].apps));
62
+ && (bundle[key].objects || bundle[key].fields || bundle[key].apps
63
+ || bundle[key].dashboards || bundle[key].pages || bundle[key].reports));
63
64
  };
64
65
  /**
65
66
  * Strip an ObjectStack namespace prefix (e.g. `crm__lead` → `lead`) so that
@@ -113,6 +114,35 @@ export function useObjectLabel() {
113
114
  ]
114
115
  : [`fieldOptions.${objectName}.${fieldName}.${optionValue}`];
115
116
  };
117
+ /**
118
+ * Build suffix candidates for a dashboard-scoped key. Mirrors the
119
+ * object/field convention: prefer the (possibly namespaced) dashboard name,
120
+ * fall back to the unprefixed base name.
121
+ */
122
+ const dashboardSuffixes = (dashboardName, tail) => {
123
+ const base = stripNamespace(dashboardName);
124
+ return base !== dashboardName
125
+ ? [`dashboards.${dashboardName}.${tail}`, `dashboards.${base}.${tail}`]
126
+ : [`dashboards.${dashboardName}.${tail}`];
127
+ };
128
+ /**
129
+ * Build suffix candidates for a page-scoped key.
130
+ */
131
+ const pageSuffixes = (pageName, tail) => {
132
+ const base = stripNamespace(pageName);
133
+ return base !== pageName
134
+ ? [`pages.${pageName}.${tail}`, `pages.${base}.${tail}`]
135
+ : [`pages.${pageName}.${tail}`];
136
+ };
137
+ /**
138
+ * Build suffix candidates for a report-scoped key.
139
+ */
140
+ const reportSuffixes = (reportName, tail) => {
141
+ const base = stripNamespace(reportName);
142
+ return base !== reportName
143
+ ? [`reports.${reportName}.${tail}`, `reports.${base}.${tail}`]
144
+ : [`reports.${reportName}.${tail}`];
145
+ };
116
146
  return {
117
147
  /**
118
148
  * Resolve translated object label, falling back to objectDef.label.
@@ -160,6 +190,64 @@ export function useObjectLabel() {
160
190
  const resolved = resolve(`apps.${appDef.name}.description`, fallback);
161
191
  return resolved || undefined;
162
192
  },
193
+ /**
194
+ * Resolve translated label for a navigation group within an app.
195
+ * Convention: `{ns}.apps.{appName}.navigation.{groupId}.label`.
196
+ *
197
+ * Mirrors `objectLabel`/`dashboardLabel` so app metadata can keep
198
+ * English fallbacks while translation packs supply localised
199
+ * sidebar group labels (e.g. "Sales" → "销售") without explicit
200
+ * I18nLabel `{ key, defaultValue }` annotations.
201
+ */
202
+ navGroupLabel: (appName, groupId, fallback) => resolve(`apps.${appName}.navigation.${groupId}.label`, fallback),
203
+ /**
204
+ * Resolve translated dashboard label, falling back to dashboardDef.label.
205
+ * Convention: `{ns}.dashboards.{dashboardName}.label`.
206
+ */
207
+ dashboardLabel: (dashboardDef) => resolve(dashboardSuffixes(dashboardDef.name, 'label'), dashboardDef.label ?? dashboardDef.name),
208
+ /**
209
+ * Resolve translated dashboard description, falling back to
210
+ * dashboardDef.description. Returns undefined when neither metadata nor
211
+ * translation provides one.
212
+ * Convention: `{ns}.dashboards.{dashboardName}.description`.
213
+ */
214
+ dashboardDescription: (dashboardDef) => {
215
+ const fallback = dashboardDef.description ?? '';
216
+ const resolved = resolve(dashboardSuffixes(dashboardDef.name, 'description'), fallback);
217
+ return resolved || undefined;
218
+ },
219
+ /**
220
+ * Resolve translated dashboard header-action label.
221
+ * Convention: `{ns}.dashboards.{dashboardName}.actions.{actionKey}.label`.
222
+ * The actionKey is typically the action's `actionUrl` (e.g.
223
+ * `create_opportunity`) or its English label slugified.
224
+ */
225
+ dashboardActionLabel: (dashboardName, actionKey, fallback) => resolve(dashboardSuffixes(dashboardName, `actions.${actionKey}.label`), fallback),
226
+ /**
227
+ * Resolve translated widget title within a dashboard.
228
+ * Convention: `{ns}.dashboards.{dashboardName}.widgets.{widgetId}.title`.
229
+ */
230
+ widgetTitle: (dashboardName, widgetId, fallback) => resolve(dashboardSuffixes(dashboardName, `widgets.${widgetId}.title`), fallback),
231
+ /**
232
+ * Resolve translated widget description within a dashboard.
233
+ * Convention: `{ns}.dashboards.{dashboardName}.widgets.{widgetId}.description`.
234
+ * Returns undefined when neither metadata nor translation provides one.
235
+ */
236
+ widgetDescription: (dashboardName, widgetId, fallback) => {
237
+ const fb = fallback ?? '';
238
+ const resolved = resolve(dashboardSuffixes(dashboardName, `widgets.${widgetId}.description`), fb);
239
+ return resolved || undefined;
240
+ },
241
+ /**
242
+ * Resolve translated page label, falling back to pageDef.label.
243
+ * Convention: `{ns}.pages.{pageName}.label`.
244
+ */
245
+ pageLabel: (pageDef) => resolve(pageSuffixes(pageDef.name, 'label'), pageDef.label ?? pageDef.name),
246
+ /**
247
+ * Resolve translated report label, falling back to reportDef.label.
248
+ * Convention: `{ns}.reports.{reportName}.label`.
249
+ */
250
+ reportLabel: (reportDef) => resolve(reportSuffixes(reportDef.name, 'label'), reportDef.label ?? reportDef.name),
163
251
  };
164
252
  }
165
253
  /**
@@ -169,13 +257,14 @@ export function useObjectLabel() {
169
257
  */
170
258
  export function useSafeFieldLabel() {
171
259
  try {
172
- const { fieldLabel, translateOptions } = useObjectLabel();
173
- return { fieldLabel, translateOptions };
260
+ const { fieldLabel, translateOptions, fieldOptionLabel } = useObjectLabel();
261
+ return { fieldLabel, translateOptions, fieldOptionLabel };
174
262
  }
175
263
  catch {
176
264
  return {
177
265
  fieldLabel: (_objectName, _fieldName, fallback) => fallback,
178
266
  translateOptions: (_objectName, _fieldName, options) => options,
267
+ fieldOptionLabel: (_objectName, _fieldName, _optionValue, fallback) => fallback,
179
268
  };
180
269
  }
181
270
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/i18n",
3
- "version": "3.3.2",
3
+ "version": "3.4.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",