@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 +2 -0
- package/dist/locales/en.d.ts +43 -0
- package/dist/locales/en.js +43 -0
- package/dist/locales/index.d.ts +86 -0
- package/dist/locales/zh.d.ts +43 -0
- package/dist/locales/zh.js +43 -0
- package/dist/useObjectLabel.d.ts +63 -0
- package/dist/useObjectLabel.js +92 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/locales/en.d.ts
CHANGED
|
@@ -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";
|
package/dist/locales/en.js
CHANGED
|
@@ -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',
|
package/dist/locales/index.d.ts
CHANGED
|
@@ -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: "首页";
|
package/dist/locales/zh.d.ts
CHANGED
|
@@ -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: "首页";
|
package/dist/locales/zh.js
CHANGED
|
@@ -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: '首页',
|
package/dist/useObjectLabel.d.ts
CHANGED
|
@@ -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
|
};
|
package/dist/useObjectLabel.js
CHANGED
|
@@ -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
|
}
|