@nodaro/shared 3.11.0 โ 3.12.1
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/index.cjs +2047 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1556 -27
- package/dist/index.d.ts +1556 -27
- package/dist/index.js +1861 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/caption-styles.test.ts +207 -0
- package/src/__tests__/edl-multicam.test.ts +304 -0
- package/src/__tests__/edl.test.ts +822 -0
- package/src/__tests__/fan-out-rows.test.ts +208 -0
- package/src/__tests__/instagram-scrape.test.ts +66 -0
- package/src/__tests__/llm-models.test.ts +48 -11
- package/src/__tests__/meta-ads-scrape.test.ts +284 -0
- package/src/__tests__/node-runtime-keys.test.ts +15 -0
- package/src/__tests__/presentation-utils.test.ts +67 -0
- package/src/__tests__/producer-types.test.ts +19 -0
- package/src/__tests__/schedule-rules.test.ts +265 -0
- package/src/__tests__/speaker-layouts.test.ts +203 -0
- package/src/__tests__/transcribe-capabilities.test.ts +104 -0
- package/src/__tests__/transcribe-preflight.test.ts +60 -0
- package/src/__tests__/trigger-feeds.test.ts +39 -0
- package/src/__tests__/video-duration-auto.test.ts +65 -0
- package/src/__tests__/video-duration.test.ts +56 -0
- package/src/__tests__/video-link.test.ts +137 -0
- package/src/__tests__/workflow-export-strip.test.ts +59 -1
- package/src/caption-styles.ts +240 -0
- package/src/credit-identifiers.ts +31 -0
- package/src/edit-plan-contract.ts +96 -0
- package/src/edl-multicam.ts +185 -0
- package/src/edl.ts +747 -0
- package/src/entity-image-handle.ts +24 -1
- package/src/fan-out-rows.ts +213 -0
- package/src/i18n/action-fx.he.ts +8 -8
- package/src/i18n/aesthetic.he.ts +8 -8
- package/src/i18n/animals.he.ts +34 -34
- package/src/i18n/atmosphere.he.ts +6 -6
- package/src/i18n/backdrop.he.ts +7 -7
- package/src/i18n/camera-format.he.ts +4 -4
- package/src/i18n/camera-motions.he.ts +20 -20
- package/src/i18n/character-fx.he.ts +16 -16
- package/src/i18n/character-motion.he.ts +184 -184
- package/src/i18n/color-look.he.ts +4 -4
- package/src/i18n/composition-effects.he.ts +3 -3
- package/src/i18n/era.he.ts +9 -9
- package/src/i18n/exposure-settings.he.ts +2 -2
- package/src/i18n/framing.he.ts +13 -13
- package/src/i18n/furniture.he.ts +52 -52
- package/src/i18n/held-prop.he.ts +10 -10
- package/src/i18n/instrumentation.he.ts +26 -26
- package/src/i18n/lens.he.ts +6 -6
- package/src/i18n/lighting.he.ts +17 -17
- package/src/i18n/loop-subject.he.ts +4 -4
- package/src/i18n/materials.he.ts +8 -8
- package/src/i18n/mood.he.ts +12 -12
- package/src/i18n/music-genre.he.ts +9 -9
- package/src/i18n/music-mood.he.ts +7 -7
- package/src/i18n/person.he.ts +94 -94
- package/src/i18n/photo-genre.he.ts +24 -24
- package/src/i18n/photographer.he.ts +21 -21
- package/src/i18n/pose.he.ts +14 -14
- package/src/i18n/post-process-effects.he.ts +4 -4
- package/src/i18n/render-quality.he.ts +7 -7
- package/src/i18n/setting.he.ts +14 -14
- package/src/i18n/style.he.ts +9 -9
- package/src/i18n/styling.he.ts +126 -126
- package/src/i18n/temporal.he.ts +8 -8
- package/src/i18n/transitions.he.ts +9 -9
- package/src/i18n/vehicles.he.ts +25 -25
- package/src/i18n/voice-character.he.ts +14 -14
- package/src/i18n/voice-delivery.he.ts +11 -11
- package/src/i18n/weapons.he.ts +23 -23
- package/src/index.ts +206 -3
- package/src/instagram-scrape.ts +204 -0
- package/src/llm-models.ts +80 -3
- package/src/meta-ads-scrape.ts +463 -0
- package/src/model-catalog.ts +48 -5
- package/src/model-constants.ts +148 -5
- package/src/node-mappable-fields.ts +2 -0
- package/src/node-runtime-keys.ts +28 -0
- package/src/presentation-utils.ts +49 -0
- package/src/producer-types.ts +20 -0
- package/src/schedule-rules.ts +484 -0
- package/src/speaker-layouts.ts +220 -0
- package/src/transcribe-preflight.ts +101 -0
- package/src/trigger-feeds.ts +59 -0
- package/src/trigger-node-types.ts +20 -0
- package/src/video-duration-auto.ts +18 -0
- package/src/video-duration.ts +32 -0
- package/src/video-link.ts +167 -0
- package/src/workflow-export.ts +37 -1
|
@@ -47,12 +47,31 @@ const AGGREGATE_LANE_EFFECTIVE_TYPE: Readonly<Record<string, string>> = {
|
|
|
47
47
|
"out-text": "list",
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Meta Ads scraper: besides its `json` handle it emits the FEATURED ad's
|
|
52
|
+
* copy, creative image and creative video on typed handles. Each behaves as
|
|
53
|
+
* the canonical single-media producer of that type โ `text` maps to
|
|
54
|
+
* `combine-text` (ONE string, not a list), so it reaches prompt inputs but
|
|
55
|
+
* not the list consumers.
|
|
56
|
+
*/
|
|
57
|
+
// Shared by every scraper node (Meta Ads, Instagram, โฆ): the typed
|
|
58
|
+
// text / image / video handles emit the canonical single-media producers.
|
|
59
|
+
const SCRAPER_HANDLE_EFFECTIVE_TYPE: Readonly<Record<string, string>> = {
|
|
60
|
+
text: "combine-text",
|
|
61
|
+
image: "upload-image",
|
|
62
|
+
video: "upload-video",
|
|
63
|
+
}
|
|
64
|
+
const SCRAPER_SOURCE_TYPES = new Set(["meta-ads-scrape", "instagram-scrape"])
|
|
65
|
+
|
|
50
66
|
/**
|
|
51
67
|
* The effective output TYPE a given source handle emits. Returns the raw node
|
|
52
68
|
* type for every `(type, handle)` pair EXCEPT:
|
|
53
69
|
* - an entity `image` handle โ `"upload-image"` (a plain image producer);
|
|
54
70
|
* - an aggregate (group / collect) lane handle โ the plain producer of that
|
|
55
|
-
* lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE)
|
|
71
|
+
* lane's media type (see AGGREGATE_LANE_EFFECTIVE_TYPE);
|
|
72
|
+
* - a Meta Ads `text` / `image` / `video` handle โ the plain producer of
|
|
73
|
+
* that type (see META_ADS_HANDLE_EFFECTIVE_TYPE); its `json` handle keeps
|
|
74
|
+
* the raw type.
|
|
56
75
|
* Pure โ safe for both frontend and backend.
|
|
57
76
|
*/
|
|
58
77
|
export function resolveEffectiveSourceType(
|
|
@@ -66,6 +85,10 @@ export function resolveEffectiveSourceType(
|
|
|
66
85
|
const effective = AGGREGATE_LANE_EFFECTIVE_TYPE[sourceHandleId ?? ""]
|
|
67
86
|
if (effective) return effective
|
|
68
87
|
}
|
|
88
|
+
if (SCRAPER_SOURCE_TYPES.has(rawSourceType ?? "")) {
|
|
89
|
+
const effective = SCRAPER_HANDLE_EFFECTIVE_TYPE[sourceHandleId ?? ""]
|
|
90
|
+
if (effective) return effective
|
|
91
|
+
}
|
|
69
92
|
return rawSourceType ?? ""
|
|
70
93
|
}
|
|
71
94
|
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fan-out pairs by ROW.
|
|
3
|
+
*
|
|
4
|
+
* When several list wires reach one node ("prompt" + "negative" columns of the
|
|
5
|
+
* same List, two Extract Field lists cut from the same JSON array, โฆ) the node
|
|
6
|
+
* runs once per row and every wire contributes the value of THAT row. Both DAG
|
|
7
|
+
* engines (backend orchestrator + in-browser executor) build the plan with the
|
|
8
|
+
* helpers below, so the rules live in exactly one place:
|
|
9
|
+
*
|
|
10
|
+
* - which list drives the fan-out, and which rows run, never depend on the
|
|
11
|
+
* order the wires were drawn in (`resolveListFanOut`);
|
|
12
|
+
* - the driving item is only written into the prompt when its wire actually
|
|
13
|
+
* feeds the prompt (`fanOutTextFeedsPrompt`, `NON_PROMPT_TEXT_LANES`);
|
|
14
|
+
* - an empty cell stays empty IN ITS ROW instead of pulling the rows below it
|
|
15
|
+
* up (`liveRowColumn`, `alignedFieldList`, `compactWithRows`);
|
|
16
|
+
* - an iteration keeps its row when Repeat xN multiplies it (`planFanOut`).
|
|
17
|
+
*/
|
|
18
|
+
import { evaluateJsonPath, stringifyPathResults } from "./json-path.js"
|
|
19
|
+
import { expandItemsWithRepeat } from "./repeat-types.js"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The text LANES the input resolvers route somewhere OTHER than the prompt slot
|
|
23
|
+
* (`negative` โ negativePrompt, `system-prompt` โ systemPrompt, an avatar's
|
|
24
|
+
* `script`, an editor's `transcript`, โฆ). A list that drives a fan-out through
|
|
25
|
+
* one of these must NOT also be written into the prompt: the per-row resolution
|
|
26
|
+
* already delivered it where it belongs.
|
|
27
|
+
*
|
|
28
|
+
* Keyed by handle, scoped by node type, because the routers are: `transcript`
|
|
29
|
+
* is the caption track of Add Captions but the very text Forced Alignment
|
|
30
|
+
* aligns. `"*"` = every node type (the router branch is unconditional).
|
|
31
|
+
*
|
|
32
|
+
* DERIVED, not remembered: each engine has a totality test
|
|
33
|
+
* (`fanout-text-handle-totality`) that routes a text source into EVERY input
|
|
34
|
+
* handle of EVERY node type through the real resolver and fails the build on any
|
|
35
|
+
* pair where this table and the router disagree โ in either direction. An
|
|
36
|
+
* unlisted lane keeps the old behavior (the item is the prompt), so a miss can
|
|
37
|
+
* only ever reproduce the old bug on that one lane, never a new one.
|
|
38
|
+
*/
|
|
39
|
+
export const NON_PROMPT_TEXT_LANES: Readonly<Record<string, "*" | readonly string[]>> = {
|
|
40
|
+
negative: "*",
|
|
41
|
+
"system-prompt": "*",
|
|
42
|
+
script: ["ai-avatar"],
|
|
43
|
+
transcript: ["add-captions", "apply-edl", "edit-plan"],
|
|
44
|
+
edl: ["apply-edl"],
|
|
45
|
+
silence: ["edit-plan"],
|
|
46
|
+
qrText: ["image-overlay"],
|
|
47
|
+
transition: ["slideshow"],
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Does a TEXT list wired to `targetHandle` of a `nodeType` node feed its prompt slot? */
|
|
51
|
+
export function fanOutTextFeedsPrompt(nodeType: string | null | undefined, targetHandle: string | null | undefined): boolean {
|
|
52
|
+
const scope = Object.hasOwn(NON_PROMPT_TEXT_LANES, targetHandle ?? "") ? NON_PROMPT_TEXT_LANES[targetHandle ?? ""] : undefined
|
|
53
|
+
if (scope === undefined) return true
|
|
54
|
+
return scope !== "*" && !scope.includes(nodeType ?? "")
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const isBlank = (v: unknown): boolean => typeof v !== "string" || v.trim().length === 0
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Drop the empty entries of a row-aligned list, remembering the row every kept
|
|
61
|
+
* value came from. The items are what drives a fan-out (nothing runs for an
|
|
62
|
+
* empty cell); the rows are what keeps the OTHER wires on the same row.
|
|
63
|
+
*/
|
|
64
|
+
export function compactWithRows(aligned: readonly string[]): { items: string[]; rowIndices: number[] } {
|
|
65
|
+
const items: string[] = []
|
|
66
|
+
const rowIndices: number[] = []
|
|
67
|
+
aligned.forEach((value, row) => {
|
|
68
|
+
if (isBlank(value)) return
|
|
69
|
+
items.push(value)
|
|
70
|
+
rowIndices.push(row)
|
|
71
|
+
})
|
|
72
|
+
return { items, rowIndices }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* One column of a manual List table, row-aligned: a row is dropped only when
|
|
77
|
+
* EVERY cell of it is blank (the trailing empty row the editor keeps), and an
|
|
78
|
+
* empty cell of a row that has content stays in place as "".
|
|
79
|
+
*/
|
|
80
|
+
export function liveRowColumn(rows: ReadonlyArray<ReadonlyArray<string | undefined>>, colIndex: number): string[] {
|
|
81
|
+
return rows
|
|
82
|
+
.filter((row) => row.some((cell) => !isBlank(cell)))
|
|
83
|
+
.map((row) => (typeof row[colIndex] === "string" ? (row[colIndex] as string).trim() : ""))
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** One list wire that could drive a fan-out. */
|
|
87
|
+
export interface FanOutCandidate {
|
|
88
|
+
/** Target handle of the consumer-side wire. */
|
|
89
|
+
targetHandle: string | null | undefined
|
|
90
|
+
/** The wire's values in row order โ may hold "" for an empty row. */
|
|
91
|
+
aligned: readonly string[]
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Turn the lists that reach a node into ONE fan-out, so that nothing depends on
|
|
96
|
+
* the order the wires were drawn in. `candidates` are the "each" lists that hold
|
|
97
|
+
* more than one value, in wire order.
|
|
98
|
+
*
|
|
99
|
+
* The PRIMARY is the list that holds the most values (the first of them when
|
|
100
|
+
* several tie): it sets the row space. Both engines get it from here, so the
|
|
101
|
+
* orchestrator and the in-browser executor cannot disagree on how many times a
|
|
102
|
+
* node runs. Lists with the SAME number of rows share that row space โ two
|
|
103
|
+
* columns of one table, two Extract Field lists cut from one array โ and are
|
|
104
|
+
* settled together:
|
|
105
|
+
*
|
|
106
|
+
* - the DRIVER (its item becomes the per-row override) is a text list that
|
|
107
|
+
* feeds the prompt, when there is one: that item is what must win over the
|
|
108
|
+
* typed prompt, and a list wired to `negative` must never supply it;
|
|
109
|
+
* - a ROW runs when ANY of those lists has a value in it. A row is never
|
|
110
|
+
* dropped because one column is empty there โ that column just contributes
|
|
111
|
+
* nothing for the row โ and a row with no value anywhere does not run.
|
|
112
|
+
*
|
|
113
|
+
* A list with a different number of rows is not part of this: it keeps
|
|
114
|
+
* wrapping around per iteration, as it always has.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveListFanOut<C extends FanOutCandidate>(
|
|
117
|
+
candidates: readonly C[],
|
|
118
|
+
nodeType: string | null | undefined,
|
|
119
|
+
): ListFanOut | undefined {
|
|
120
|
+
if (candidates.length === 0) return undefined
|
|
121
|
+
const held = (c: C) => compactWithRows(c.aligned).items.length
|
|
122
|
+
const primary = candidates.reduce((best, c) => (held(c) > held(best) ? c : best))
|
|
123
|
+
const space = candidates.filter((c) => c.aligned.length === primary.aligned.length)
|
|
124
|
+
const feedsPrompt = (c: C) => fanOutTextFeedsPrompt(nodeType, c.targetHandle) && isTextList(c.aligned)
|
|
125
|
+
const driver = feedsPrompt(primary) ? primary : (space.find(feedsPrompt) ?? primary)
|
|
126
|
+
const rowIndices: number[] = []
|
|
127
|
+
for (let row = 0; row < primary.aligned.length; row++) {
|
|
128
|
+
if (space.some((c) => !isBlank(c.aligned[row]))) rowIndices.push(row)
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
items: rowIndices.map((row) => (isBlank(driver.aligned[row]) ? "" : driver.aligned[row])),
|
|
132
|
+
rowIndices,
|
|
133
|
+
targetHandle: driver.targetHandle,
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Is this fan-out item a media URL (as opposed to text)? The ONE guess both
|
|
139
|
+
* engines make when a list item has to be applied as an override โ kept here so
|
|
140
|
+
* the backend worker and the in-browser executor cannot disagree on it.
|
|
141
|
+
*/
|
|
142
|
+
export function isFanOutUrlItem(item: string): boolean {
|
|
143
|
+
return item.startsWith("http") || /\.(png|jpg|jpeg|webp|gif|mp4|mov|webm|mp3|wav|ogg)(\?|$)/i.test(item)
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/** A media list never supplies a prompt override, whatever handle it is wired to.
|
|
147
|
+
* The FIRST value decides โ a column is one kind of thing; this is not a scan. */
|
|
148
|
+
function isTextList(aligned: readonly string[]): boolean {
|
|
149
|
+
const first = aligned.find((v) => !isBlank(v))
|
|
150
|
+
return first !== undefined && !isFanOutUrlItem(first)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** What a fan-out source resolved to. */
|
|
154
|
+
export interface ListFanOut {
|
|
155
|
+
/** The driving list's value for every row that runs โ "" where the driver has
|
|
156
|
+
* none for a row another list keeps alive (nothing is overridden there). */
|
|
157
|
+
items: string[]
|
|
158
|
+
/** `rowIndices[k]` = the row `items[k]` came from, in the driver's row space. */
|
|
159
|
+
rowIndices: number[]
|
|
160
|
+
/** Target handle of the consumer-side wire that drives the fan-out. */
|
|
161
|
+
targetHandle: string | null | undefined
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/** The iterations a node will run, in order. */
|
|
165
|
+
export interface FanOutPlan {
|
|
166
|
+
/** One entry per iteration (list items, repeat / provider sentinels). */
|
|
167
|
+
items: string[]
|
|
168
|
+
/** Row each iteration reads its inputs from; undefined when nothing is list-driven. */
|
|
169
|
+
rows: Array<number | undefined>
|
|
170
|
+
/** Handle the driving list is wired to; undefined when nothing is list-driven. */
|
|
171
|
+
targetHandle: string | null | undefined
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Expand a fan-out into its iterations (list x Repeat xN, providers, repeats โ
|
|
176
|
+
* `expandItemsWithRepeat` stays the single rule for that) and pin every
|
|
177
|
+
* iteration to the ROW its item came from. Repeat xN runs a row N times: the
|
|
178
|
+
* copies share the row, they do not walk on to the next one.
|
|
179
|
+
*/
|
|
180
|
+
export function planFanOut(
|
|
181
|
+
fanOut: ListFanOut | undefined,
|
|
182
|
+
nodeType: string,
|
|
183
|
+
nodeData: Record<string, unknown>,
|
|
184
|
+
): FanOutPlan | null {
|
|
185
|
+
const items = expandItemsWithRepeat(fanOut?.items, nodeType, nodeData)
|
|
186
|
+
if (!items) return null
|
|
187
|
+
const listDriven = fanOut !== undefined && fanOut.items.length > 1
|
|
188
|
+
if (!listDriven) return { items, rows: items.map(() => undefined), targetHandle: undefined }
|
|
189
|
+
const perRow = items.length / fanOut.items.length
|
|
190
|
+
return {
|
|
191
|
+
items,
|
|
192
|
+
rows: items.map((_, k) => fanOut.rowIndices[Math.floor(k / perRow)]),
|
|
193
|
+
targetHandle: fanOut.targetHandle,
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Extract Field, List output, over a root ARRAY: one entry per element, "" where
|
|
199
|
+
* the element has no value โ so two Extract Field lists cut from the same array
|
|
200
|
+
* stay row-aligned. Returns undefined when rows cannot be defined (the root is
|
|
201
|
+
* not an array, an element fans into several values, or no element carries the
|
|
202
|
+
* field at all) โ the caller then keeps the plain "values that exist" list.
|
|
203
|
+
*/
|
|
204
|
+
export function alignedFieldList(value: unknown, path: string): string[] | undefined {
|
|
205
|
+
if (!Array.isArray(value) || value.length === 0) return undefined
|
|
206
|
+
const out: string[] = []
|
|
207
|
+
for (const element of value) {
|
|
208
|
+
const found = evaluateJsonPath(element, path)
|
|
209
|
+
if (found.length > 1) return undefined
|
|
210
|
+
out.push(stringifyPathResults(found)[0] ?? "")
|
|
211
|
+
}
|
|
212
|
+
return out.some((v) => v.length > 0) ? out : undefined
|
|
213
|
+
}
|
package/src/i18n/action-fx.he.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { LocaleCatalogMap } from "./types.js"
|
|
|
3
3
|
const map: LocaleCatalogMap = {
|
|
4
4
|
// โโ Disaster โโ
|
|
5
5
|
"earthquake-tremor": { label: "ืจืขืฉ ืืืื ืงื", description: "ืจืขืืืช ืงืจืงืข ืงืื, ืืคืฆืื ืชืืืืื ืืชื ืื ืืื" },
|
|
6
|
-
"earthquake-major": { label: "ืจืขืืืช ืืืื ืืืงื", description: "ืงืจืงืข ื ืกืืงืช,
|
|
6
|
+
"earthquake-major": { label: "ืจืขืืืช ืืืื ืืืงื", description: "ืงืจืงืข ื ืกืืงืช, ืืจืืกืืช ื ืืคืืืช" },
|
|
7
7
|
"building-collapse": { label: "ืืชืืืืืืช ืื ืืื", description: "ืืื ื ืืชืคืืจืจ ืชืื ืืื ื ืคืืื" },
|
|
8
8
|
"tsunami-wave": { label: "ืื ืฆืื ืืื", description: "ืงืืจ ืขืฆืื ืฉื ืืื ืฉื ืืชื" },
|
|
9
9
|
"tornado": { label: "ืืืจื ืื", description: "ืขื ื ืืฉืคื ื ืืืข ืืงืจืงืข" },
|
|
@@ -21,7 +21,7 @@ const map: LocaleCatalogMap = {
|
|
|
21
21
|
|
|
22
22
|
// โโ Fire & Blasts โโ
|
|
23
23
|
"explosion-small": { label: "ืคืืฆืืฅ ืงืื", description: "ืคืืฆืืฅ ืงืืืคืงืื ืขื ืืืืง ืืืงืื" },
|
|
24
|
-
"explosion-large": { label: "ืคืืฆืืฅ ืืืื", description: "ืืืืจ ืืฉ ืืืืื ืจืื ืขื
|
|
24
|
+
"explosion-large": { label: "ืคืืฆืืฅ ืืืื", description: "ืืืืจ ืืฉ ืืืืื ืจืื ืขื ืฉืืจืื" },
|
|
25
25
|
"explosion-massive": { label: "ืคืืฆืืฅ ืืืืจ", description: "ืืืืจ ืืฉ ืืคืืก ืื ืืื ืื ืขื ืื ืืืฃ" },
|
|
26
26
|
"nuclear-detonation": { label: "ืืชืคืืฆืฆืืช ืืจืขืื ืืช", description: "ืขื ื ืคืืจืืื + ืืืืง ืืกื ืืืจ ืืืืคืง" },
|
|
27
27
|
"fireball-airborne": { label: "ืืืืจ ืืฉ ืืืืืืจ", description: "ืืืืจ ืืืื ืืชืืืื ืืืืืืจ" },
|
|
@@ -29,7 +29,7 @@ const map: LocaleCatalogMap = {
|
|
|
29
29
|
"oil-fire": { label: "ืฉืจืืคืช ื ืคื", description: "ืืืืืช ืืืืืืช ืฉืื ืื ืืืช + ืขืฉื ืฉืืืจ ืกืืื" },
|
|
30
30
|
"blazing-inferno": { label: "ืชืืคืช ืืืขืจืช", description: "ืงืืจ ืฉื ืืฉ ืืืืข ืืื" },
|
|
31
31
|
"flame-burst": { label: "ืคืจืฅ ืืืื", description: "ืกืืืื ืืฉ ืืืืจ ืืืืืงื" },
|
|
32
|
-
"ember-shower": { label: "
|
|
32
|
+
"ember-shower": { label: "ืืืจ ืืืืื", description: "ืืคื ืฉื ืืืืื ืืชืืืืช ืืืืจืืช" },
|
|
33
33
|
"smoke-pillar": { label: "ืขืืื ืขืฉื", description: "ืขืืื ืื ืื ืืืื ืฉื ืขืฉื ืฉืืืจ" },
|
|
34
34
|
"mushroom-cloud": { label: "ืขื ื ืคืืจืืื", description: "ืขื ื ืคืืฆืืฅ ืงืืืกื ืขื ืืืคื ืืืืข" },
|
|
35
35
|
|
|
@@ -43,19 +43,19 @@ const map: LocaleCatalogMap = {
|
|
|
43
43
|
"electric-discharge": { label: "ืคืจืืงื ืืฉืืืืช", description: "ืคืจืฅ ืฉื ืื ืจืืื ืืงืืฉืชืช ืืืืฉืืจ ืชืงืื" },
|
|
44
44
|
"transformer-blowout": { label: "ืคืืฆืืฅ ืฉื ืื", description: "ืคืืฆืืฅ ืืืื-ืืื ืืจืืฉ ืขืืื ืืฉืื" },
|
|
45
45
|
"st-elmos-fire": { label: "ืืฉ ืกื ื ืืืื", description: "ืืืืจ ืคืืืื ืืืื ืืฆืืจืจ ืขื ืงืฆืืืช ืืชืืช" },
|
|
46
|
-
"static-shock-burst": { label: "
|
|
46
|
+
"static-shock-burst": { label: "ืคืจืฅ ืืฉืื ืกืืื", description: "ื ืืฆืืฅ ืงืื ืื ืจืื ืฉื ืืฉืื ืกืืื" },
|
|
47
47
|
|
|
48
48
|
// โโ Combat โโ
|
|
49
49
|
"muzzle-flash": { label: "ืืืืง ืืืข", description: "ืืืืง ืืชืื ืขื ืืงื ื ืืื ืื ืฉืง" },
|
|
50
|
-
"gunshot-impact": { label: "ืคืืืขืช ืืจืืื", description: "ืืืืจ ืคืืืข ืืืฉืื ืขื ืชืจืกืืก
|
|
50
|
+
"gunshot-impact": { label: "ืคืืืขืช ืืจืืื", description: "ืืืืจ ืคืืืข ืืืฉืื ืขื ืชืจืกืืก ืฉืืจืื" },
|
|
51
51
|
"bullet-trail": { label: "ืฉืืื ืืืืจ", description: "ืคืก ื ืจืื ืฉื ืืืืจ ืืืืืืจ" },
|
|
52
|
-
"sword-spark": { label: "ื ืืฆืืฆืืช ืืจื", description: "
|
|
52
|
+
"sword-spark": { label: "ื ืืฆืืฆืืช ืืจื", description: "ืืืจ ื ืืฆืืฆืืช ืืืืื ืืชืืช ืขื ืืชืืช ืืชืงืจืื ืืืงืจื" },
|
|
53
53
|
"blade-clash": { label: "ืืชื ืืฉืืช ืืืืื", description: "ืฉื ื ืืืืื ื ืคืืฉืื ืขื ืื ืืืฃ" },
|
|
54
54
|
"ricochet-spark": { label: "ื ืืฆืืฅ ืจืืงืืฉื", description: "ืืืืจ ืืงืคืฅ ืืืชืืช ืขื ื ืืฆืืฆืืช" },
|
|
55
|
-
"debris-field": { label: "ืฉืื
|
|
55
|
+
"debris-field": { label: "ืฉืื ืฉืืจืื", description: "ืจืกืืกืื ืงืคืืืื ืืืืืืจ ืืชืคืืจืื" },
|
|
56
56
|
"glass-shatter-airborne": { label: "ืืชื ืคืฆืืช ืืืืืืช ืืืืืืจ", description: "ืืืืืืช ืืชืคืืฆืฆืช ืืจืกืืกืื ืืจืืคืื" },
|
|
57
57
|
"shockwave-ground": { label: "ืื ืืืฃ ืงืจืงืขื", description: "ืืืขืช ืืชืจืืืช ื ืจืืืช ืืืืื ืืงืจืงืข" },
|
|
58
|
-
"sonic-boom": { label: "ืืื
|
|
58
|
+
"sonic-boom": { label: "ืืื ืขื-ืงืืื", description: "ืืจืื ืฉื ืืืืืจ ืืืืก ืืืืืจืืช ืขื-ืงืืืืช" },
|
|
59
59
|
"smoke-grenade": { label: "ืจืืืื ืขืฉื", description: "ืขืฉื ืฆืืขืื ื ืกืืื ืืชืคืจืฅ ืืืืฆื" },
|
|
60
60
|
"flashbang": { label: "ืจืืืื ืืื", description: "ืคืจืฅ ืืืจ ืืื ืืกื ืืืจ" },
|
|
61
61
|
"blood-spray": { label: "ืชืจืกืืก ืื", description: "ืงืฉืช ืงืืื ืืขืืช ืฉื ืืืคืืช ืื" },
|
package/src/i18n/aesthetic.he.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { LocaleCatalogMap } from "./types.js"
|
|
|
2
2
|
|
|
3
3
|
const map: LocaleCatalogMap = {
|
|
4
4
|
"y2k": {
|
|
5
|
-
description: "
|
|
5
|
+
description: "ืคืืค ืืื ืืืืื ืฉื ืกืืฃ ืฉื ืืช ื-90 ืืชืืืืช ืฉื ืืช ื-2000",
|
|
6
6
|
},
|
|
7
7
|
"cottagecore": {
|
|
8
8
|
label: "Cottagecore",
|
|
@@ -30,7 +30,7 @@ const map: LocaleCatalogMap = {
|
|
|
30
30
|
},
|
|
31
31
|
"coquette": {
|
|
32
32
|
label: "Coquette",
|
|
33
|
-
description: "
|
|
33
|
+
description: "ืคืคืืื ืื, ืชืืจื ืืจืืืช balletcore",
|
|
34
34
|
},
|
|
35
35
|
"fairycore": {
|
|
36
36
|
label: "Fairycore",
|
|
@@ -69,7 +69,7 @@ const map: LocaleCatalogMap = {
|
|
|
69
69
|
},
|
|
70
70
|
"angelcore": {
|
|
71
71
|
label: "Angelcore",
|
|
72
|
-
description: "ืจืืืช
|
|
72
|
+
description: "ืจืืืช ืืืืืืช ืฉื ืชืืจื ืื ืืฆืืช",
|
|
73
73
|
},
|
|
74
74
|
"hikecore": {
|
|
75
75
|
label: "Hikecore",
|
|
@@ -106,10 +106,10 @@ const map: LocaleCatalogMap = {
|
|
|
106
106
|
},
|
|
107
107
|
"maximalism": {
|
|
108
108
|
label: "ืืงืกืืืืืื",
|
|
109
|
-
description: "ืชืื ืืืช ืืชื ืืฉืืช ืฉื
|
|
109
|
+
description: "ืชืื ืืืช ืืชื ืืฉืืช ืฉื ืดืืืชืจ ืื ืืืชืจืด",
|
|
110
110
|
},
|
|
111
111
|
"avant-garde": {
|
|
112
|
-
label: "
|
|
112
|
+
label: "ืืืื ืืจื",
|
|
113
113
|
description: "ืืืคื ื ืคืืกืืืืช ืงืื ืกืคืืืืืืช",
|
|
114
114
|
},
|
|
115
115
|
"old-hollywood-glam": {
|
|
@@ -126,15 +126,15 @@ const map: LocaleCatalogMap = {
|
|
|
126
126
|
},
|
|
127
127
|
"casual-lived-in": {
|
|
128
128
|
label: "ืงื'ืืื / ืืืืืืื",
|
|
129
|
-
description: "
|
|
129
|
+
description: "ืืืืืืื, ืืฉืืคืฉืฃ ืืื ืืกืืื ื",
|
|
130
130
|
},
|
|
131
131
|
"effortless-cool": {
|
|
132
132
|
label: "Cool ืืื ืืืืฅ",
|
|
133
133
|
description: "ืืืขืืืช off-duty ืืกืื ืื French-girl",
|
|
134
134
|
},
|
|
135
135
|
"retro-90s": {
|
|
136
|
-
label: "ืจืืจื
|
|
137
|
-
description: "ืฉืืืื
|
|
136
|
+
label: "ืจืืจื ืฉื ืืช ื-90",
|
|
137
|
+
description: "ืฉืืืื ืืจืื ื' ืืงื ืืื ืฉื ืฉื ืืช ื-90",
|
|
138
138
|
},
|
|
139
139
|
"weirdcore": {
|
|
140
140
|
label: "Weirdcore",
|
package/src/i18n/animals.he.ts
CHANGED
|
@@ -24,7 +24,7 @@ const map: LocaleCatalogMap = {
|
|
|
24
24
|
"dog-dachshund": { label: "ืืงืกืืืื ื", description: "ืืื ืืจืื ืื ืืื ืขื ืจืืืืื ืงืฆืจืืช, ืืื ืขืืืง ืืืืื ืืื ืืจืืืืช ืืฉืืืืืช" },
|
|
25
25
|
"dog-chihuahua": { label: "ืฆ'ืืืืืืื", description: "ืืื ืฆืขืฆืืข ืืขืืจ ืขื ืจืืฉ ืืฆืืจืช ืชืคืื, ืืืื ืืื ืืงืืคืืช ืขื ืงืืืช ืืขืื ืืื ืืืืืืช ืืขืจื ืืืช" },
|
|
26
26
|
"dog-corgi": { label: "ืงืืจืื", description: "ืืื ืจืืขืื ืงืฆืจ-ืจืืืืื ืขื ืคื ืื ืืืืืืช ืฉืืขื, ืืืื ืืื ืืงืืคืืช ืขื ืงืืืช ืืคืจืืื ืืคืืื ืจืื ืืืืื ื ืืืื ืืืื" },
|
|
27
|
-
"dog-pug": { label: "ืคืื", description: "ืืื ืืกืื ืงืื ืขื ืคื ืื ืฉืืืืืช ืืงืืืืืช ืขืืืงืืช, ืื ื ืืกืืืกื ืืคืจืืื
|
|
27
|
+
"dog-pug": { label: "ืคืื", description: "ืืื ืืกืื ืงืื ืขื ืคื ืื ืฉืืืืืช ืืงืืืืืช ืขืืืงืืช, ืื ื ืืกืืืกื ืืคืจืืื ืืืืื ืื'-ืืื ืขื ืืกืื ืฉืืืจื" },
|
|
28
28
|
"dog-border-collie": { label: "ืืืจืืจ ืงืืื", description: "ืืื ืจืืขืื ืืื ืื ื ืืจืื ืขื ืคืจืืื ืฉืืืจื-ืืื ื, ืืื ืืื ืื ืกืืื ืืื ื ืื ืืฆื" },
|
|
29
29
|
"dog-rottweiler": { label: "ืจืืืืืืืืจ", description: "ืืื ืฉืจืืจื ืืขืืฆืืชื ืขื ืคืจืืื ืฉืืืจื ืงืฆืจื ืืืืจืืงื ืืกืืืื ืื ืืืคืืื ืืื ืืืืื ืืืืื ื ืืคื ืื, ืืื ืืจืืืืื" },
|
|
30
30
|
"dog-shiba-inu": { label: "ืฉืืื ืืื ื", description: "ืืื ืืกืื ืกืคืืฅ ืงืืืคืงืื ืขื ืคืจืืื ืืืืื-ืืชืืื, ืื ื ืืกืืืกื, ืืืื ืืื ืืฉืืืฉืืช ืืงืืคืืช ืืคื ืื ืืืืืืช ืฉืืขื" },
|
|
@@ -33,43 +33,43 @@ const map: LocaleCatalogMap = {
|
|
|
33
33
|
"horse": { label: "ืกืืก", description: "ืกืืก ืืืง ืืืื ื ื ืขื ืจืขืื ืืื ื ืืืจืืื, ืคืจืกืืช ืืืชื ืืช ืืืื ื ืืืฃ ืฉืจืืจื" },
|
|
34
34
|
"camel": { label: "ืืื", description: "ืืื ืืืืจื ืขื ืืืฉืช ืืืืื, ืจืืืืื ืืจืืืืช, ืืคืืช ืจืืืืช ืืจืืคืืืช ืืคื ืื ืฉืืืืช" },
|
|
35
35
|
"donkey": { label: "ืืืืจ", description: "ืืืืจ ืงืื ืืืกืื ืขื ืืืื ืืื ืืจืืืืช, ืจืขืื ืืงืืคื ืงืฆืจื ืืคื ืื ืขืืื ืืช" },
|
|
36
|
-
"mule": { label: "ืคืจื", description: "ืคืจื
|
|
36
|
+
"mule": { label: "ืคืจื", description: "ืคืจื ืืฉื ืืกืื ืขื ืืืื ืืื ืืจืืืืช, ืจืขืื ืืื ืงืฆืจื ืืืื ื ืืืฃ ืฉืจืืจื ืงืืืคืงืื" },
|
|
37
37
|
"ox": { label: "ืฉืืจ", description: "ืฉืืจ ืขืืืื ืขื ืงื ืขื ืืชืคืืื ืจืืืืช, ืงืจื ืืื ืืขืืงืืืช ืืคื ืื ืกืืื ืืืช ืืกืืืืืืช" },
|
|
38
38
|
|
|
39
39
|
// Farm
|
|
40
40
|
"cow": { label: "ืคืจื", description: "ืคืจื ืืืืืช ืขื ืขืืจ ืื ืืืจ ืืืื ืืฉืืืจ, ืขืืื ืืืื ืืขืื ืืื ืืืืืช ืขืืื ืืช" },
|
|
41
41
|
"pig": { label: "ืืืืจ", description: "ืืืืจ ืืืื ืืจืื ืฉืื ืื ืขื ืื ื ืืกืืืกื, ืืจืืื ืขืืื ืืืืื ืืื ืืงืืคืืช" },
|
|
42
|
-
"sheep": { label: "ืืืฉ", description: "ืืืฉ ืฆืืจืืจื ืืคืจืืืชื ืขื
|
|
43
|
-
"goat": { label: "ืขื", description: "ืขื ืืจืืื ืขื ืคืจืืื ืคืจืืขื, ืงืจื ืืื ืืขืืงืืืช,
|
|
44
|
-
"chicken": { label: "ืชืจื ืืืืช", description: "ืชืจื ืืืืช ืืืื ืงืืืกืืช ืขื ืืจืืืืช
|
|
42
|
+
"sheep": { label: "ืืืฉ", description: "ืืืฉ ืฆืืจืืจื ืืคืจืืืชื ืขื ืืืื ืขืื ืืฆืืข ืฉืื ืช, ืคื ืื ืืืืช ืืจืืืืื ืงืฆืจืืช" },
|
|
43
|
+
"goat": { label: "ืขื", description: "ืขื ืืจืืื ืขื ืคืจืืื ืคืจืืขื, ืงืจื ืืื ืืขืืงืืืช, ืฆืืฆืช ืืงื ืืืืฉืื ืื ืืืื ืืื" },
|
|
44
|
+
"chicken": { label: "ืชืจื ืืืืช", description: "ืชืจื ืืืืช ืืืื ืงืืืกืืช ืขื ืืจืืืืช ืืืืืืืื ืืืืืื, ืืืฃ ืื ืืฆื ืืจืืฉ ืขืจื ื ืืืื ืืฆืืื" },
|
|
45
45
|
"rooster": { label: "ืชืจื ืืื", description: "ืชืจื ืืื ืืื ืขื ืืจืืืืช ืืืืื ืืืืื, ื ืืฆืืช ืืืจืืกืืืช ืืืืื ื ืืจืืง-ื ืืืฉืช ืื ืืฆืืช ืื ื ืืจืืืืช ืืงืืฉืชืืช" },
|
|
46
|
-
"duck": { label: "ืืจืืื", description: "ืืจืืื ืืืื ืืื-ืืื ืขื ืืงืืจ ืืชืื,
|
|
47
|
-
"rabbit": { label: "ืืจื ื", description: "ืืจื ื ืคืจืืืชื ืขื ืืืื ืืื ืืจืืืืช ืืงืืคืืช, ืืฃ
|
|
48
|
-
"turkey": { label: "ืชืจื ืืื ืืืื", description: "ืชืจื ืืื ืืืื ืืืื ืขื ื ืืฆืืช ืื ื ืืืืช ืืืจืืกืืืช ืคืจืืฉืืช, ืจืืฉ ืืืื ืืฉืืฃ
|
|
46
|
+
"duck": { label: "ืืจืืื", description: "ืืจืืื ืืืื ืืื-ืืื ืขื ืืงืืจ ืืชืื, ืจืืื ืฉืืืื ืงืจืืืืืช ืืืืืจืืื ืืขืืืืื" },
|
|
47
|
+
"rabbit": { label: "ืืจื ื", description: "ืืจื ื ืคืจืืืชื ืขื ืืืื ืืื ืืจืืืืช ืืงืืคืืช, ืืฃ ืจืืื ืืื ื ืืืื ืืืืจ ืืืชื ื" },
|
|
48
|
+
"turkey": { label: "ืชืจื ืืื ืืืื", description: "ืชืจื ืืื ืืืื ืืืื ืขื ื ืืฆืืช ืื ื ืืืืช ืืืจืืกืืืช ืคืจืืฉืืช, ืจืืฉ ืืืื ืืฉืืฃ ืืืืืื ืืฉืชืืฉื" },
|
|
49
49
|
|
|
50
50
|
// Wild
|
|
51
51
|
"lion": { label: "ืืจืื", description: "ืืจืื ืืืจ ืขืืฆืืชื ืขื ืจืขืื ืืืืื ืขืื ืืืงืืคื ืคื ืื ืจืืืืช ืืืืื ืืื-ืืืืจ ืืืื ื ืฉืจืืจื" },
|
|
52
|
-
"tiger": { label: "
|
|
52
|
+
"tiger": { label: "ืืืืจืืก", description: "ืืืืจืืก ืขื ืงื ืขื ืคืจืืื ืืชืืื ืืืืืช, ืคืกืื ืฉืืืจืื ื ืืขืืื ืืขืื ืืื ืืฆืืข ืขื ืืจ ืืื ืื ืกืืืืืช" },
|
|
53
53
|
"bear": { label: "ืืื", description: "ืืื ืืื ืืืื ืขื ืคืจืืื ืขืื ืืคืจืืขื, ืจืืฉ ืจืื, ืืืื ืืื ืขืืืืืช ืืืคืืช ืขืืฆืืชืืืช ืขื ืืคืจืื" },
|
|
54
54
|
"polar-bear": { label: "ืืื ืงืืื", description: "ืืื ืืจืงืื ืขื ืงื ืขื ืคืจืืื ืขืื ืืฆืืข ืฉืื ืช-ืืื, ืฆืืืืจ ืืจืื, ืืฃ ืฉืืืจ ืืืคืืช ืืจืืคืืืช ืขื ืงืืืช" },
|
|
55
55
|
"wolf": { label: "ืืื", description: "ืืื ืืคืืจ ืจืื ืขื ืคืจืืื ืืคืืื ืขืื, ืืืื ืืื ืืงืืคืืช, ืขืื ืืื ืฆืืืืืช ืืืืจืืช ืืื ื ืกืืื" },
|
|
56
56
|
"fox": { label: "ืฉืืขื", description: "ืฉืืขื ืืืื ืืง ืขื ืืจืืื ืืืืื ืื, ืืืื ืืื ืืงืืคืืช ืืื ื ืกืืื ืืจืื ืขื ืงืฆื ืืื" },
|
|
57
|
-
"elephant": { label: "ืคืื", description: "ืคืื ืขื ืงื ืขื ืขืืจ ืืคืืจ ืืงืืื, ืืืง ืืจืื, ืืืื ืืื ืจืืืืช ืืชื ืืคืคืืช
|
|
57
|
+
"elephant": { label: "ืคืื", description: "ืคืื ืขื ืงื ืขื ืขืืจ ืืคืืจ ืืงืืื, ืืืง ืืจืื, ืืืื ืืื ืจืืืืช ืืชื ืืคืคืืช ืืืื ืฉื ืื ืืขืืงืืื" },
|
|
58
58
|
"zebra": { label: "ืืืจื", description: "ืืืจื ืืืืืช ืกืืก ืืืชื ื ืขื ืคืกืื ืฉืืืจืื-ืืื ืื ื ืืขืืื, ืจืขืื ืืงืืคื ืงืฆืจื ืืขืื ืืื ืืืืช ืืืืืืช" },
|
|
59
59
|
"giraffe": { label: "ื'ืืจืคื", description: "ื'ืืจืคื ืืืืื ืืืื ื ืืช ืขื ืฆืืืืจ ืืจืื ืืืืคื ืืืชื ืืคืฉืจื, ืคืจืืื ืืืืื ืืืืืช ืืงืจื ื ืืืกืืงืื ืงืื ืืช" },
|
|
60
60
|
"panda": { label: "ืคื ืื ืขื ืงืืช", description: "ืคื ืื ืฉืื ืื ื ืขื ืคืจืืื ืฉืืืจื-ืืื ื, ืืืื ืืื ืขืืืืืช, ืืชืื ืขืื ืืื ืฉืืืจืื ืืืคืืื ืืื ืืคื ืื ืขืืื ืืช" },
|
|
61
|
-
"leopard": { label: "
|
|
62
|
-
"cheetah": { label: "
|
|
61
|
+
"leopard": { label: "ื ืืจ", description: "ื ืืจ ืื ืืืจ ืืืง ืขื ืคืจืืื ืืืืื ืืื-ืืืืจ ืืืืกื ืจืืืืืช, ืืชืคืืื ืฉืจืืจืืืช ืืขืื ืืื ืืืืจืืช ืืืืจืืช" },
|
|
62
|
+
"cheetah": { label: "ืืจืืืก", description: "ืืจืืืก ืจืื ืืืืืจ ืขื ืคืจืืื ืืืืื ืฉื ื ืงืืืืช ืฉืืืจืืช ืืืืืช ืืงืืื ืืืขื ืืืืจื ืืคื ืื" },
|
|
63
63
|
"monkey": { label: "ืงืืฃ", description: "ืงืืฃ ืืจืื-ืื ื ืืจืื ืขื ืขืื ืืื ืืืืืช ืืงืกืคืจืกืืืืืช, ืืคืืื ืืงืืช ืืคืจืืื ืจืื ืืืืื ื ืืื-ืฉืื ืช" },
|
|
64
64
|
"gorilla": { label: "ืืืจืืื", description: "ืืืจืืื ืื-ืืกืืฃ ืขื ืงืืช ืขื ืืชืคืืื ืจืืืืช, ืจืืก ืืืืช ืืืื ืืคืจืืื ืฉืืืจื ืขืื" },
|
|
65
65
|
"kangaroo": { label: "ืงื ืืืจื", description: "ืงื ืืืจื ืืืื ืขื ืจืืืืื ืืืืจืืืช ืขืืฆืืชืืืช, ืื ื ืฉืจืืจื ืขืื, ืืคืืช ืงืืืืืช ืงืื ืืช ืืืืื ืืื ืืงืืคืืช ืขืจื ืืืช" },
|
|
66
66
|
"koala": { label: "ืงืืืื", description: "ืืื ืง ืืืก ืืคืืจ ืคืจืืืชื ืขื ืจืืฉ ืขืืื, ืืืื ืืื ืคืจืืืชืืืช ืืืืืืช, ืืฃ ืฉืืืจ ืืืื ืืืื ืจื ืคืจืืืชื" },
|
|
67
|
-
"deer": { label: "
|
|
67
|
+
"deer": { label: "ืืืื", description: "ืืืื ืืื ื ื ืขื ืคืจืืื ืืืื-ืืืืืื, ืจืืืืื ืืงืืช, ืืชื ืืจืื ืืื โ ืืืืืจ โ ืงืจื ืืื ืืกืืขืคืืช" },
|
|
68
68
|
"raccoon": { label: "ืจืืงืื", description: "ืจืืงืื ืืืืกื ืขื ืคืจืืื ืืคืืจื, ืืกืืช ืฉืืื ืืื ืขื ืืขืื ืืื ืืื ื ืกืืื ืขื ืืืขืืช" },
|
|
69
69
|
|
|
70
70
|
// Birds
|
|
71
|
-
"eagle": { label: "
|
|
72
|
-
"owl": { label: "ืื ืฉืืฃ", description: "ืื ืฉืืฃ ืขื ืคื ืื ืขืืืืืช, ื ืืฆืืช ืื ืืืจืืช ืืื-ืืื, ืขืื ืืื ืฆืืืืืช ืขื ืงืืืช ืืคืื ืืช ืงืืืื
|
|
71
|
+
"eagle": { label: "ืขืื", description: "ืขืื ืืืืืชื ืขื ืืืฃ ืืื ืืื, ืจืืฉ ืืื ื ืืื ืื, ืืงืืจ ืฆืืื ืืขืืงื ืืืคืจืื ืืืื" },
|
|
72
|
+
"owl": { label: "ืื ืฉืืฃ", description: "ืื ืฉืืฃ ืขื ืคื ืื ืขืืืืืช, ื ืืฆืืช ืื ืืืจืืช ืืื-ืืื, ืขืื ืืื ืฆืืืืืช ืขื ืงืืืช ืืคืื ืืช ืงืืืื ืืฆืืฆืืช ื ืืฆื ืขื ืืืืื ืืื" },
|
|
73
73
|
"parrot": { label: "ืชืืื", description: "ืชืืื ืืจืืคื ืชืืกืก ืขื ื ืืฆืืช ืืฆืืขื ืืืื, ืืจืืง, ืฆืืื ืืืืื ืจืืืืื ืืืงืืจ ืืงืืฉืช" },
|
|
74
74
|
"peacock": { label: "ืืืืก", description: "ืืืืก ืืืื ืืืจืืกื ืขื ืื ื ืื ืืคื ืขื ืง ืฉื ื ืืฆืืช ืื ืฆื ืฆืืช ืขื ืืืืืช ืขืื ืืื" },
|
|
75
75
|
"flamingo": { label: "ืคืืืื ืื", description: "ืคืืืื ืื ืืืื ืืืง ืขื ื ืืฆืืช ืืจืืืืช ืืืืจืืช, ืฆืืืืจ ืืจืื ืืขืืงื ืืืงืืจ ืืคืืฃ ืืืืื ืืขืืจ ืืืื" },
|
|
@@ -81,50 +81,50 @@ const map: LocaleCatalogMap = {
|
|
|
81
81
|
|
|
82
82
|
// Sea
|
|
83
83
|
"dolphin": { label: "ืืืืคืื", description: "ืืืืคืื ืืคืืจ ืืืง ืขื ืคื ืื ืืืืืืืช ืฉืืืืืช, ืกื ืคืืจ ืืื ืืขืืงื ืืื ื ืืืง" },
|
|
84
|
-
"whale": { label: "ืืืืืืชื", description: "ืืืืืืชื
|
|
84
|
+
"whale": { label: "ืืืืืืชื", description: "ืืืืืืชื ืืืื-ืกื ืคืืจ ืขื ืงื ืขื ืืืฃ ืืืืื ืืืื-ืืคืืจ ืืื, ืกื ืคืืจื ืืื ืืจืืืื ืืจืืฉ ืืืฉืืฉื ืืืืกื ืืจื ืงืืื" },
|
|
85
85
|
"shark": { label: "ืืจืืฉ", description: "ืืจืืฉ ืืื ืืืื ืขืืฆืืชื ืขื ืืืฃ ืืคืืจ ืืฆืืจืช ืืืจืคืื, ืฆื ืชืืชืื ืืื ืืฉืืจืืช ืฉื ืฉืื ืืื ืืืืช" },
|
|
86
86
|
"octopus": { label: "ืชืื ืื", description: "ืชืื ืื ืกืงืจื ืขื ืจืืฉ ืืืืจื, ืขืื ืืื ืืื ืืืืื ืืืืช ืืืืืืช ืืฉืืื ื ืืจืืขืืช ืืจืืืืช ืขื ืฉืืคืืืืืช ืื ืืงื" },
|
|
87
87
|
"sea-turtle": { label: "ืฆื ืื", description: "ืฆื ืื ืืื ื ื ืขื ืฉืจืืื ืืืืืืช ืืจืืง-ืืื, ืืคืืื ืืืืืืช ืกื ืคืืจ ืืคื ืื ืืืืืช ืืืงืืืืืช" },
|
|
88
88
|
"jellyfish": { label: "ืืืืื", description: "ืืืืื ืฉืงืืคื ืขื ืืืฃ ืืืืจ ืืฆืืจืช ืคืขืืื ืืืจืืขืืช ืืืืืืช ืืจืืืืช ื ืืจืจืืช" },
|
|
89
|
-
"crab": { label: "ืกืจืื", description: "ืกืจืื ืขื ืฉืจืืื ืืืื,
|
|
89
|
+
"crab": { label: "ืกืจืื", description: "ืกืจืื ืขื ืฉืจืืื ืืืื, ืื ืืฉืืจืืื ืจืื, ืืืงืืืื ืืืืืื ืืจืืืืื ืืชืจืืฆืฆืืช ืืฆืืื" },
|
|
90
90
|
"seahorse": { label: "ืกืืกืื ืื", description: "ืกืืกืื ืื ืืขืืจ ืขื ืื ื ืืกืืืกื ืืืื, ืจืืฉ ืืืื ืกืืก ืืกื ืคืืจ ืืื ืขืืื" },
|
|
91
91
|
|
|
92
92
|
// Small pets
|
|
93
|
-
"hamster": { label: "ืืืืจ", description: "ืืืืจ ืขืืื ืืคืจืืืชื ืขื
|
|
93
|
+
"hamster": { label: "ืืืืจ", description: "ืืืืจ ืขืืื ืืคืจืืืชื ืขื ืืืกื ืืืืื ืฉืื ืื ืื, ืืคืืช ืืขืืจืืช ืืขืื ืืื ืฉืืืจืืช ื ืืฆืฆืืช ืืืจืืืื" },
|
|
94
94
|
"guinea-pig": { label: "ืฉืจืงื", description: "ืฉืจืงื ืฉืื ืื ืขื ืคืจืืื ืจืื ืชืืช-ืฆืืขืืช, ืืื ืื ื ืืืื ืืคื ืื ืืชืืงืืช ืืขืจื ืืืช" },
|
|
95
|
-
"ferret": { label: "ืืืืก", description: "ืืืืก ืขื ืืืฃ ืืจืื ืืืืง, ืคืจืืื ืืืืื ื ืฉืื ืช-ืกืืืื, ืืกืืช ืฉืืื ืืื ืืืฆืืื
|
|
96
|
-
"parakeet": { label: "ืชืืืื", description: "ืชืืืื ืงืื ืืฆืืขื ืืจืืง-ืฆืืื ืืืืจืื ืขื ืจืืฉ ืืคืืกืคืก, ื ืงืืืืช ืขืื ืืื ืืืืช ืืื ื ืืจืื
|
|
95
|
+
"ferret": { label: "ืืืืก", description: "ืืืืก ืขื ืืืฃ ืืจืื ืืืืง, ืคืจืืื ืืืืื ื ืฉืื ืช-ืกืืืื, ืืกืืช ืฉืืื ืืื ืืืฆืืื ืฉืืืื" },
|
|
96
|
+
"parakeet": { label: "ืชืืืื", description: "ืชืืืื ืงืื ืืฆืืขื ืืจืืง-ืฆืืื ืืืืจืื ืขื ืจืืฉ ืืคืืกืคืก, ื ืงืืืืช ืขืื ืืื ืืืืช ืืื ื ืืจืื ืืืชืืื" },
|
|
97
97
|
"gerbil": { label: "ืืจืืื", description: "ืืจืืื ืืง ืืฆืืข ืืื-ืืื ืขื ืขืื ืืื ืืืืืืช ืืืืช, ืืืื ืืื ืืงืืคืืช ืืื ื ืืจืื ืืฆืืืฅ" },
|
|
98
98
|
|
|
99
99
|
// Reptiles
|
|
100
|
-
"snake": { label: "ื ืืฉ", description: "ื ืืฉ
|
|
101
|
-
"lizard": { label: "ืืืื", description: "ืืืื ืืจืืื ืขื ืืืฃ
|
|
102
|
-
"turtle": { label: "ืฆื ืืืฉื", description: "ืฆื ืืืฉื ืืืืืืชื ืขื ืฉืจืืื
|
|
100
|
+
"snake": { label: "ื ืืฉ", description: "ื ืืฉ ืืืืจืื ืขื ืืืฃ ืืืง ืืืืกื ืงืฉืงืฉืื, ืขืืจ ืืืืืืช ืืขืืื ืื, ืืืฉืื ืื ืืืืื ืืจืืฅ ืืืฉืื ืืคืืฆืืช ืืจืคืจืคืช" },
|
|
101
|
+
"lizard": { label: "ืืืื", description: "ืืืื ืืจืืื ืขื ืืืฃ ืืง ืืืืกื ืงืฉืงืฉืื, ืื ื ืืจืื ืืืื ืฉืื, ืจืืืืื ืขื ืืคืจืื ืืขืื ืืื ืืืืช ืืคืื ืืช ืืฆืืื" },
|
|
102
|
+
"turtle": { label: "ืฆื ืืืฉื", description: "ืฆื ืืืฉื ืืืืืืชื ืขื ืฉืจืืื ืงืืืจ ืืืขืืืจ, ืจืืืืื ืืกืื ืืช ืืืืกืืช ืงืฉืงืฉืื ืืคื ืื ืืืืืช ืืืงืืืืืช" },
|
|
103
103
|
"crocodile": { label: "ืชื ืื", description: "ืชื ืื ืขื ืงื ืขื ืงืฉืงืฉืื ืืฉืืจืืื ืื ืืืืื ืืจืืง ืืืช, ืืจืืื ืืจืื ืืื ืฉืื ืืื ืืืคืืื ืขืืฆืืชืืืช ืขื ืืคืจืื" },
|
|
104
104
|
"chameleon": { label: "ืืืงืืช", description: "ืืืงืืช ืืืืืคืช ืฆืืขืื ืขื ืจืืฉ ืืืื ืขื ืืฆื ืคืช, ืขืื ืืื ืืกืชืืืืืช ืืืืคื ืขืฆืืื ืืื ื ืืกืืืกื ืืืื" },
|
|
105
105
|
"gecko": { label: "ืฉืืืืช", description: "ืฉืืืืช ืงืื ื ืขื ืืืฃ ืฉืื ืื ืื ืืงื, ืขืื ืืื ืืืืืืช ืืื ืขืคืขืคืืื ืืืจืืืช ืืฆืืขืืช ืจืืืืช ืืืืงืืช" },
|
|
106
106
|
|
|
107
107
|
// Insects
|
|
108
108
|
"butterfly": { label: "ืคืจืคืจ", description: "ืคืจืคืจ ืขืืื ืขื ืื ืคืืื ืจืืืืช ืืฆืืขืื ืืืื, ืืืฃ ืืง ืืืืืฉืื ืืจืืืื" },
|
|
109
|
-
"bee": { label: "ืืืืจื", description: "ืืืืจืช ืืืฉ ืคืืืืชืืช ืขื ืคืกืื ืืฆืืขื ืฆืืื ืืฉืืืจ, ืื ืคืืื ืฉืงืืคืืช ืืจืืืืื ืืืืืงืืช
|
|
109
|
+
"bee": { label: "ืืืืจื", description: "ืืืืจืช ืืืฉ ืคืืืืชืืช ืขื ืคืกืื ืืฆืืขื ืฆืืื ืืฉืืืจ, ืื ืคืืื ืฉืงืืคืืช ืืจืืืืื ืืืืืงืืช ืืืืงืช ืคืจืืื" },
|
|
110
110
|
"ant": { label: "ื ืืื", description: "ื ืืื ืขืกืืงื ืขื ืืืฃ ืืื ืืืืืง, ืฉืฉ ืจืืืืื ืืงืืช, ืืืืฉืื ืืืืคืคืื ืืืกืชืืช ืืืงืืช" },
|
|
111
111
|
"spider": { label: "ืขืืืืฉ", description: "ืขืืืืฉ ืืขื ืฉืืื ื ืจืืืืื ืขื ืืื ืขืืืื, ืขืื ืืื ืืืืช ืืงืืืฆืืช ืืฉืขืจืืช ืืงืืช ืขื ืื ืืืคื" },
|
|
112
112
|
"ladybug": { label: "ืคืจืช ืืฉื ืจืื ื", description: "ืคืจืช ืืฉื ืจืื ื ืืืืื ืืขืืจื ืขื ืฉืจืืื ืขืืื ืืืืจืืง, ื ืงืืืืช ืฉืืืจืืช ื ืืขืืืช ืืจืืืืื ืขืืื ืืช ืืฆืืฆืืช" },
|
|
113
|
-
"dragonfly": { label: "ืฉืคืืจืืช", description: "ืฉืคืืจืืช ืืงื ืขื ืืืฃ ืืืจืืกื ืืืืื ื ืืืื-ืืจืืง, ืขืื ืืื
|
|
113
|
+
"dragonfly": { label: "ืฉืคืืจืืช", description: "ืฉืคืืจืืช ืืงื ืขื ืืืฃ ืืืจืืกื ืืืืื ื ืืืื-ืืจืืง, ืขืื ืืื ืืืจืืืืช ืขื ืงืืืช ืืืจืืข ืื ืคืืื ืฉืงืืคืืช ืืจืืืืช" },
|
|
114
114
|
"beetle": { label: "ืืืคืืฉืืช", description: "ืืืคืืฉืืช ืืฉืืจืืื ืช ืขื ืฉืจืืื ืงืฉื ืืืืจืืง, ืืืกื ืื ืคืืื ืืฆืืืขืื, ืจืืืืื ืืืชื ืืช ืืืืืฉืื ืงืฆืจืื" },
|
|
115
115
|
"grasshopper": { label: "ืืื", description: "ืืื ืืจืืง ืขื ืจืืืืื ืืืืจืืืช ืืจืืืืช ืืขืืฆืืชืืืช, ืื ืคืืื ืืงืืคืืืช ืืืืจื ืืื ืืืืืฉืื ืืจืืืื ืืืืื ืฉืื" },
|
|
116
116
|
"praying-mantis": { label: "ืืื ืฉืืื", description: "ืืื ืฉืืื ืืืืจื ืขื ืจืืฉ ืืฉืืืฉ, ืขืื ืืื ืืืจืืืืช ืืืืืืช ืืจืืืืื ืงืืืืืช ืขื ืงืืฆืื ืืืืืงืืช ืืชื ืืืช ืชืคืืื" },
|
|
117
117
|
"mosquito": { label: "ืืชืืฉ", description: "ืืชืืฉ ืืง ืขื ืจืืืืื ืืงืืช ืืจืืืืช, ืื ืคืืื ืฉืงืืคืืช ืฆืจืืช ืืืืง ืืืื ืืื" },
|
|
118
118
|
"scorpion": { label: "ืขืงืจื", description: "ืขืงืจื ืืืืจื ืขื ืืงืืขืื ืืฉืืจืืื ืื, ืืืงืืืื ืืืืืื ืืื ื ืืกืืืกื ืขื ืขืืงืฅ ืืืจื ืืขื ืืื" },
|
|
119
|
-
"caterpillar": { label: "ืืื", description: "ืืื ืฉืื ืื ืืืืืง ืขื
|
|
119
|
+
"caterpillar": { label: "ืืื", description: "ืืื ืฉืื ืื ืืืืืง ืขื ืฆืืฆืืช ืฉืืขืจ ืจืืืช, ืจืืืืื ืืขืืจืืช ืืืฆืืืช ืืขืืกื ืขืืืื ืขื ืขืื ืืจืืง" },
|
|
120
120
|
|
|
121
121
|
// Dinosaurs
|
|
122
|
-
"t-rex": { label: "ืืืจื ืืืืืจืืก ืจืงืก", description: "T-Rex ืขื ืงื ืขื ืจืืืืื ืืืืจืืืช ืขืืฆืืชืืืช, ืืจืืขืืช ืืขืืจืืช ืขื ืืคืจืื, ืืกืช ืขื ืงืืช ืืืื ืฉืื ืืื ืืืืืืช ืคืืืื ืืขืืจ
|
|
122
|
+
"t-rex": { label: "ืืืจื ืืืืืจืืก ืจืงืก", description: "T-Rex ืขื ืงื ืขื ืจืืืืื ืืืืจืืืช ืขืืฆืืชืืืช, ืืจืืขืืช ืืขืืจืืช ืขื ืืคืจืื, ืืกืช ืขื ืงืืช ืืืื ืฉืื ืืื ืืืืืืช ืคืืืื ืืขืืจ ืขืื ืืืืกื ืงืฉืงืฉืื" },
|
|
123
123
|
"velociraptor": { label: "ืืืืฆืืจืคืืืจ", description: "ืืืืฆืืจืคืืืจ ืจืื ืืื ืืฆื ืขื ืืคืจื ืืื, ืื ื ื ืืงืฉื ืืจืื ืืืฆืืื ืืืจืคื ืืช ืจืืื ื ืงืืืื" },
|
|
124
|
-
"triceratops": { label: "ืืจืืฆืจืืืคืก", description: "ืืจืืฆืจืืืคืก ืืฉืืจืืื ืขื
|
|
124
|
+
"triceratops": { label: "ืืจืืฆืจืืืคืก", description: "ืืจืืฆืจืืืคืก ืืฉืืจืืื ืขื ืืื ืฆืืืืจ ืืจืื ืืืื, ืฉืืืฉ ืงืจื ืืื ืืืืช ืืคื ืื ืืขืืื ืืืื ืขื ืืจืืข ืจืืืืื" },
|
|
125
125
|
"brachiosaurus": { label: "ืืจืืืืืืืจืืก", description: "ืืจืืืืืืืจืืก ืืชื ืฉื ืขื ืฆืืืืจ ืืจืื ืืืืคื ืืืชื ืืคืฉืจื ืืืืืข ืืฆืืจืืช ืืขืฆืื, ืจืืฉ ืงืื ืืจืืืืื ืืืืืืช ืขืืืืื" },
|
|
126
126
|
"stegosaurus": { label: "ืกืืืืืืืจืืก", description: "ืกืืืืืืืจืืก ืขื ืง ืขื ืฉืชื ืฉืืจืืช ืฉื ืืืืืช ืืืืืื ืืฆืืจืช ืืืืื ืืืืจื ืืื ืืื ื ืขื ืงืืฆืื" },
|
|
127
|
-
"pterodactyl": { label: "ืคืืจืืืงืืื", description: "ืคืืจืืืงืืื ืืขืืคืฃ ืขื ืื ืคืืื ืขืืจืืืช ืขื ืงืืืช, ืืงืืจ ืืจืื ืขื ืฉืื ืืื ืืืจืืืืช
|
|
127
|
+
"pterodactyl": { label: "ืคืืจืืืงืืื", description: "ืคืืจืืืงืืื ืืขืืคืฃ ืขื ืื ืคืืื ืขืืจืืืช ืขื ืงืืืช, ืืงืืจ ืืจืื ืขื ืฉืื ืืื ืืืจืืืืช ื ืืืื ืืืืืจ" },
|
|
128
128
|
"spinosaurus": { label: "ืกืคืื ืืืืืจืืก", description: "ืกืคืื ืืืืืจืืก ืืืจืฃ ืขื ืกื ืคืืจ ืืืื ืืืืจื ืืื, ืืจืืื ืืจืื ืืืื ืชื ืื ืืืจืืขืืช ืขืืฆืืชืืืช ืขื ืืคืจืื" },
|
|
129
129
|
"diplodocus": { label: "ืืืคืืืืืงืืก", description: "ืืืคืืืืืงืืก ืขื ืง ืขื ืืืฃ ืืจืื, ืื ื ืืง ืืฉืื ืืืืื ืฆืืืืจ ืืจืื ืืืืชื ืืืื, ืฉืื ืืื ืืืืืืช ืืชื ืืจืืืืื ืืืชื ืืช" },
|
|
130
130
|
"ankylosaurus": { label: "ืื ืงืืืืืืืจืืก", description: "ืื ืงืืืืืืืจืืก ืืืื ืื ืง ืืืืกื ืืืืืช ืฉืจืืื ืขืืื ืืงืืฆืื, ืขื ืืืช ืขืฆื ืขื ืงืืช ืืงืฆื ืื ืื" },
|
|
@@ -136,17 +136,17 @@ const map: LocaleCatalogMap = {
|
|
|
136
136
|
"dragon": { label: "ืืจืงืื", description: "ืืจืงืื ืืชื ืฉื ืขื ืื ืคืืื ืขืืจืืืช, ืงืฉืงืฉืื ืืฆืืืขืื, ืงืจื ืืื ืืขืืงืืืช, ืขืื ืืื ืืืืจืืช ืืขืฉื ืืกืชืืกื ืื ืืืจืื" },
|
|
137
137
|
"unicorn": { label: "ืื-ืงืจื", description: "ืื-ืงืจื ืืื ืืืืจ ืขื ืจืขืื ืืื ื ืคืกืืืืื ืืืจืืื ืืงืจื ืืืืื ืืกืืืกืืช ืืืืื ืคื ืื ื ืขื ืืฆืื" },
|
|
138
138
|
"phoenix": { label: "ืขืืฃ ืืืื", description: "ืขืืฃ ืืืื ืืืืืชื ืขื ื ืืฆืืช ืืืืืืช, ืืชืืืืช ืืืืืืืช ืืืืืืช, ื ืืฆืืช ืื ื ืืจืืืืช ื ืืจืจืืช ืืืืืืช ืืืงืงืืช ืืช ืงืฆืืช ืื ืคืื" },
|
|
139
|
-
"griffin": { label: "ืืจืืคืื", description: "ืืจืืคืื ืืืืจืืื ืขื ืจืืฉ, ืื ืคืืื ืืจืืืืื ืงืืืืืช ืขื ืืคืจืื ืฉื
|
|
140
|
-
"pegasus": { label: "ืคืืกืืก", description: "ืกืืก ืืืื ืฃ ืืื ืืืืจ ืขื ืื ืคืืื ืื ืืฆืืช, ืจืขืื ืืืจืืช ืื ืืืืืช
|
|
139
|
+
"griffin": { label: "ืืจืืคืื", description: "ืืจืืคืื ืืืืจืืื ืขื ืจืืฉ, ืื ืคืืื ืืจืืืืื ืงืืืืืช ืขื ืืคืจืื ืฉื ืขืื ืืืืฃ ืืืืจื ืฉืจืืจื ืฉื ืืจืื" },
|
|
140
|
+
"pegasus": { label: "ืคืืกืืก", description: "ืกืืก ืืืื ืฃ ืืื ืืืืจ ืขื ืื ืคืืื ืื ืืฆืืช, ืจืขืื ืืืจืืช ืื ืืืืืช ืื ืืืขืืื ืืื" },
|
|
141
141
|
"kraken": { label: "ืงืจืืงื", description: "ืืคืืฆืช ืื ืงืจืืงื ืขืฆืืื ืขื ืจืืฉ ืขื ืง, ืขืื ืืื ืืืืจืืช ืืืจืืขืืช ืชืื ืื ืขื ืงืืืช ืขื ืฉืืคืืืืืช ืื ืืงื ืืืชืคืชืืืช ืืืืขืืงืื" },
|
|
142
142
|
"capybara": { label: "ืงืคืืืจื", description: "ืืืจืกื ืืจืื-ืืืจืืงื ื ืฉืื ืืืืื" },
|
|
143
143
|
"sloth": { label: "ืขืฆืื", description: "ืืื ืง ืืืคืก ืืืื ืขื ืขืฆืื ืขื ืืืื ืขืืื" },
|
|
144
|
-
"red-panda": { label: "ืคื ืื ืืืืื", description: "ืืืื-ืืืืืง ืืืืื-ืืื ืงืื ืขื ืคื ืื
|
|
144
|
+
"red-panda": { label: "ืคื ืื ืืืืื", description: "ืืืื-ืืืืืง ืืืืื-ืืื ืงืื ืขื ืคื ืื ืืืืืืช ืฉืืขื" },
|
|
145
145
|
"raven": { label: "ืขืืจื ืฉืืืจ", description: "ืขืืจื ืฉืืืจ ืืืจืืง ืขื ืืื ืืื ืืืืื ืื" },
|
|
146
146
|
"axolotl": { label: "ืืงืกืืืืื", description: "ืกืืื ืืจื ืืืืืช ืืจืืื ืขื ืืืืื ื ืืฆืชืืื" },
|
|
147
|
-
"pangolin": { label: "ืคื ืืืืื", description: "ืืืื-ื ืืืื ืืฉืืจืืื
|
|
147
|
+
"pangolin": { label: "ืคื ืืืืื", description: "ืืืื-ื ืืืื ืืฉืืจืืื ืืืืกื ืงืฉืงืฉืื" },
|
|
148
148
|
"okapi": { label: "ืืืงืืคื", description: "ื'ืืจืคืช ืืขืจ ืขื ืจืืืืื ืืคืกื ืืืจื" },
|
|
149
|
-
"quokka": { label: "ืงืืืงื", description: "
|
|
149
|
+
"quokka": { label: "ืงืืืงื", description: "ืืื ืง ืืืก ืืืกืืจืื ืืืืื" },
|
|
150
150
|
"meerkat": { label: "ืกืืจืืืงืื", description: "ื ืืืื ืืคืจืืงืืืช ืขืืืืช" },
|
|
151
151
|
"emu": { label: "ืืื", description: "ืฆืืคืืจ ืจืืื ืืืกืืจืืืช ืืืืื ืืื ืืขืืคืคืช" },
|
|
152
152
|
"tarantula": { label: "ืืจื ืืืื", description: "ืขืืืืฉ ืฆืื ืืืื ืืฉืขืืจ" },
|
|
@@ -20,28 +20,28 @@ const map: LocaleCatalogMap = {
|
|
|
20
20
|
"steam": { label: "ืืืื", description: "ืืืื ืืื ืื ืขืืืื" },
|
|
21
21
|
"bubbles-underwater": { label: "ืืืขืืช ืืชืืช ืืืื", description: "ืืืขืืช ืขืืืืช ืืืื" },
|
|
22
22
|
"rain-on-glass": { label: "ืืฉื ืขื ืืืืืืช", description: "ืืืคืืช ืืืืืืช ืขื ืืืืืืช ืืืืืช" },
|
|
23
|
-
"pollen-light": { label: "
|
|
23
|
+
"pollen-light": { label: "ืืจืืจื ืืืงื ืืืืจ", description: "ืืืงืืงืื ืืืื ืืงืจื ืฉืืฉ" },
|
|
24
24
|
"water-droplets": { label: "ืืืคืืช ืืื", description: "ืืืคืืช ื ืฆืืืืช ืืขืืจ ืื ืืืฉืื" },
|
|
25
25
|
"falling-ash": { label: "ืืคืจ ื ืืคื", description: "ืืคืจ ืืคืืจ ืืง ื ืกืืฃ ืืืืืืจ" },
|
|
26
26
|
"fireflies": { label: "ืืืืืืืืช", description: "ืืชืืื ืืื-ืืืืื ืกื ืืืื ื ืกืืคืื, ืงืกื ืฉื ืืื ืงืืฅ" },
|
|
27
27
|
"incense-smoke": { label: "ืขืฉื ืงืืืจืช", description: "ืขืฉื ืงืืืจืช ืกืืื ืขืืื ืืื" },
|
|
28
28
|
"cigarette-smoke": { label: "ืขืฉื ืกืืืจืื", description: "ืขืฉื ืกืืืจืื ื ืฉืืฃ ืืกืชืืกื ืืขืื" },
|
|
29
29
|
"candle-glow": { label: "ืืืืจ ื ืจ", description: "ืืืจ ืืืืช ื ืจ ืืืื ืขื ืืืื" },
|
|
30
|
-
"glitter-sparkle": { label: "ื ืฆื ืฆืื /
|
|
30
|
+
"glitter-sparkle": { label: "ื ืฆื ืฆืื / ื ืฆื ืืฅ", description: "ืืืงืืงืื ืื ืฆื ืฆืื ืืืืืืจ, ืืงืฉืจ ืฉื ืืกืืื" },
|
|
31
31
|
"starfield": { label: "ืฉืื ืืืืืื", description: "ืฉืื ืืืื ืืืืืื ืขื ืืืืืื, ืจืงืข ืงืืกืื" },
|
|
32
32
|
"dandelion-seeds": { label: "ืืจืขื ืฉื ืืืจื", description: "ืคืืืื ืฉื ืฉื ืืืจื ื ืกืืคืช, ืจืื ืงืืฅ" },
|
|
33
|
-
"pollen-drift": { label: "
|
|
33
|
+
"pollen-drift": { label: "ืืจืืจื ืืืงื ื ืกืืคืื", description: "ืืจืืจื ืืืงื ืืืืืื-ืฆืืืืื ืืงืื ืืืืจ Golden Hour" },
|
|
34
34
|
"snowflakes-heavy": { label: "ืฉืื ืืื", description: "ืคืชืืชื ืฉืื ืืืืื ืืขืืื ืืืืืื ืืช ืืืืืืจ" },
|
|
35
35
|
"snowflakes-light": { label: "ืคืชืืชื ืฉืื ืงืืื", description: "ืคืชืืชื ืฉืื ืืืืืื ื ืกืืคืื" },
|
|
36
36
|
"raindrops-on-skin": { label: "ืืืคืืช ืืฉื ืขื ืืขืืจ", description: "ืืืคืืช ืืื ืืืืืืช ืืชืืกืคืืช ืขื ืืขืืจ" },
|
|
37
37
|
"bioluminescent-cloud": { label: "ืขื ื ืืืงืืงืื ืืื-ืืืืื ืกื ืืืื", description: "ืืืงืืงืื ืืืืจืื ืืืืื-ืืจืืง ื ืกืืคืื" },
|
|
38
38
|
"motion-streaks": { label: "ืคืกื ืชื ืืขื", description: "ืคืกื ืืฉืืืฉ ืชื ืืขื ืฉื ืงืืื ืืืืจืืช" },
|
|
39
39
|
// Location-studio extension (PR #2505 follow-up)
|
|
40
|
-
"cloudy": { label: "ืืขืื ื", description: "ืืืกืื ืขื ื ืื ืืืงื, ืืืจ ืืขืืจื" },
|
|
40
|
+
"cloudy": { label: "ืืขืื ื ืืืงืืช", description: "ืืืกืื ืขื ื ืื ืืืงื, ืืืจ ืืขืืจื" },
|
|
41
41
|
"storm": { label: "ืกืืคื", description: "ืกืขืจื ืืืืื ืขื ืืฉื ืืืจืงืื" },
|
|
42
|
-
"blizzard": { label: "ืกืืคืช ืฉืืืื", description: "ืกืืคืช ืฉืืืื ืืืืื, ืืืขื
|
|
42
|
+
"blizzard": { label: "ืกืืคืช ืฉืืืื", description: "ืกืืคืช ืฉืืืื ืืืืื, ืจืืืช ืืืขื ืืคืกืืช" },
|
|
43
43
|
"fog": { label: "ืขืจืคื ืกืืื", description: "ืขืจืคื ืกืืื ืขื ืจืืืช ื ืืืื" },
|
|
44
|
-
"mist": { label: "
|
|
44
|
+
"mist": { label: "ืขืจืคื ืงื", description: "ืขืจืคื ืงื ืืืชืคืืจ" },
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
export default map
|