@chelone/core 0.10.0 → 0.11.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/dist/block-editor/block-document.d.ts +1 -1
- package/dist/controller/calendar-events.d.ts +6 -4
- package/dist/controller/calendar-events.js +2 -3
- package/dist/controller/client-list-controller.d.ts +3 -3
- package/dist/controller/client-list-controller.js +4 -20
- package/dist/controller/filter-toggle.d.ts +4 -4
- package/dist/controller/filter-toggle.js +0 -7
- package/dist/controller/in-place-editor.d.ts +1 -1
- package/dist/controller/infinite-list-controller.d.ts +1 -1
- package/dist/controller/kanban-board.d.ts +5 -3
- package/dist/controller/list-controller.d.ts +105 -28
- package/dist/controller/list-controller.js +85 -43
- package/dist/controller/list-params.d.ts +16 -13
- package/dist/controller/record-diff.d.ts +4 -3
- package/dist/controller/record-diff.js +2 -1
- package/dist/controller/reference-many-controller.d.ts +9 -7
- package/dist/controller/reference-one-controller.d.ts +8 -6
- package/dist/controller/saved-queries.d.ts +15 -14
- package/dist/controller/saved-queries.js +5 -0
- package/dist/csv/import-controller.d.ts +2 -1
- package/dist/csv/types.d.ts +12 -5
- package/dist/data/cache-ops.d.ts +8 -5
- package/dist/data/remove-empty.d.ts +2 -1
- package/dist/data/remove-empty.js +3 -5
- package/dist/data/types.d.ts +109 -6
- package/dist/data/undoable.d.ts +3 -2
- package/dist/form/choices-controller.d.ts +19 -12
- package/dist/form/choices-controller.js +19 -7
- package/dist/form/filter-form-values.d.ts +4 -3
- package/dist/form/filter-form-values.js +7 -5
- package/dist/i18n/direction.d.ts +18 -0
- package/dist/i18n/direction.js +72 -0
- package/dist/i18n/english-messages.d.ts +145 -150
- package/dist/i18n/english-messages.js +145 -150
- package/dist/index.d.ts +6 -4
- package/dist/index.js +3 -2
- package/dist/realtime/live.d.ts +5 -5
- package/dist/realtime/types.d.ts +6 -6
- package/dist/resource/describe-resource.d.ts +9 -3
- package/dist/resource/registry-store.d.ts +5 -2
- package/dist/resource/source-path.d.ts +23 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The writing direction a locale renders in — the rule behind the `dir` the
|
|
3
|
+
* adapters put on the app root. Framework-free because both adapters need the
|
|
4
|
+
* same answer: each reads the active locale and calls `getLocaleDirection`.
|
|
5
|
+
*/
|
|
6
|
+
/** The two values HTML's `dir` attribute takes. */
|
|
7
|
+
export type TextDirection = "ltr" | "rtl";
|
|
8
|
+
/**
|
|
9
|
+
* The direction `locale` renders in: `"rtl"` for Arabic, Hebrew, Persian…,
|
|
10
|
+
* `"ltr"` for everything else, including an empty or malformed tag.
|
|
11
|
+
*
|
|
12
|
+
* A tag is read as BCP 47 — `language[-script][-region][-variant…]`, with the
|
|
13
|
+
* `-u-`/`-x-` extensions cut off, so `en-US-u-nu-arab` (Arabic *digits*) is not
|
|
14
|
+
* mistaken for the Arabic script. The script subtag is the four-letter one right
|
|
15
|
+
* after the language, and it decides over the language: `pa-Arab` is rtl,
|
|
16
|
+
* `pa-Guru` is ltr. Underscore separators (POSIX/ICU tags) are accepted.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getLocaleDirection(locale: string): TextDirection;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// src/i18n/direction.ts
|
|
2
|
+
/**
|
|
3
|
+
* Languages whose DEFAULT script runs right to left, the script CLDR's likely
|
|
4
|
+
* subtags give them (ar → Arabic, he → Hebrew, dv → Thaana, ckb → Arabic).
|
|
5
|
+
*
|
|
6
|
+
* A language whose default script is Latin is not here even when some of its
|
|
7
|
+
* speakers write it another way: Turkmen (`tk`) and Kurmanji Kurdish (`ku`) are
|
|
8
|
+
* ltr, and their Arabic-script forms arrive as `tk-Arab` / `ku-Arab`, which the
|
|
9
|
+
* script list below decides. Sorani Kurdish is `ckb`, listed above.
|
|
10
|
+
*
|
|
11
|
+
* A script subtag in the tag always wins over this list, so `ar-Latn` (Arabic
|
|
12
|
+
* in Latin letters) is ltr. A region alone changes nothing, as in CLDR: `fa-TJ`
|
|
13
|
+
* is Persian in Arabic script, and Tajik in Cyrillic is `tg` or `fa-Cyrl-TJ`.
|
|
14
|
+
*/
|
|
15
|
+
var RTL_LANGUAGES = /* @__PURE__ */ new Set([
|
|
16
|
+
"ar",
|
|
17
|
+
"ckb",
|
|
18
|
+
"dv",
|
|
19
|
+
"fa",
|
|
20
|
+
"he",
|
|
21
|
+
"nqo",
|
|
22
|
+
"ps",
|
|
23
|
+
"sd",
|
|
24
|
+
"ug",
|
|
25
|
+
"ur",
|
|
26
|
+
"yi"
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* ISO 15924 script codes that run right to left. A tag's script subtag says how
|
|
30
|
+
* a language is written, so this decides the languages the list above leaves
|
|
31
|
+
* out: `pa-Arab` is Punjabi in Arabic script, `ku-Arab` Kurdish, `tk-Arab`
|
|
32
|
+
* Turkmen. Historic scripts are left out: no app localizes to them.
|
|
33
|
+
*/
|
|
34
|
+
var RTL_SCRIPTS = /* @__PURE__ */ new Set([
|
|
35
|
+
"adlm",
|
|
36
|
+
"arab",
|
|
37
|
+
"hebr",
|
|
38
|
+
"mand",
|
|
39
|
+
"mend",
|
|
40
|
+
"nkoo",
|
|
41
|
+
"phnx",
|
|
42
|
+
"rohg",
|
|
43
|
+
"samr",
|
|
44
|
+
"syrc",
|
|
45
|
+
"thaa",
|
|
46
|
+
"yezi"
|
|
47
|
+
]);
|
|
48
|
+
/** Where the `-u-` (unicode) or `-x-` (private use) extension starts, or the tag's end. */
|
|
49
|
+
function extensionIndex(subtags) {
|
|
50
|
+
const index = subtags.findIndex((subtag) => subtag.toLowerCase() === "u" || subtag.toLowerCase() === "x");
|
|
51
|
+
return index === -1 ? subtags.length : index;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The direction `locale` renders in: `"rtl"` for Arabic, Hebrew, Persian…,
|
|
55
|
+
* `"ltr"` for everything else, including an empty or malformed tag.
|
|
56
|
+
*
|
|
57
|
+
* A tag is read as BCP 47 — `language[-script][-region][-variant…]`, with the
|
|
58
|
+
* `-u-`/`-x-` extensions cut off, so `en-US-u-nu-arab` (Arabic *digits*) is not
|
|
59
|
+
* mistaken for the Arabic script. The script subtag is the four-letter one right
|
|
60
|
+
* after the language, and it decides over the language: `pa-Arab` is rtl,
|
|
61
|
+
* `pa-Guru` is ltr. Underscore separators (POSIX/ICU tags) are accepted.
|
|
62
|
+
*/
|
|
63
|
+
function getLocaleDirection(locale) {
|
|
64
|
+
const subtags = locale.split(/[-_]/);
|
|
65
|
+
const structural = subtags.slice(0, extensionIndex(subtags));
|
|
66
|
+
const language = (structural[0] ?? "").toLowerCase();
|
|
67
|
+
const second = structural[1];
|
|
68
|
+
const script = second !== void 0 && second.length === 4 ? second.toLowerCase() : void 0;
|
|
69
|
+
if (script !== void 0) return RTL_SCRIPTS.has(script) ? "rtl" : "ltr";
|
|
70
|
+
return RTL_LANGUAGES.has(language) ? "rtl" : "ltr";
|
|
71
|
+
}
|
|
72
|
+
export { getLocaleDirection };
|
|
@@ -2,185 +2,180 @@
|
|
|
2
2
|
* The English catalog an `<Admin>` with no `i18n` prop reads from, and the base
|
|
3
3
|
* an app extends: spread it, then add or override entries.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* they were ported from
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* `
|
|
5
|
+
* Every key is `chelone.<group>.<leaf>`: the ported shadcn components used to
|
|
6
|
+
* translate the react-admin `ra.*` keys they were ported from, and those keys
|
|
7
|
+
* were moved under `chelone.*` with their group names kept (`page`, `action`,
|
|
8
|
+
* `navigation`). Chelone's i18n never throws on a missing key (it returns the
|
|
9
|
+
* key or a `_` fallback), so a partial catalog shows raw
|
|
10
|
+
* `chelone.page.list`-style keys.
|
|
10
11
|
*
|
|
11
12
|
* Interpolation is single-brace `{name}` (not react-admin's `%{name}`). Plural
|
|
12
13
|
* strings are `{ one, other }` objects keyed by Intl.PluralRules categories
|
|
13
14
|
* (react-admin's `a |||| b` form).
|
|
14
15
|
*
|
|
15
16
|
* `defaultMessages` (the `chelone.*` keys the core controllers emit) and
|
|
16
|
-
* `mapMessages` (the maps add-on's labels) sit underneath
|
|
17
|
+
* `mapMessages` (the maps add-on's labels) sit underneath, and no entry here
|
|
18
|
+
* repeats one of them. Where a moved key landed on a controller key that says
|
|
19
|
+
* something different, the component's own key keeps the group and names the
|
|
20
|
+
* role: `access_denied_detail`, `authentication_error_detail`,
|
|
21
|
+
* `loading_detail` and `http_error_label` sit beside the controller's
|
|
22
|
+
* `access_denied`, `authentication_error`, `loading` and `http_error`.
|
|
17
23
|
*/
|
|
18
24
|
export declare const englishMessages: {
|
|
19
|
-
readonly "
|
|
20
|
-
readonly "
|
|
21
|
-
readonly "
|
|
22
|
-
readonly "
|
|
23
|
-
readonly "
|
|
24
|
-
readonly "
|
|
25
|
-
readonly "
|
|
26
|
-
readonly "
|
|
27
|
-
readonly "
|
|
28
|
-
readonly "
|
|
29
|
-
readonly "
|
|
30
|
-
readonly "
|
|
31
|
-
readonly "
|
|
32
|
-
readonly "
|
|
25
|
+
readonly "chelone.page.list": "{name}";
|
|
26
|
+
readonly "chelone.page.create": "Create {name}";
|
|
27
|
+
readonly "chelone.page.edit": "{name} {recordRepresentation}";
|
|
28
|
+
readonly "chelone.page.show": "{name} {recordRepresentation}";
|
|
29
|
+
readonly "chelone.page.dashboard": "Dashboard";
|
|
30
|
+
readonly "chelone.page.error": "Something went wrong";
|
|
31
|
+
readonly "chelone.page.not_found": "Not Found";
|
|
32
|
+
readonly "chelone.page.loading": "Loading";
|
|
33
|
+
readonly "chelone.page.empty": "No {name} yet.";
|
|
34
|
+
readonly "chelone.page.access_denied": "Access denied";
|
|
35
|
+
readonly "chelone.page.authentication_error": "Authentication error";
|
|
36
|
+
readonly "chelone.action.add": "Add";
|
|
37
|
+
readonly "chelone.action.add_filter": "Add filter";
|
|
38
|
+
readonly "chelone.action.bulk_actions": {
|
|
33
39
|
readonly one: "1 item selected";
|
|
34
40
|
readonly other: "{count} items selected";
|
|
35
41
|
};
|
|
36
|
-
readonly "
|
|
37
|
-
readonly "
|
|
38
|
-
readonly "
|
|
39
|
-
readonly "
|
|
40
|
-
readonly "
|
|
41
|
-
readonly "
|
|
42
|
-
readonly "
|
|
43
|
-
readonly "
|
|
44
|
-
readonly "
|
|
45
|
-
readonly "
|
|
46
|
-
readonly "
|
|
47
|
-
readonly "
|
|
48
|
-
readonly "
|
|
49
|
-
readonly "
|
|
50
|
-
readonly "
|
|
51
|
-
readonly "
|
|
52
|
-
readonly "
|
|
53
|
-
readonly "
|
|
54
|
-
readonly "
|
|
55
|
-
readonly "
|
|
56
|
-
readonly "
|
|
57
|
-
readonly "
|
|
58
|
-
readonly "
|
|
59
|
-
readonly "
|
|
60
|
-
readonly "
|
|
61
|
-
readonly "
|
|
62
|
-
readonly "
|
|
63
|
-
readonly "
|
|
64
|
-
readonly "
|
|
65
|
-
readonly "
|
|
66
|
-
readonly "
|
|
67
|
-
readonly "
|
|
68
|
-
readonly "
|
|
69
|
-
readonly "
|
|
70
|
-
readonly "
|
|
71
|
-
readonly "
|
|
72
|
-
readonly "
|
|
73
|
-
readonly "
|
|
74
|
-
readonly "
|
|
75
|
-
readonly "
|
|
76
|
-
readonly "
|
|
77
|
-
readonly "
|
|
78
|
-
readonly "
|
|
79
|
-
readonly "
|
|
80
|
-
readonly "
|
|
81
|
-
readonly "
|
|
82
|
-
readonly "
|
|
83
|
-
readonly "
|
|
84
|
-
readonly "
|
|
85
|
-
readonly "
|
|
86
|
-
readonly "
|
|
87
|
-
readonly "
|
|
88
|
-
readonly "
|
|
89
|
-
readonly "
|
|
90
|
-
readonly "
|
|
91
|
-
readonly "
|
|
92
|
-
readonly "
|
|
93
|
-
readonly "
|
|
94
|
-
readonly "
|
|
95
|
-
readonly "
|
|
96
|
-
readonly "ra.theme.dark": "Dark";
|
|
97
|
-
readonly "ra.theme.system": "System";
|
|
98
|
-
readonly "ra.validation.required": "Required";
|
|
99
|
-
readonly "ra.validation.minLength": "Must be {min} characters at least";
|
|
100
|
-
readonly "ra.validation.maxLength": "Must be {max} characters or less";
|
|
101
|
-
readonly "ra.validation.minValue": "Must be at least {min}";
|
|
102
|
-
readonly "ra.validation.maxValue": "Must be {max} or less";
|
|
103
|
-
readonly "ra.validation.number": "Must be a number";
|
|
104
|
-
readonly "ra.validation.email": "Must be a valid email";
|
|
105
|
-
readonly "ra.action.back": "Back";
|
|
106
|
-
readonly "ra.action.bulk_edit_apply": {
|
|
42
|
+
readonly "chelone.action.cancel": "Cancel";
|
|
43
|
+
readonly "chelone.action.clear_input_value": "Clear value";
|
|
44
|
+
readonly "chelone.action.clear_search": "Clear search";
|
|
45
|
+
readonly "chelone.action.close": "Close";
|
|
46
|
+
readonly "chelone.action.close_menu": "Close menu";
|
|
47
|
+
readonly "chelone.action.confirm": "Confirm";
|
|
48
|
+
readonly "chelone.action.create": "Create";
|
|
49
|
+
readonly "chelone.action.delete": "Delete";
|
|
50
|
+
readonly "chelone.action.edit": "Edit";
|
|
51
|
+
readonly "chelone.action.export": "Export";
|
|
52
|
+
readonly "chelone.action.list": "List";
|
|
53
|
+
readonly "chelone.action.open_menu": "Open menu";
|
|
54
|
+
readonly "chelone.action.refresh": "Refresh";
|
|
55
|
+
readonly "chelone.action.remove": "Remove";
|
|
56
|
+
readonly "chelone.action.remove_filter": "Remove this filter";
|
|
57
|
+
readonly "chelone.action.save": "Save";
|
|
58
|
+
readonly "chelone.action.search": "Search";
|
|
59
|
+
readonly "chelone.action.select_all": "Select all";
|
|
60
|
+
readonly "chelone.action.select_row": "Select this row";
|
|
61
|
+
readonly "chelone.action.show": "Show";
|
|
62
|
+
readonly "chelone.action.sort": "Sort";
|
|
63
|
+
readonly "chelone.action.toggle_theme": "Toggle light/dark mode";
|
|
64
|
+
readonly "chelone.action.undo": "Undo";
|
|
65
|
+
readonly "chelone.action.unselect": "Unselect";
|
|
66
|
+
readonly "chelone.action.update": "Update";
|
|
67
|
+
readonly "chelone.boolean.true": "Yes";
|
|
68
|
+
readonly "chelone.boolean.false": "No";
|
|
69
|
+
readonly "chelone.boolean.null": " ";
|
|
70
|
+
readonly "chelone.auth.sign_in": "Sign in";
|
|
71
|
+
readonly "chelone.auth.sign_in_error": "Authentication failed, please retry";
|
|
72
|
+
readonly "chelone.auth.user_menu": "Profile";
|
|
73
|
+
readonly "chelone.auth.username": "Username";
|
|
74
|
+
readonly "chelone.auth.password": "Password";
|
|
75
|
+
readonly "chelone.message.access_denied_detail": "You don't have the right permissions to access this page";
|
|
76
|
+
readonly "chelone.message.auth_error": "An error occurred while validating the authentication token.";
|
|
77
|
+
readonly "chelone.message.authentication_error_detail": "The authentication server returned an error and your credentials could not be checked.";
|
|
78
|
+
readonly "chelone.message.error": "A client error occurred and your request couldn't be completed.";
|
|
79
|
+
readonly "chelone.message.loading_detail": "Please wait";
|
|
80
|
+
readonly "chelone.navigation.next": "Go to next page";
|
|
81
|
+
readonly "chelone.navigation.previous": "Go to previous page";
|
|
82
|
+
readonly "chelone.navigation.first": "Go to first page";
|
|
83
|
+
readonly "chelone.navigation.last": "Go to last page";
|
|
84
|
+
readonly "chelone.navigation.no_results": "No results found";
|
|
85
|
+
readonly "chelone.navigation.no_filtered_results": "No results found with the current filters.";
|
|
86
|
+
readonly "chelone.navigation.page_range_info": "{offsetBegin}-{offsetEnd} of {total}";
|
|
87
|
+
readonly "chelone.navigation.partial_page_range_info": "{offsetBegin}-{offsetEnd} of more than {offsetEnd}";
|
|
88
|
+
readonly "chelone.navigation.page_rows_per_page": "Rows per page:";
|
|
89
|
+
readonly "chelone.navigation.current_page": "Page {page}";
|
|
90
|
+
readonly "chelone.navigation.skip_nav": "Skip to content";
|
|
91
|
+
readonly "chelone.input.file.upload_several": "Drop some files to upload, or click to select one.";
|
|
92
|
+
readonly "chelone.input.file.upload_single": "Drop a file to upload, or click to select it.";
|
|
93
|
+
readonly "chelone.input.image.upload_several": "Drop some pictures to upload, or click to select one.";
|
|
94
|
+
readonly "chelone.input.image.upload_single": "Drop a picture to upload, or click to select it.";
|
|
95
|
+
readonly "chelone.input.password.toggle_visible": "Hide password";
|
|
96
|
+
readonly "chelone.input.password.toggle_hidden": "Show password";
|
|
97
|
+
readonly "chelone.theme.light": "Light";
|
|
98
|
+
readonly "chelone.theme.dark": "Dark";
|
|
99
|
+
readonly "chelone.theme.system": "System";
|
|
100
|
+
readonly "chelone.action.back": "Back";
|
|
101
|
+
readonly "chelone.action.bulk_edit_apply": {
|
|
107
102
|
readonly one: "Apply to 1 record";
|
|
108
103
|
readonly other: "Apply to {count} records";
|
|
109
104
|
};
|
|
110
|
-
readonly "
|
|
111
|
-
readonly "
|
|
112
|
-
readonly "
|
|
113
|
-
readonly "
|
|
114
|
-
readonly "
|
|
115
|
-
readonly "
|
|
116
|
-
readonly "
|
|
117
|
-
readonly "
|
|
118
|
-
readonly "
|
|
119
|
-
readonly "
|
|
120
|
-
readonly "
|
|
121
|
-
readonly "
|
|
122
|
-
readonly "
|
|
123
|
-
readonly "
|
|
124
|
-
readonly "
|
|
125
|
-
readonly "
|
|
126
|
-
readonly "
|
|
127
|
-
readonly "
|
|
128
|
-
readonly "
|
|
129
|
-
readonly "
|
|
130
|
-
readonly "
|
|
131
|
-
readonly "
|
|
132
|
-
readonly "
|
|
133
|
-
readonly "
|
|
134
|
-
readonly "
|
|
135
|
-
readonly "
|
|
136
|
-
readonly "
|
|
137
|
-
readonly "
|
|
138
|
-
readonly "
|
|
139
|
-
readonly "
|
|
140
|
-
readonly "
|
|
141
|
-
readonly "
|
|
142
|
-
readonly "
|
|
143
|
-
readonly "
|
|
144
|
-
readonly "
|
|
145
|
-
readonly "
|
|
146
|
-
readonly "
|
|
147
|
-
readonly "
|
|
148
|
-
readonly "
|
|
149
|
-
readonly "
|
|
150
|
-
readonly "
|
|
151
|
-
readonly "
|
|
152
|
-
readonly "
|
|
153
|
-
readonly "
|
|
105
|
+
readonly "chelone.action.change_locale": "Change locale";
|
|
106
|
+
readonly "chelone.action.clear_array_input": "Clear the array";
|
|
107
|
+
readonly "chelone.action.clone": "Clone";
|
|
108
|
+
readonly "chelone.action.collapse": "Collapse";
|
|
109
|
+
readonly "chelone.action.expand": "Expand";
|
|
110
|
+
readonly "chelone.action.move_column_down": "Move down";
|
|
111
|
+
readonly "chelone.action.move_column_up": "Move up";
|
|
112
|
+
readonly "chelone.action.move_down": "Move down";
|
|
113
|
+
readonly "chelone.action.move_up": "Move up";
|
|
114
|
+
readonly "chelone.action.reload": "Reload";
|
|
115
|
+
readonly "chelone.action.remove_all_filters": "Remove all filters";
|
|
116
|
+
readonly "chelone.action.reset": "Reset";
|
|
117
|
+
readonly "chelone.action.reset_columns": "Reset";
|
|
118
|
+
readonly "chelone.action.search_columns": "Search columns";
|
|
119
|
+
readonly "chelone.action.select_columns": "Columns";
|
|
120
|
+
readonly "chelone.auth.or": "or";
|
|
121
|
+
readonly "chelone.calendar.agenda": "Agenda";
|
|
122
|
+
readonly "chelone.calendar.month": "Month";
|
|
123
|
+
readonly "chelone.calendar.week": "Week";
|
|
124
|
+
readonly "chelone.calendar.next": "Next";
|
|
125
|
+
readonly "chelone.calendar.previous": "Previous";
|
|
126
|
+
readonly "chelone.calendar.today": "Today";
|
|
127
|
+
readonly "chelone.calendar.view": "View";
|
|
128
|
+
readonly "chelone.calendar.no_events": "No events";
|
|
129
|
+
readonly "chelone.csv_import.back": "Back";
|
|
130
|
+
readonly "chelone.csv_import.close": "Close";
|
|
131
|
+
readonly "chelone.csv_import.complete": "Import complete";
|
|
132
|
+
readonly "chelone.csv_import.counts": "{created} created · {failed} failed · {total} total";
|
|
133
|
+
readonly "chelone.csv_import.download_errors": "Download error report";
|
|
134
|
+
readonly "chelone.csv_import.drop": "Drop a CSV file here, or click to choose one";
|
|
135
|
+
readonly "chelone.csv_import.import": "Import";
|
|
136
|
+
readonly "chelone.csv_import.issues": "Issues";
|
|
137
|
+
readonly "chelone.csv_import.next": "Next";
|
|
138
|
+
readonly "chelone.csv_import.not_utf8": "This file is not UTF-8, so some letters may be wrong. Save it as CSV UTF-8 and try again.";
|
|
139
|
+
readonly "chelone.csv_import.preview_summary": "{valid} valid · {errors} errors · {total} total";
|
|
140
|
+
readonly "chelone.csv_import.required_unmapped": "Required fields are not mapped";
|
|
141
|
+
readonly "chelone.csv_import.rows_parsed": "{count} rows parsed";
|
|
142
|
+
readonly "chelone.csv_import.step.commit": "Importing";
|
|
143
|
+
readonly "chelone.csv_import.step.map": "Map columns";
|
|
144
|
+
readonly "chelone.csv_import.step.preview": "Preview";
|
|
145
|
+
readonly "chelone.csv_import.step.upload": "Upload";
|
|
146
|
+
readonly "chelone.csv_import.unmapped": "Not mapped";
|
|
147
|
+
readonly "chelone.csv_import.wrong_file": "Choose a .csv file";
|
|
148
|
+
readonly "chelone.message.bulk_delete_content": {
|
|
154
149
|
readonly one: "Are you sure you want to delete this item?";
|
|
155
150
|
readonly other: "Are you sure you want to delete these {count} items?";
|
|
156
151
|
};
|
|
157
|
-
readonly "
|
|
152
|
+
readonly "chelone.message.bulk_delete_title": {
|
|
158
153
|
readonly one: "Delete 1 item";
|
|
159
154
|
readonly other: "Delete {count} items";
|
|
160
155
|
};
|
|
161
|
-
readonly "
|
|
156
|
+
readonly "chelone.message.bulk_edit_description": {
|
|
162
157
|
readonly one: "Only the fields you change are applied to the selected record.";
|
|
163
158
|
readonly other: "Only the fields you change are applied to the {count} selected records.";
|
|
164
159
|
};
|
|
165
|
-
readonly "
|
|
166
|
-
readonly "
|
|
160
|
+
readonly "chelone.message.bulk_edit_nested_source": "Bulk edit takes flat sources only, but {source} is nested.";
|
|
161
|
+
readonly "chelone.message.bulk_update_content": {
|
|
167
162
|
readonly one: "Are you sure you want to update this item?";
|
|
168
163
|
readonly other: "Are you sure you want to update these {count} items?";
|
|
169
164
|
};
|
|
170
|
-
readonly "
|
|
165
|
+
readonly "chelone.message.bulk_update_title": {
|
|
171
166
|
readonly one: "Update 1 item";
|
|
172
167
|
readonly other: "Update {count} items";
|
|
173
168
|
};
|
|
174
|
-
readonly "
|
|
175
|
-
readonly "
|
|
176
|
-
readonly "
|
|
177
|
-
readonly "
|
|
178
|
-
readonly "
|
|
179
|
-
readonly "
|
|
180
|
-
readonly "
|
|
181
|
-
readonly "
|
|
182
|
-
readonly "
|
|
183
|
-
readonly "
|
|
169
|
+
readonly "chelone.message.clear_array_input": "Are you sure you want to clear the whole array?";
|
|
170
|
+
readonly "chelone.message.delete_content": "Are you sure you want to delete this item?";
|
|
171
|
+
readonly "chelone.message.delete_title": "Delete {name} {recordRepresentation}";
|
|
172
|
+
readonly "chelone.navigation.clear_filters": "Clear filters";
|
|
173
|
+
readonly "chelone.notification.application_update_available": "A new version of the application is available";
|
|
174
|
+
readonly "chelone.notification.http_error_label": "Error";
|
|
175
|
+
readonly "chelone.notification.offline": "You are offline";
|
|
176
|
+
readonly "chelone.saved_queries.new_label": "Save current query";
|
|
177
|
+
readonly "chelone.saved_queries.query_name": "Query name";
|
|
178
|
+
readonly "chelone.saved_queries.remove_label_with_name": "Remove saved query \"{name}\"";
|
|
184
179
|
readonly "chelone.assistant.close": "Close";
|
|
185
180
|
readonly "chelone.assistant.confirm": "Run {name}?";
|
|
186
181
|
readonly "chelone.assistant.error": "Something went wrong.";
|