@object-ui/i18n 4.2.1 → 4.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,142 @@
1
1
  # @object-ui/i18n
2
2
 
3
+ ## 4.4.0
4
+
5
+ ## 4.3.1
6
+
7
+ ### Patch Changes
8
+
9
+ - 5f4ac6e: fix(i18n): add notifications + organizations namespaces to all 8 non-en/zh locales (ar/de/es/fr/ja/ko/pt/ru) to restore top-level key parity. Resolves the long-standing i18n.test.ts locale-parity failure.
10
+
11
+ ## 4.3.0
12
+
13
+ ### Patch Changes
14
+
15
+ - f196cf4: feat(plugin-report): popup picker for groupings + section-aware test ids
16
+
17
+ The matrix/summary "Group by" (rows) and "Columns axis" (cols) sections now
18
+ share the same searchable popup picker as the columns section, with a
19
+ commit-on-select single-pick mode wired through `FieldPickerDialog`.
20
+ - Per-row field buttons display the human-readable field label and open a
21
+ dialog scoped to swap that single field (already-used fields filtered out)
22
+ - "Add grouping" trigger uses the same dialog
23
+ - `GroupingsBuilder` accepts a `testIdPrefix` prop; ReportConfigPanel passes
24
+ `rows-grouping` and `cols-grouping` so both instances no longer share the
25
+ ambiguous `grouping-field-0` testid
26
+ - Bigger row spacing (h-7 / text-xs) — the old `text-[10px]` was unreadable
27
+
28
+ `FieldPickerDialog` gains:
29
+ - `commitOnSelect`: hides the Confirm/Cancel footer; clicking a row commits
30
+ - closes immediately (intended for `singleSelect` flows)
31
+ - `trigger`: custom trigger element override (used by the per-row field button)
32
+
33
+ - ee1cc96: feat(plugin-report): joined-report block editor
34
+
35
+ `type: 'joined'` reports were a black hole in the editor — the type
36
+ selector exposed them but no UI knew how to edit the `blocks` array,
37
+ so users could neither create nor modify joined reports without
38
+ hand-editing JSON.
39
+
40
+ This change adds a `Blocks` section to the report editor, visible only
41
+ when `type === 'joined'`. Each block renders as a collapsible card with
42
+ its own name (required + unique-validated), label, description, block
43
+ type, object override, and reuses the existing `ColumnsEditor`,
44
+ `GroupingsBuilder`, `SpecFilterAdapter`, and `ChartConfig` builders so
45
+ every block behaves like a mini standalone report — matching the
46
+ runtime contract of `JoinedReportRenderer`.
47
+
48
+ Block-level validation is surfaced in the main `ValidationBanner`:
49
+ empty blocks array, missing or duplicate block names, and blocks
50
+ without columns all become editor-time errors so saves stay safe.
51
+
52
+ The non-joined sections (Columns / Rows / Columns axis / Filters /
53
+ Chart) are hidden when `type === 'joined'` since they live per-block
54
+ in the spec.
55
+
56
+ New exports from `@object-ui/plugin-report`:
57
+ - `JoinedBlocksEditor` — standalone component for embedding the
58
+ block editor anywhere.
59
+ - `validateJoinedBlocks` — pure helper returning translated
60
+ problem strings, suitable for custom validation banners.
61
+ - `ColumnsEditor`, `GroupingsBuilder`, `ChartConfig`,
62
+ `SpecFilterAdapter`, `normalizeColumns` are now exported so
63
+ downstream consumers can build their own report-editor surfaces.
64
+
65
+ i18n: added `report.editor.blocks*` / `report.editor.addBlock` /
66
+ `report.editor.removeBlock` / `report.editor.blockName*` /
67
+ `report.editor.blockLabel*` / `report.editor.blockDescription*` /
68
+ `report.editor.validationJoinedNeedsBlocks` /
69
+ `report.editor.validationBlockNameRequired` /
70
+ `report.editor.validationBlockNameDuplicate` /
71
+ `report.editor.validationBlockNeedsColumns` to en + zh.
72
+
73
+ - 0b032be: feat(plugin-report): replace inline column picker with a popup field picker
74
+
75
+ The columns section now opens a Dialog-based multi-select picker (`FieldPickerDialog`)
76
+ instead of rendering the unselected field list inline. The popup supports search,
77
+ batched multi-selection (commit several fields in one click), per-field type badges,
78
+ cancel-discards-pending semantics, and is fully i18n'd. Also fixes a latent
79
+ `ReferenceError: normalizeColumns is not defined` that crashed the editor whenever
80
+ the chart section was expanded.
81
+
82
+ - 115d36a: i18n: native translations for the report editor (`report.editor.*`) in 8 locales — ar, de, es, fr, ja, ko, pt, ru. Previously these locales had the English placeholder strings copy-pasted from `en.ts` and the newer `blocks*`, `addCondition`, `opContains`, `formatCurrency` etc. keys were missing entirely (so the report editor surfaced raw key names in those languages). All locales now carry the full key set with locale-appropriate copy.
83
+ - 4e7bc1b: **Report editor panel overhaul**
84
+
85
+ The report configuration panel is now safe to open on any spec-shape `Report` and only exposes fields that are actually persisted by `@objectstack/spec`.
86
+
87
+ `@object-ui/plugin-report`:
88
+ - Add a bidirectional `SpecFilterAdapter` so `ReportConfigPanel` can edit
89
+ spec `FilterCondition` filters (`{field: value}`, `{field: {$op: value}}`,
90
+ top-level `$and`/`$or`). Complex / nested filters fall back to a
91
+ read-only banner and are preserved verbatim on save.
92
+ - Drop sections that never round-tripped through the spec
93
+ (`conditionalFormatting`, `sections`, `export`, `schedule`, `appearance`)
94
+ and their helper components.
95
+ - Add type-driven section visibility: `tabular` shows Columns/Filters,
96
+ `summary` adds Rows + Chart, `matrix` adds Rows + Columns axis + Chart.
97
+ - New `GroupingsBuilder` covers `groupingsDown`/`groupingsAcross` with
98
+ `sortOrder` and date-aware `dateGranularity` controls.
99
+ - New `ColumnsEditor` lets users reorder picked columns, override labels,
100
+ set aggregates and choose a display format.
101
+ - Chart subset now mirrors the spec: chart `title`, `showLegend`,
102
+ `showDataLabels`, plus `funnel` (scatter removed).
103
+ - Validation banner highlights missing `objectName` and missing
104
+ rows/columns for `matrix`/`summary` reports.
105
+ - All editor labels and hints are i18n-driven (`report.editor.*`).
106
+ - 18 new unit tests cover the filter adapter round-trip.
107
+
108
+ `@object-ui/components`:
109
+ - `FilterBuilder` now guards against malformed external `value` props.
110
+ Previously a spec-shape filter (`{is_active: true}`) would crash the
111
+ component on first render; the builder now falls back to an empty
112
+ AND group whenever `value` is not a valid `FilterGroup`.
113
+
114
+ `@object-ui/i18n`:
115
+ - Add `report.editor.*` strings to `en` and `zh`.
116
+
117
+ - 8442c05: Improve report editor panel usability based on real-user browser testing:
118
+ - **Wider config panel** — the report editor now defaults to a `--config-panel-width`
119
+ of 440px (up from 280px), driven by a new optional `style` prop on
120
+ `ConfigPanelRenderer`. Long field labels, report titles, type labels, and filter
121
+ rows no longer truncate to "Account Na" / "kup" / "ct" / 1-character widths.
122
+ - **Disambiguated "Columns" sections** — for `summary` and `matrix` reports the
123
+ measure list is now labelled **"Values / 度量"** (pivot-style vocabulary) instead
124
+ of "Columns", which previously clashed with the matrix's pivot column axis
125
+ (also called "Columns / 列"). The two sections used to be indistinguishable.
126
+ New i18n key `report.editor.values` / `valuesHint` is shipped for all 10
127
+ locales (en, zh, ar, de, es, fr, ja, ko, pt, ru).
128
+ - **Reordered sections for matrix/summary** — the editor now surfaces _Rows_
129
+ and _Columns_ (the pivot axes) **before** _Values_, mirroring how a business
130
+ user thinks about a pivot table.
131
+ - **Per-row aggregate/format headers** — each column row in `ColumnsEditor` now
132
+ shows small "Aggregate" / "Format" labels above the respective selects, and
133
+ the row uses a 2-line layout so the label input has its own line. The cramped
134
+ 3-dropdowns-side-by-side layout at 10px font is gone.
135
+ - **Searchable field picker** — the "Add columns" list now has a search box,
136
+ a `filtered / total` counter, an empty-state message, and a scrollable bordered
137
+ container. New i18n keys: `report.editor.searchFields`,
138
+ `report.editor.noMatchingFields`.
139
+
3
140
  ## 4.2.1
4
141
 
5
142
  ## 4.2.0
@@ -234,6 +234,7 @@ declare const ar: {
234
234
  readonly mentionSomeone: "إشارة إلى شخص";
235
235
  readonly preview: "معاينة";
236
236
  readonly submitComment: "إرسال (Ctrl+Enter)";
237
+ readonly sendComment: "إرسال";
237
238
  readonly writeComment: "اكتب تعليقاً…";
238
239
  readonly subscribedTooltip: "مشترك — انقر لإلغاء الاشتراك";
239
240
  readonly unsubscribedTooltip: "الاشتراك في الإشعارات";
@@ -974,67 +975,123 @@ declare const ar: {
974
975
  readonly first: "First";
975
976
  };
976
977
  readonly editor: {
977
- readonly breadcrumb: "Configuration";
978
- readonly basic: "Basic";
979
- readonly title: "Title";
980
- readonly titlePlaceholder: "e.g. Pipeline by Quarter";
981
- readonly description: "Description";
982
- readonly descriptionPlaceholder: "What does this report show?";
983
- readonly type: "Report type";
984
- readonly typeTabular: "Tabular — flat list";
985
- readonly typeSummary: "Summary — grouped with totals";
986
- readonly typeMatrix: "Matrix — pivot rows × columns";
987
- readonly typeJoined: "Joined — multiple blocks";
988
- readonly typeHelp: "Pick the layout that matches what you want to see.";
989
- readonly data: "Data";
990
- readonly objectName: "Data source";
991
- readonly objectNamePlaceholder: "e.g. opportunity";
992
- readonly objectNameHelp: "Which object should this report query?";
993
- readonly limit: "Row limit";
994
- readonly limitPlaceholder: "e.g. 100";
995
- readonly columns: "Columns";
996
- readonly columnsHint: "Pick which fields appear as columns. Add an aggregate (Sum, Count…) on Summary or Matrix reports.";
997
- readonly filters: "Filters";
998
- readonly filtersHint: "Limit the rows that go into this report.";
999
- readonly filtersComplex: "This report uses an advanced filter that cannot be edited here. Save will keep it unchanged.";
1000
- readonly groupBy: "Group by";
1001
- readonly groupByHint: "Group the data and compute subtotals.";
1002
- readonly rows: "Rows";
1003
- readonly rowsHint: "Group rows by these fields.";
1004
- readonly columnsAxis: "Columns";
1005
- readonly columnsAxisHint: "Pivot these fields across the top.";
1006
- readonly grouping: "Grouping";
1007
- readonly addGrouping: "Add grouping";
1008
- readonly dateGranularity: "Date bucket";
1009
- readonly dateGranularityNone: "(use raw value)";
1010
- readonly day: "Day";
1011
- readonly week: "Week";
1012
- readonly month: "Month";
1013
- readonly quarter: "Quarter";
1014
- readonly year: "Year";
1015
- readonly sortAsc: "Ascending";
1016
- readonly sortDesc: "Descending";
1017
- readonly chart: "Chart";
1018
- readonly chartHint: "Optional visualization rendered alongside the table.";
1019
- readonly chartType: "Chart type";
1020
- readonly chartTitle: "Chart title";
1021
- readonly chartTitlePlaceholder: "Defaults to the report title";
1022
- readonly chartXAxis: "X-axis (category)";
1023
- readonly chartYAxis: "Y-axis (value)";
1024
- readonly chartShowLegend: "Show legend";
1025
- readonly chartShowDataLabels: "Show data labels";
1026
- readonly chartNone: "(no chart)";
1027
- readonly chartBar: "Bar";
1028
- readonly chartLine: "Line";
1029
- readonly chartArea: "Area";
1030
- readonly chartPie: "Pie";
1031
- readonly chartDonut: "Donut";
1032
- readonly chartFunnel: "Funnel";
1033
- readonly validationNeedsObject: "Pick a data source before adding columns.";
1034
- readonly validationMatrixNeedsRowsCols: "Matrix reports need at least one Row and one Column.";
1035
- readonly validationSummaryNeedsRows: "Summary reports need at least one grouping field.";
1036
- readonly noneOption: "(none)";
978
+ readonly breadcrumb: "الإعدادات";
979
+ readonly basic: "أساسي";
980
+ readonly title: "العنوان";
981
+ readonly titlePlaceholder: "مثال: المسار حسب الربع";
982
+ readonly description: "الوصف";
983
+ readonly descriptionPlaceholder: "ماذا يعرض هذا التقرير؟";
984
+ readonly type: "نوع التقرير";
985
+ readonly typeTabular: "جدولي — قائمة مسطّحة";
986
+ readonly typeSummary: "ملخص — مجمّع مع المجاميع";
987
+ readonly typeMatrix: "مصفوفة — محور صفوف × أعمدة";
988
+ readonly typeJoined: "مدمج — كتل متعددة";
989
+ readonly typeHelp: "اختر التخطيط الذي يطابق ما تريد رؤيته.";
990
+ readonly data: "البيانات";
991
+ readonly objectName: "مصدر البيانات";
992
+ readonly objectNamePlaceholder: "مثال: opportunity";
993
+ readonly objectNameHelp: "أي كائن يجب أن يستعلم عنه هذا التقرير؟";
994
+ readonly limit: "حد عدد الصفوف";
995
+ readonly limitPlaceholder: "مثال: 100";
996
+ readonly columns: "الأعمدة";
997
+ readonly columnsHint: "اختر الحقول التي ستظهر كأعمدة. أضف تجميعًا (مجموع، عدد…) في تقارير الملخص أو المصفوفة.";
998
+ readonly filters: "عوامل التصفية";
999
+ readonly filtersHint: "قيّد الصفوف التي تدخل في هذا التقرير.";
1000
+ readonly filtersComplex: "يستخدم هذا التقرير عامل تصفية متقدّمًا لا يمكن تحريره هنا. سيُحتفظ به كما هو عند الحفظ.";
1001
+ readonly groupBy: "التجميع حسب";
1002
+ readonly groupByHint: "جمّع البيانات واحسب المجاميع الفرعية.";
1003
+ readonly rows: "الصفوف";
1004
+ readonly rowsHint: "جمّع الصفوف حسب هذه الحقول.";
1005
+ readonly columnsAxis: "الأعمدة";
1006
+ readonly columnsAxisHint: "اعرض هذه الحقول كمحور في الأعلى.";
1007
+ readonly values: "القيم";
1008
+ readonly valuesHint: "الأرقام التي تظهر في كل خلية. اختر حقلاً واحدًا أو أكثر وأضف تجميعًا (مجموع، عدد…).";
1009
+ readonly grouping: "تجميع";
1010
+ readonly addGrouping: "إضافة تجميع";
1011
+ readonly dateGranularity: "دقة التاريخ";
1012
+ readonly dateGranularityNone: "(استخدام القيمة الأصلية)";
1013
+ readonly day: "يوم";
1014
+ readonly week: "أسبوع";
1015
+ readonly month: "شهر";
1016
+ readonly quarter: "ربع";
1017
+ readonly year: "سنة";
1018
+ readonly sortAsc: "تصاعدي";
1019
+ readonly sortDesc: "تنازلي";
1020
+ readonly chart: "الرسم البياني";
1021
+ readonly chartHint: "عرض مرئي اختياري بجانب الجدول.";
1022
+ readonly chartType: "نوع الرسم";
1023
+ readonly chartTitle: "عنوان الرسم";
1024
+ readonly chartTitlePlaceholder: "افتراضيًا يستخدم عنوان التقرير";
1025
+ readonly chartXAxis: "المحور السيني (الفئة)";
1026
+ readonly chartYAxis: "المحور الصادي (القيمة)";
1027
+ readonly chartShowLegend: "إظهار وسيلة الإيضاح";
1028
+ readonly chartShowDataLabels: "إظهار تسميات البيانات";
1029
+ readonly chartNone: "(بدون رسم)";
1030
+ readonly chartBar: "أعمدة";
1031
+ readonly chartLine: "خطي";
1032
+ readonly chartArea: "منطقة";
1033
+ readonly chartPie: "دائري";
1034
+ readonly chartDonut: "حلقي";
1035
+ readonly chartFunnel: "قمعي";
1036
+ readonly validationNeedsObject: "اختر مصدر بيانات قبل إضافة الأعمدة.";
1037
+ readonly validationMatrixNeedsRowsCols: "تتطلب تقارير المصفوفة صفًا وعمودًا واحدًا على الأقل.";
1038
+ readonly validationSummaryNeedsRows: "تتطلب تقارير الملخص حقل تجميع واحدًا على الأقل.";
1039
+ readonly blocks: "الكتل";
1040
+ readonly blocksHint: "كل كتلة هي جدولها أو رسمها البياني الخاص. عوامل تصفية الكتلة تُدمج مع عامل تصفية التقرير بمنطق AND.";
1041
+ readonly addBlock: "إضافة كتلة";
1042
+ readonly removeBlock: "إزالة الكتلة";
1043
+ readonly blockName: "اسم الكتلة";
1044
+ readonly blockNamePlaceholder: "اسم_فريد_للكتلة";
1045
+ readonly blockLabel: "التسمية المعروضة";
1046
+ readonly blockLabelPlaceholder: "تُعرض فوق الكتلة";
1047
+ readonly blockDescription: "الوصف";
1048
+ readonly blockDescriptionPlaceholder: "سياق اختياري لهذه الكتلة";
1049
+ readonly validationJoinedNeedsBlocks: "تتطلب التقارير المدمجة كتلة واحدة على الأقل.";
1050
+ readonly validationBlockNameRequired: "يجب أن يكون لكل كتلة اسم غير فارغ.";
1051
+ readonly validationBlockNameDuplicate: "يجب أن تكون أسماء الكتل فريدة داخل التقرير.";
1052
+ readonly validationBlockNeedsColumns: "تحتاج كل كتلة إلى عمود واحد على الأقل.";
1053
+ readonly noneOption: "(بلا)";
1054
+ readonly addCondition: "إضافة شرط";
1055
+ readonly combineLogic: "الدمج مع";
1056
+ readonly opContains: "يحتوي على";
1057
+ readonly opIsEmpty: "فارغ";
1058
+ readonly opIsNotEmpty: "ليس فارغًا";
1059
+ readonly formatAuto: "تلقائي";
1060
+ readonly formatCurrency: "عملة";
1061
+ readonly formatPercent: "نسبة مئوية";
1062
+ readonly formatInteger: "عدد صحيح";
1063
+ readonly formatDate: "تاريخ";
1064
+ readonly formatDatetime: "تاريخ ووقت";
1065
+ readonly columnLabelPlaceholder: "تجاوز التسمية";
1066
+ readonly aggregateColumn: "تجميع";
1067
+ readonly formatColumn: "تنسيق";
1068
+ readonly addColumns: "إضافة أعمدة";
1069
+ readonly searchFields: "البحث في الحقول…";
1070
+ readonly noMatchingFields: "لا توجد حقول تطابق بحثك.";
1071
+ readonly noFieldsAvailable: "لا توجد حقول متاحة.";
1037
1072
  };
1038
1073
  };
1074
+ readonly organizations: {
1075
+ readonly mine: "مؤسساتي";
1076
+ readonly title: "المؤسسات";
1077
+ readonly heading: "مؤسساتك";
1078
+ readonly subtitle: "اختر مؤسسة للمتابعة، أو أنشئ مؤسسة جديدة.";
1079
+ readonly searchPlaceholder: "ابحث عن مؤسسة";
1080
+ readonly new: "مؤسسة جديدة";
1081
+ readonly current: "المؤسسة الحالية";
1082
+ readonly manage: "إدارة";
1083
+ readonly emptyTitle: "لا توجد مؤسسات بعد";
1084
+ readonly emptyDescription: "أنشئ مؤسستك الأولى للبدء.";
1085
+ readonly noMatches: "لا توجد مؤسسات تطابق بحثك.";
1086
+ };
1087
+ readonly notifications: {
1088
+ readonly empty: "لا توجد إشعارات";
1089
+ readonly markAllRead: "تعليم الكل كمقروء";
1090
+ readonly viewAll: "عرض جميع الإشعارات";
1091
+ readonly approvalsPending: "{{count}} موافقات معلقة";
1092
+ readonly viewApprovals: "عرض الموافقات";
1093
+ readonly noPendingApprovals: "لا توجد موافقات معلقة";
1094
+ readonly openApprovalsInbox: "فتح صندوق الموافقات";
1095
+ };
1039
1096
  };
1040
1097
  export default ar;
@@ -234,6 +234,7 @@ const ar = {
234
234
  mentionSomeone: 'إشارة إلى شخص',
235
235
  preview: 'معاينة',
236
236
  submitComment: 'إرسال (Ctrl+Enter)',
237
+ sendComment: 'إرسال',
237
238
  writeComment: 'اكتب تعليقاً…',
238
239
  subscribedTooltip: 'مشترك — انقر لإلغاء الاشتراك',
239
240
  unsubscribedTooltip: 'الاشتراك في الإشعارات',
@@ -969,67 +970,123 @@ const ar = {
969
970
  first: 'First',
970
971
  },
971
972
  editor: {
972
- breadcrumb: 'Configuration',
973
- basic: 'Basic',
974
- title: 'Title',
975
- titlePlaceholder: 'e.g. Pipeline by Quarter',
976
- description: 'Description',
977
- descriptionPlaceholder: 'What does this report show?',
978
- type: 'Report type',
979
- typeTabular: 'Tabular — flat list',
980
- typeSummary: 'Summary — grouped with totals',
981
- typeMatrix: 'Matrix — pivot rows × columns',
982
- typeJoined: 'Joined — multiple blocks',
983
- typeHelp: 'Pick the layout that matches what you want to see.',
984
- data: 'Data',
985
- objectName: 'Data source',
986
- objectNamePlaceholder: 'e.g. opportunity',
987
- objectNameHelp: 'Which object should this report query?',
988
- limit: 'Row limit',
989
- limitPlaceholder: 'e.g. 100',
990
- columns: 'Columns',
991
- columnsHint: 'Pick which fields appear as columns. Add an aggregate (Sum, Count…) on Summary or Matrix reports.',
992
- filters: 'Filters',
993
- filtersHint: 'Limit the rows that go into this report.',
994
- filtersComplex: 'This report uses an advanced filter that cannot be edited here. Save will keep it unchanged.',
995
- groupBy: 'Group by',
996
- groupByHint: 'Group the data and compute subtotals.',
997
- rows: 'Rows',
998
- rowsHint: 'Group rows by these fields.',
999
- columnsAxis: 'Columns',
1000
- columnsAxisHint: 'Pivot these fields across the top.',
1001
- grouping: 'Grouping',
1002
- addGrouping: 'Add grouping',
1003
- dateGranularity: 'Date bucket',
1004
- dateGranularityNone: '(use raw value)',
1005
- day: 'Day',
1006
- week: 'Week',
1007
- month: 'Month',
1008
- quarter: 'Quarter',
1009
- year: 'Year',
1010
- sortAsc: 'Ascending',
1011
- sortDesc: 'Descending',
1012
- chart: 'Chart',
1013
- chartHint: 'Optional visualization rendered alongside the table.',
1014
- chartType: 'Chart type',
1015
- chartTitle: 'Chart title',
1016
- chartTitlePlaceholder: 'Defaults to the report title',
1017
- chartXAxis: 'X-axis (category)',
1018
- chartYAxis: 'Y-axis (value)',
1019
- chartShowLegend: 'Show legend',
1020
- chartShowDataLabels: 'Show data labels',
1021
- chartNone: '(no chart)',
1022
- chartBar: 'Bar',
1023
- chartLine: 'Line',
1024
- chartArea: 'Area',
1025
- chartPie: 'Pie',
1026
- chartDonut: 'Donut',
1027
- chartFunnel: 'Funnel',
1028
- validationNeedsObject: 'Pick a data source before adding columns.',
1029
- validationMatrixNeedsRowsCols: 'Matrix reports need at least one Row and one Column.',
1030
- validationSummaryNeedsRows: 'Summary reports need at least one grouping field.',
1031
- noneOption: '(none)',
973
+ breadcrumb: 'الإعدادات',
974
+ basic: 'أساسي',
975
+ title: 'العنوان',
976
+ titlePlaceholder: 'مثال: المسار حسب الربع',
977
+ description: 'الوصف',
978
+ descriptionPlaceholder: 'ماذا يعرض هذا التقرير؟',
979
+ type: 'نوع التقرير',
980
+ typeTabular: 'جدولي — قائمة مسطّحة',
981
+ typeSummary: 'ملخص — مجمّع مع المجاميع',
982
+ typeMatrix: 'مصفوفة — محور صفوف × أعمدة',
983
+ typeJoined: 'مدمج — كتل متعددة',
984
+ typeHelp: 'اختر التخطيط الذي يطابق ما تريد رؤيته.',
985
+ data: 'البيانات',
986
+ objectName: 'مصدر البيانات',
987
+ objectNamePlaceholder: 'مثال: opportunity',
988
+ objectNameHelp: 'أي كائن يجب أن يستعلم عنه هذا التقرير؟',
989
+ limit: 'حد عدد الصفوف',
990
+ limitPlaceholder: 'مثال: 100',
991
+ columns: 'الأعمدة',
992
+ columnsHint: 'اختر الحقول التي ستظهر كأعمدة. أضف تجميعًا (مجموع، عدد…) في تقارير الملخص أو المصفوفة.',
993
+ filters: 'عوامل التصفية',
994
+ filtersHint: 'قيّد الصفوف التي تدخل في هذا التقرير.',
995
+ filtersComplex: 'يستخدم هذا التقرير عامل تصفية متقدّمًا لا يمكن تحريره هنا. سيُحتفظ به كما هو عند الحفظ.',
996
+ groupBy: 'التجميع حسب',
997
+ groupByHint: 'جمّع البيانات واحسب المجاميع الفرعية.',
998
+ rows: 'الصفوف',
999
+ rowsHint: 'جمّع الصفوف حسب هذه الحقول.',
1000
+ columnsAxis: 'الأعمدة',
1001
+ columnsAxisHint: 'اعرض هذه الحقول كمحور في الأعلى.',
1002
+ values: 'القيم',
1003
+ valuesHint: 'الأرقام التي تظهر في كل خلية. اختر حقلاً واحدًا أو أكثر وأضف تجميعًا (مجموع، عدد…).',
1004
+ grouping: 'تجميع',
1005
+ addGrouping: 'إضافة تجميع',
1006
+ dateGranularity: 'دقة التاريخ',
1007
+ dateGranularityNone: '(استخدام القيمة الأصلية)',
1008
+ day: 'يوم',
1009
+ week: 'أسبوع',
1010
+ month: 'شهر',
1011
+ quarter: 'ربع',
1012
+ year: 'سنة',
1013
+ sortAsc: 'تصاعدي',
1014
+ sortDesc: 'تنازلي',
1015
+ chart: 'الرسم البياني',
1016
+ chartHint: 'عرض مرئي اختياري بجانب الجدول.',
1017
+ chartType: 'نوع الرسم',
1018
+ chartTitle: 'عنوان الرسم',
1019
+ chartTitlePlaceholder: 'افتراضيًا يستخدم عنوان التقرير',
1020
+ chartXAxis: 'المحور السيني (الفئة)',
1021
+ chartYAxis: 'المحور الصادي (القيمة)',
1022
+ chartShowLegend: 'إظهار وسيلة الإيضاح',
1023
+ chartShowDataLabels: 'إظهار تسميات البيانات',
1024
+ chartNone: '(بدون رسم)',
1025
+ chartBar: 'أعمدة',
1026
+ chartLine: 'خطي',
1027
+ chartArea: 'منطقة',
1028
+ chartPie: 'دائري',
1029
+ chartDonut: 'حلقي',
1030
+ chartFunnel: 'قمعي',
1031
+ validationNeedsObject: 'اختر مصدر بيانات قبل إضافة الأعمدة.',
1032
+ validationMatrixNeedsRowsCols: 'تتطلب تقارير المصفوفة صفًا وعمودًا واحدًا على الأقل.',
1033
+ validationSummaryNeedsRows: 'تتطلب تقارير الملخص حقل تجميع واحدًا على الأقل.',
1034
+ blocks: 'الكتل',
1035
+ blocksHint: 'كل كتلة هي جدولها أو رسمها البياني الخاص. عوامل تصفية الكتلة تُدمج مع عامل تصفية التقرير بمنطق AND.',
1036
+ addBlock: 'إضافة كتلة',
1037
+ removeBlock: 'إزالة الكتلة',
1038
+ blockName: 'اسم الكتلة',
1039
+ blockNamePlaceholder: 'اسم_فريد_للكتلة',
1040
+ blockLabel: 'التسمية المعروضة',
1041
+ blockLabelPlaceholder: 'تُعرض فوق الكتلة',
1042
+ blockDescription: 'الوصف',
1043
+ blockDescriptionPlaceholder: 'سياق اختياري لهذه الكتلة',
1044
+ validationJoinedNeedsBlocks: 'تتطلب التقارير المدمجة كتلة واحدة على الأقل.',
1045
+ validationBlockNameRequired: 'يجب أن يكون لكل كتلة اسم غير فارغ.',
1046
+ validationBlockNameDuplicate: 'يجب أن تكون أسماء الكتل فريدة داخل التقرير.',
1047
+ validationBlockNeedsColumns: 'تحتاج كل كتلة إلى عمود واحد على الأقل.',
1048
+ noneOption: '(بلا)',
1049
+ addCondition: 'إضافة شرط',
1050
+ combineLogic: 'الدمج مع',
1051
+ opContains: 'يحتوي على',
1052
+ opIsEmpty: 'فارغ',
1053
+ opIsNotEmpty: 'ليس فارغًا',
1054
+ formatAuto: 'تلقائي',
1055
+ formatCurrency: 'عملة',
1056
+ formatPercent: 'نسبة مئوية',
1057
+ formatInteger: 'عدد صحيح',
1058
+ formatDate: 'تاريخ',
1059
+ formatDatetime: 'تاريخ ووقت',
1060
+ columnLabelPlaceholder: 'تجاوز التسمية',
1061
+ aggregateColumn: 'تجميع',
1062
+ formatColumn: 'تنسيق',
1063
+ addColumns: 'إضافة أعمدة',
1064
+ searchFields: 'البحث في الحقول…',
1065
+ noMatchingFields: 'لا توجد حقول تطابق بحثك.',
1066
+ noFieldsAvailable: 'لا توجد حقول متاحة.',
1032
1067
  },
1033
1068
  },
1069
+ organizations: {
1070
+ mine: 'مؤسساتي',
1071
+ title: 'المؤسسات',
1072
+ heading: 'مؤسساتك',
1073
+ subtitle: 'اختر مؤسسة للمتابعة، أو أنشئ مؤسسة جديدة.',
1074
+ searchPlaceholder: 'ابحث عن مؤسسة',
1075
+ new: 'مؤسسة جديدة',
1076
+ current: 'المؤسسة الحالية',
1077
+ manage: 'إدارة',
1078
+ emptyTitle: 'لا توجد مؤسسات بعد',
1079
+ emptyDescription: 'أنشئ مؤسستك الأولى للبدء.',
1080
+ noMatches: 'لا توجد مؤسسات تطابق بحثك.',
1081
+ },
1082
+ notifications: {
1083
+ empty: 'لا توجد إشعارات',
1084
+ markAllRead: 'تعليم الكل كمقروء',
1085
+ viewAll: 'عرض جميع الإشعارات',
1086
+ approvalsPending: '{{count}} موافقات معلقة',
1087
+ viewApprovals: 'عرض الموافقات',
1088
+ noPendingApprovals: 'لا توجد موافقات معلقة',
1089
+ openApprovalsInbox: 'فتح صندوق الموافقات',
1090
+ },
1034
1091
  };
1035
1092
  export default ar;