@nodaro/shared 1.4.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.
Files changed (665) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +32 -0
  3. package/dist/index.cjs +12506 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +12269 -0
  6. package/dist/index.d.ts +12269 -0
  7. package/dist/index.js +11831 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +54 -0
  10. package/src/__tests__/__snapshots__/prompt-builder-segments.test.ts.snap +65 -0
  11. package/src/__tests__/ai-avatar-pricing.test.ts +321 -0
  12. package/src/__tests__/apply-video-negative-prompt.test.ts +76 -0
  13. package/src/__tests__/attach-columns.test.ts +28 -0
  14. package/src/__tests__/audio-crossfade-curves.test.ts +33 -0
  15. package/src/__tests__/build-model-menu.test.ts +58 -0
  16. package/src/__tests__/character-aspect-defaults.test.ts +142 -0
  17. package/src/__tests__/character-mention-slug.test.ts +199 -0
  18. package/src/__tests__/character-reference-photo-kinds.test.ts +32 -0
  19. package/src/__tests__/character-usage-mode.test.ts +147 -0
  20. package/src/__tests__/character-variant-assets.test.ts +142 -0
  21. package/src/__tests__/character-voice.test.ts +130 -0
  22. package/src/__tests__/cinematic-avatar-pricing.test.ts +119 -0
  23. package/src/__tests__/combine-transitions.test.ts +137 -0
  24. package/src/__tests__/component-types.test.ts +87 -0
  25. package/src/__tests__/condition-variables.test.ts +98 -0
  26. package/src/__tests__/credit-identifiers.test.ts +811 -0
  27. package/src/__tests__/default-video-provider.test.ts +63 -0
  28. package/src/__tests__/entity-image-handle.test.ts +43 -0
  29. package/src/__tests__/entity-variants.test.ts +33 -0
  30. package/src/__tests__/fal-lip-sync-sets.test.ts +31 -0
  31. package/src/__tests__/featured-entities.test.ts +33 -0
  32. package/src/__tests__/film-pricing.test.ts +64 -0
  33. package/src/__tests__/filter-condition.test.ts +285 -0
  34. package/src/__tests__/freecut-protocol.test.ts +35 -0
  35. package/src/__tests__/generate-text-items.test.ts +19 -0
  36. package/src/__tests__/generated-results.test.ts +50 -0
  37. package/src/__tests__/graph-utils.test.ts +618 -0
  38. package/src/__tests__/group-aggregation.test.ts +83 -0
  39. package/src/__tests__/i18n-locale-completeness.test.ts +156 -0
  40. package/src/__tests__/image-critic-node.test.ts +86 -0
  41. package/src/__tests__/image-mask-mode.test.ts +16 -0
  42. package/src/__tests__/image-ref-limit.test.ts +78 -0
  43. package/src/__tests__/inpaint-region.test.ts +24 -0
  44. package/src/__tests__/input-field-map-parity.test.ts +30 -0
  45. package/src/__tests__/json-evaluator.test.ts +289 -0
  46. package/src/__tests__/json-path.test.ts +64 -0
  47. package/src/__tests__/lip-sync-pricing.test.ts +142 -0
  48. package/src/__tests__/list-merge.test.ts +96 -0
  49. package/src/__tests__/list-sort.test.ts +134 -0
  50. package/src/__tests__/llm-models.test.ts +445 -0
  51. package/src/__tests__/location-mention-slug.test.ts +246 -0
  52. package/src/__tests__/locations-coverage-critic-schema.test.ts +92 -0
  53. package/src/__tests__/loop-delimiter.test.ts +39 -0
  54. package/src/__tests__/lottie-slots.test.ts +245 -0
  55. package/src/__tests__/model-catalog-flux2-resolutions.test.ts +21 -0
  56. package/src/__tests__/model-constants-location.test.ts +20 -0
  57. package/src/__tests__/model-constants.test.ts +122 -0
  58. package/src/__tests__/model-tree.test.ts +86 -0
  59. package/src/__tests__/no-internal-imports.test.ts +25 -0
  60. package/src/__tests__/node-default-mappings.test.ts +175 -0
  61. package/src/__tests__/node-mappable-fields.test.ts +7 -0
  62. package/src/__tests__/node-preset-export.test.ts +46 -0
  63. package/src/__tests__/node-preset-extract.test.ts +166 -0
  64. package/src/__tests__/node-refs-canonical.test.ts +54 -0
  65. package/src/__tests__/node-refs-combine.test.ts +54 -0
  66. package/src/__tests__/node-refs.test.ts +187 -0
  67. package/src/__tests__/node-runtime-keys.test.ts +99 -0
  68. package/src/__tests__/object-aspect-defaults.test.ts +59 -0
  69. package/src/__tests__/parameter-node-value.test.ts +137 -0
  70. package/src/__tests__/pinterest-url.test.ts +35 -0
  71. package/src/__tests__/pipeline-chat.test.ts +110 -0
  72. package/src/__tests__/pipeline-validation.test.ts +98 -0
  73. package/src/__tests__/presentation-utils.test.ts +1137 -0
  74. package/src/__tests__/producer-types.test.ts +47 -0
  75. package/src/__tests__/prompt-length-limits.test.ts +156 -0
  76. package/src/__tests__/provider-directive-defaults.test.ts +46 -0
  77. package/src/__tests__/reduce-strategy-registry.test.ts +43 -0
  78. package/src/__tests__/reference-board-templates.test.ts +33 -0
  79. package/src/__tests__/reference-roles.test.ts +36 -0
  80. package/src/__tests__/resolve-field-mappings.test.ts +110 -0
  81. package/src/__tests__/resolve-pipeline-model.test.ts +76 -0
  82. package/src/__tests__/scene-node-types.test.ts +80 -0
  83. package/src/__tests__/scraper-actors.test.ts +67 -0
  84. package/src/__tests__/seedance-2-catalog.test.ts +18 -0
  85. package/src/__tests__/seedance-2-credit-id.test.ts +23 -0
  86. package/src/__tests__/seedance-aspects.test.ts +52 -0
  87. package/src/__tests__/selector.test.ts +1151 -0
  88. package/src/__tests__/settled-with-limit.test.ts +214 -0
  89. package/src/__tests__/social-media-specs.test.ts +129 -0
  90. package/src/__tests__/sub-workflow-validation.test.ts +88 -0
  91. package/src/__tests__/switchx-pricing.test.ts +28 -0
  92. package/src/__tests__/to-connected-references.test.ts +153 -0
  93. package/src/__tests__/utilities.test.ts +541 -0
  94. package/src/__tests__/video-analysis-pricing.test.ts +58 -0
  95. package/src/__tests__/video-analysis.test.ts +63 -0
  96. package/src/__tests__/video-audio-capability.test.ts +204 -0
  97. package/src/__tests__/video-gen-providers.test.ts +28 -0
  98. package/src/__tests__/video-mode-aliases.test.ts +150 -0
  99. package/src/__tests__/video-ref-limits.test.ts +72 -0
  100. package/src/__tests__/video-utils.test.ts +303 -0
  101. package/src/__tests__/voice-changer-models.test.ts +33 -0
  102. package/src/__tests__/workflow-export-strip.test.ts +46 -0
  103. package/src/ai-avatar-pricing.ts +213 -0
  104. package/src/ancestor-refs.ts +48 -0
  105. package/src/animals.ts +231 -0
  106. package/src/audio-crossfade-curves.ts +73 -0
  107. package/src/audio-fx-presets.ts +64 -0
  108. package/src/avatar-payload-validators.ts +214 -0
  109. package/src/caption-styles.ts +31 -0
  110. package/src/character-aspect-defaults.ts +102 -0
  111. package/src/character-facets.ts +37 -0
  112. package/src/character-mention-slug.ts +166 -0
  113. package/src/character-usage-mode.ts +109 -0
  114. package/src/character-variant-assets.ts +121 -0
  115. package/src/character-voice.ts +151 -0
  116. package/src/cinematic-avatar-pricing.ts +111 -0
  117. package/src/clone-utils.ts +46 -0
  118. package/src/combine-transitions.ts +482 -0
  119. package/src/community.ts +112 -0
  120. package/src/component-types.ts +127 -0
  121. package/src/condition-variables.ts +65 -0
  122. package/src/credit-estimators/index.ts +15 -0
  123. package/src/credit-estimators/video-utils.ts +165 -0
  124. package/src/credit-identifiers.ts +304 -0
  125. package/src/entity-approval-types.ts +31 -0
  126. package/src/entity-aspect-defaults.ts +82 -0
  127. package/src/entity-asset-types.ts +296 -0
  128. package/src/entity-image-handle.ts +36 -0
  129. package/src/extra-refs.ts +139 -0
  130. package/src/featured-entities.ts +136 -0
  131. package/src/film-pricing.ts +117 -0
  132. package/src/filter-condition.ts +250 -0
  133. package/src/flux2-pricing.ts +18 -0
  134. package/src/freecut-protocol.ts +52 -0
  135. package/src/furniture.ts +167 -0
  136. package/src/generate-text-items.ts +15 -0
  137. package/src/generated-results.ts +63 -0
  138. package/src/group-aggregation.ts +75 -0
  139. package/src/hint-graph-types.ts +18 -0
  140. package/src/i18n/action-fx.ar.ts +89 -0
  141. package/src/i18n/action-fx.de.ts +89 -0
  142. package/src/i18n/action-fx.es.ts +89 -0
  143. package/src/i18n/action-fx.fr.ts +89 -0
  144. package/src/i18n/action-fx.he.ts +89 -0
  145. package/src/i18n/action-fx.hi.ts +89 -0
  146. package/src/i18n/action-fx.ja.ts +89 -0
  147. package/src/i18n/action-fx.ko.ts +89 -0
  148. package/src/i18n/action-fx.pt-BR.ts +89 -0
  149. package/src/i18n/action-fx.ru.ts +89 -0
  150. package/src/i18n/action-fx.zh-CN.ts +89 -0
  151. package/src/i18n/aesthetic.ar.ts +170 -0
  152. package/src/i18n/aesthetic.de.ts +48 -0
  153. package/src/i18n/aesthetic.es.ts +169 -0
  154. package/src/i18n/aesthetic.fr.ts +52 -0
  155. package/src/i18n/aesthetic.he.ts +169 -0
  156. package/src/i18n/aesthetic.hi.ts +55 -0
  157. package/src/i18n/aesthetic.ja.ts +165 -0
  158. package/src/i18n/aesthetic.ko.ts +169 -0
  159. package/src/i18n/aesthetic.pt-BR.ts +148 -0
  160. package/src/i18n/aesthetic.ru.ts +155 -0
  161. package/src/i18n/aesthetic.zh-CN.ts +172 -0
  162. package/src/i18n/animals.ar.ts +145 -0
  163. package/src/i18n/animals.de.ts +144 -0
  164. package/src/i18n/animals.es.ts +158 -0
  165. package/src/i18n/animals.fr.ts +144 -0
  166. package/src/i18n/animals.he.ts +155 -0
  167. package/src/i18n/animals.hi.ts +157 -0
  168. package/src/i18n/animals.ja.ts +159 -0
  169. package/src/i18n/animals.ko.ts +159 -0
  170. package/src/i18n/animals.pt-BR.ts +157 -0
  171. package/src/i18n/animals.ru.ts +155 -0
  172. package/src/i18n/animals.zh-CN.ts +155 -0
  173. package/src/i18n/atmosphere.ar.ts +49 -0
  174. package/src/i18n/atmosphere.de.ts +47 -0
  175. package/src/i18n/atmosphere.es.ts +50 -0
  176. package/src/i18n/atmosphere.fr.ts +47 -0
  177. package/src/i18n/atmosphere.he.ts +47 -0
  178. package/src/i18n/atmosphere.hi.ts +49 -0
  179. package/src/i18n/atmosphere.ja.ts +49 -0
  180. package/src/i18n/atmosphere.ko.ts +49 -0
  181. package/src/i18n/atmosphere.pt-BR.ts +49 -0
  182. package/src/i18n/atmosphere.ru.ts +47 -0
  183. package/src/i18n/atmosphere.zh-CN.ts +152 -0
  184. package/src/i18n/backdrop.ar.ts +53 -0
  185. package/src/i18n/backdrop.de.ts +46 -0
  186. package/src/i18n/backdrop.es.ts +54 -0
  187. package/src/i18n/backdrop.fr.ts +52 -0
  188. package/src/i18n/backdrop.he.ts +51 -0
  189. package/src/i18n/backdrop.hi.ts +59 -0
  190. package/src/i18n/backdrop.ja.ts +61 -0
  191. package/src/i18n/backdrop.ko.ts +59 -0
  192. package/src/i18n/backdrop.pt-BR.ts +59 -0
  193. package/src/i18n/backdrop.ru.ts +57 -0
  194. package/src/i18n/backdrop.zh-CN.ts +57 -0
  195. package/src/i18n/camera-format.ar.ts +40 -0
  196. package/src/i18n/camera-format.de.ts +37 -0
  197. package/src/i18n/camera-format.es.ts +41 -0
  198. package/src/i18n/camera-format.fr.ts +37 -0
  199. package/src/i18n/camera-format.he.ts +37 -0
  200. package/src/i18n/camera-format.hi.ts +42 -0
  201. package/src/i18n/camera-format.ja.ts +37 -0
  202. package/src/i18n/camera-format.ko.ts +37 -0
  203. package/src/i18n/camera-format.pt-BR.ts +46 -0
  204. package/src/i18n/camera-format.ru.ts +42 -0
  205. package/src/i18n/camera-format.zh-CN.ts +42 -0
  206. package/src/i18n/camera-motions.ar.ts +86 -0
  207. package/src/i18n/camera-motions.de.ts +74 -0
  208. package/src/i18n/camera-motions.es.ts +86 -0
  209. package/src/i18n/camera-motions.fr.ts +86 -0
  210. package/src/i18n/camera-motions.he.ts +86 -0
  211. package/src/i18n/camera-motions.hi.ts +99 -0
  212. package/src/i18n/camera-motions.ja.ts +99 -0
  213. package/src/i18n/camera-motions.ko.ts +99 -0
  214. package/src/i18n/camera-motions.pt-BR.ts +99 -0
  215. package/src/i18n/camera-motions.ru.ts +99 -0
  216. package/src/i18n/camera-motions.zh-CN.ts +99 -0
  217. package/src/i18n/character-fx.ar.ts +72 -0
  218. package/src/i18n/character-fx.de.ts +72 -0
  219. package/src/i18n/character-fx.es.ts +72 -0
  220. package/src/i18n/character-fx.fr.ts +72 -0
  221. package/src/i18n/character-fx.he.ts +72 -0
  222. package/src/i18n/character-fx.hi.ts +72 -0
  223. package/src/i18n/character-fx.ja.ts +72 -0
  224. package/src/i18n/character-fx.ko.ts +72 -0
  225. package/src/i18n/character-fx.pt-BR.ts +72 -0
  226. package/src/i18n/character-fx.ru.ts +72 -0
  227. package/src/i18n/character-fx.zh-CN.ts +72 -0
  228. package/src/i18n/color-look.ar.ts +50 -0
  229. package/src/i18n/color-look.de.ts +47 -0
  230. package/src/i18n/color-look.es.ts +50 -0
  231. package/src/i18n/color-look.fr.ts +50 -0
  232. package/src/i18n/color-look.he.ts +49 -0
  233. package/src/i18n/color-look.hi.ts +52 -0
  234. package/src/i18n/color-look.ja.ts +54 -0
  235. package/src/i18n/color-look.ko.ts +54 -0
  236. package/src/i18n/color-look.pt-BR.ts +54 -0
  237. package/src/i18n/color-look.ru.ts +52 -0
  238. package/src/i18n/color-look.zh-CN.ts +53 -0
  239. package/src/i18n/composition-effects.ar.ts +26 -0
  240. package/src/i18n/composition-effects.de.ts +25 -0
  241. package/src/i18n/composition-effects.es.ts +27 -0
  242. package/src/i18n/composition-effects.fr.ts +25 -0
  243. package/src/i18n/composition-effects.he.ts +25 -0
  244. package/src/i18n/composition-effects.hi.ts +27 -0
  245. package/src/i18n/composition-effects.ja.ts +27 -0
  246. package/src/i18n/composition-effects.ko.ts +27 -0
  247. package/src/i18n/composition-effects.pt-BR.ts +25 -0
  248. package/src/i18n/composition-effects.ru.ts +82 -0
  249. package/src/i18n/composition-effects.zh-CN.ts +25 -0
  250. package/src/i18n/era.ar.ts +37 -0
  251. package/src/i18n/era.de.ts +34 -0
  252. package/src/i18n/era.es.ts +37 -0
  253. package/src/i18n/era.fr.ts +37 -0
  254. package/src/i18n/era.he.ts +36 -0
  255. package/src/i18n/era.hi.ts +39 -0
  256. package/src/i18n/era.ja.ts +41 -0
  257. package/src/i18n/era.ko.ts +39 -0
  258. package/src/i18n/era.pt-BR.ts +41 -0
  259. package/src/i18n/era.ru.ts +121 -0
  260. package/src/i18n/era.zh-CN.ts +39 -0
  261. package/src/i18n/exposure-settings.ar.ts +28 -0
  262. package/src/i18n/exposure-settings.de.ts +26 -0
  263. package/src/i18n/exposure-settings.es.ts +28 -0
  264. package/src/i18n/exposure-settings.fr.ts +29 -0
  265. package/src/i18n/exposure-settings.he.ts +28 -0
  266. package/src/i18n/exposure-settings.hi.ts +31 -0
  267. package/src/i18n/exposure-settings.ja.ts +31 -0
  268. package/src/i18n/exposure-settings.ko.ts +31 -0
  269. package/src/i18n/exposure-settings.pt-BR.ts +31 -0
  270. package/src/i18n/exposure-settings.ru.ts +31 -0
  271. package/src/i18n/exposure-settings.zh-CN.ts +31 -0
  272. package/src/i18n/framing.ar.ts +78 -0
  273. package/src/i18n/framing.de.ts +73 -0
  274. package/src/i18n/framing.es.ts +78 -0
  275. package/src/i18n/framing.fr.ts +78 -0
  276. package/src/i18n/framing.he.ts +77 -0
  277. package/src/i18n/framing.hi.ts +82 -0
  278. package/src/i18n/framing.ja.ts +84 -0
  279. package/src/i18n/framing.ko.ts +82 -0
  280. package/src/i18n/framing.pt-BR.ts +84 -0
  281. package/src/i18n/framing.ru.ts +82 -0
  282. package/src/i18n/framing.zh-CN.ts +82 -0
  283. package/src/i18n/furniture.ar.ts +92 -0
  284. package/src/i18n/furniture.de.ts +93 -0
  285. package/src/i18n/furniture.es.ts +101 -0
  286. package/src/i18n/furniture.fr.ts +93 -0
  287. package/src/i18n/furniture.he.ts +101 -0
  288. package/src/i18n/furniture.hi.ts +101 -0
  289. package/src/i18n/furniture.ja.ts +101 -0
  290. package/src/i18n/furniture.ko.ts +101 -0
  291. package/src/i18n/furniture.pt-BR.ts +101 -0
  292. package/src/i18n/furniture.ru.ts +101 -0
  293. package/src/i18n/furniture.zh-CN.ts +101 -0
  294. package/src/i18n/held-prop.ar.ts +74 -0
  295. package/src/i18n/held-prop.de.ts +65 -0
  296. package/src/i18n/held-prop.es.ts +83 -0
  297. package/src/i18n/held-prop.fr.ts +74 -0
  298. package/src/i18n/held-prop.he.ts +73 -0
  299. package/src/i18n/held-prop.hi.ts +82 -0
  300. package/src/i18n/held-prop.ja.ts +84 -0
  301. package/src/i18n/held-prop.ko.ts +84 -0
  302. package/src/i18n/held-prop.pt-BR.ts +84 -0
  303. package/src/i18n/held-prop.ru.ts +82 -0
  304. package/src/i18n/held-prop.zh-CN.ts +82 -0
  305. package/src/i18n/index.ts +208 -0
  306. package/src/i18n/instrumentation.ar.ts +195 -0
  307. package/src/i18n/instrumentation.de.ts +195 -0
  308. package/src/i18n/instrumentation.es.ts +195 -0
  309. package/src/i18n/instrumentation.fr.ts +195 -0
  310. package/src/i18n/instrumentation.he.ts +195 -0
  311. package/src/i18n/instrumentation.hi.ts +195 -0
  312. package/src/i18n/instrumentation.ja.ts +195 -0
  313. package/src/i18n/instrumentation.ko.ts +195 -0
  314. package/src/i18n/instrumentation.pt-BR.ts +195 -0
  315. package/src/i18n/instrumentation.ru.ts +195 -0
  316. package/src/i18n/instrumentation.zh-CN.ts +195 -0
  317. package/src/i18n/lens.ar.ts +24 -0
  318. package/src/i18n/lens.de.ts +24 -0
  319. package/src/i18n/lens.es.ts +24 -0
  320. package/src/i18n/lens.fr.ts +24 -0
  321. package/src/i18n/lens.he.ts +24 -0
  322. package/src/i18n/lens.hi.ts +24 -0
  323. package/src/i18n/lens.ja.ts +24 -0
  324. package/src/i18n/lens.ko.ts +24 -0
  325. package/src/i18n/lens.pt-BR.ts +24 -0
  326. package/src/i18n/lens.ru.ts +25 -0
  327. package/src/i18n/lens.zh-CN.ts +24 -0
  328. package/src/i18n/lighting.ar.ts +86 -0
  329. package/src/i18n/lighting.de.ts +84 -0
  330. package/src/i18n/lighting.es.ts +89 -0
  331. package/src/i18n/lighting.fr.ts +84 -0
  332. package/src/i18n/lighting.he.ts +88 -0
  333. package/src/i18n/lighting.hi.ts +90 -0
  334. package/src/i18n/lighting.ja.ts +90 -0
  335. package/src/i18n/lighting.ko.ts +90 -0
  336. package/src/i18n/lighting.pt-BR.ts +90 -0
  337. package/src/i18n/lighting.ru.ts +88 -0
  338. package/src/i18n/lighting.zh-CN.ts +92 -0
  339. package/src/i18n/loop-subject.ar.ts +39 -0
  340. package/src/i18n/loop-subject.de.ts +39 -0
  341. package/src/i18n/loop-subject.es.ts +39 -0
  342. package/src/i18n/loop-subject.fr.ts +39 -0
  343. package/src/i18n/loop-subject.he.ts +39 -0
  344. package/src/i18n/loop-subject.hi.ts +39 -0
  345. package/src/i18n/loop-subject.ja.ts +39 -0
  346. package/src/i18n/loop-subject.ko.ts +39 -0
  347. package/src/i18n/loop-subject.pt-BR.ts +39 -0
  348. package/src/i18n/loop-subject.ru.ts +39 -0
  349. package/src/i18n/loop-subject.zh-CN.ts +39 -0
  350. package/src/i18n/materials.ar.ts +80 -0
  351. package/src/i18n/materials.de.ts +80 -0
  352. package/src/i18n/materials.es.ts +87 -0
  353. package/src/i18n/materials.fr.ts +80 -0
  354. package/src/i18n/materials.he.ts +86 -0
  355. package/src/i18n/materials.hi.ts +86 -0
  356. package/src/i18n/materials.ja.ts +88 -0
  357. package/src/i18n/materials.ko.ts +88 -0
  358. package/src/i18n/materials.pt-BR.ts +88 -0
  359. package/src/i18n/materials.ru.ts +86 -0
  360. package/src/i18n/materials.zh-CN.ts +86 -0
  361. package/src/i18n/mood.ar.ts +61 -0
  362. package/src/i18n/mood.de.ts +61 -0
  363. package/src/i18n/mood.es.ts +66 -0
  364. package/src/i18n/mood.fr.ts +61 -0
  365. package/src/i18n/mood.he.ts +64 -0
  366. package/src/i18n/mood.hi.ts +66 -0
  367. package/src/i18n/mood.ja.ts +66 -0
  368. package/src/i18n/mood.ko.ts +66 -0
  369. package/src/i18n/mood.pt-BR.ts +64 -0
  370. package/src/i18n/mood.ru.ts +64 -0
  371. package/src/i18n/mood.zh-CN.ts +64 -0
  372. package/src/i18n/music-genre.ar.ts +302 -0
  373. package/src/i18n/music-genre.de.ts +302 -0
  374. package/src/i18n/music-genre.es.ts +302 -0
  375. package/src/i18n/music-genre.fr.ts +302 -0
  376. package/src/i18n/music-genre.he.ts +302 -0
  377. package/src/i18n/music-genre.hi.ts +302 -0
  378. package/src/i18n/music-genre.ja.ts +302 -0
  379. package/src/i18n/music-genre.ko.ts +302 -0
  380. package/src/i18n/music-genre.pt-BR.ts +302 -0
  381. package/src/i18n/music-genre.ru.ts +302 -0
  382. package/src/i18n/music-genre.zh-CN.ts +302 -0
  383. package/src/i18n/music-mood.ar.ts +75 -0
  384. package/src/i18n/music-mood.de.ts +75 -0
  385. package/src/i18n/music-mood.es.ts +75 -0
  386. package/src/i18n/music-mood.fr.ts +75 -0
  387. package/src/i18n/music-mood.he.ts +75 -0
  388. package/src/i18n/music-mood.hi.ts +75 -0
  389. package/src/i18n/music-mood.ja.ts +75 -0
  390. package/src/i18n/music-mood.ko.ts +75 -0
  391. package/src/i18n/music-mood.pt-BR.ts +75 -0
  392. package/src/i18n/music-mood.ru.ts +75 -0
  393. package/src/i18n/music-mood.zh-CN.ts +75 -0
  394. package/src/i18n/person.ar.ts +638 -0
  395. package/src/i18n/person.de.ts +629 -0
  396. package/src/i18n/person.es.ts +645 -0
  397. package/src/i18n/person.fr.ts +621 -0
  398. package/src/i18n/person.he.ts +656 -0
  399. package/src/i18n/person.hi.ts +654 -0
  400. package/src/i18n/person.ja.ts +662 -0
  401. package/src/i18n/person.ko.ts +662 -0
  402. package/src/i18n/person.pt-BR.ts +656 -0
  403. package/src/i18n/person.ru.ts +656 -0
  404. package/src/i18n/person.zh-CN.ts +656 -0
  405. package/src/i18n/photo-genre.ar.ts +58 -0
  406. package/src/i18n/photo-genre.de.ts +52 -0
  407. package/src/i18n/photo-genre.es.ts +64 -0
  408. package/src/i18n/photo-genre.fr.ts +58 -0
  409. package/src/i18n/photo-genre.he.ts +62 -0
  410. package/src/i18n/photo-genre.hi.ts +63 -0
  411. package/src/i18n/photo-genre.ja.ts +65 -0
  412. package/src/i18n/photo-genre.ko.ts +63 -0
  413. package/src/i18n/photo-genre.pt-BR.ts +65 -0
  414. package/src/i18n/photo-genre.ru.ts +63 -0
  415. package/src/i18n/photo-genre.zh-CN.ts +63 -0
  416. package/src/i18n/photographer.ar.ts +75 -0
  417. package/src/i18n/photographer.de.ts +74 -0
  418. package/src/i18n/photographer.es.ts +77 -0
  419. package/src/i18n/photographer.fr.ts +77 -0
  420. package/src/i18n/photographer.he.ts +78 -0
  421. package/src/i18n/photographer.hi.ts +80 -0
  422. package/src/i18n/photographer.ja.ts +84 -0
  423. package/src/i18n/photographer.ko.ts +84 -0
  424. package/src/i18n/photographer.pt-BR.ts +83 -0
  425. package/src/i18n/photographer.ru.ts +78 -0
  426. package/src/i18n/photographer.zh-CN.ts +78 -0
  427. package/src/i18n/pose.ar.ts +95 -0
  428. package/src/i18n/pose.de.ts +96 -0
  429. package/src/i18n/pose.es.ts +104 -0
  430. package/src/i18n/pose.fr.ts +96 -0
  431. package/src/i18n/pose.he.ts +104 -0
  432. package/src/i18n/pose.hi.ts +104 -0
  433. package/src/i18n/pose.ja.ts +104 -0
  434. package/src/i18n/pose.ko.ts +104 -0
  435. package/src/i18n/pose.pt-BR.ts +104 -0
  436. package/src/i18n/pose.ru.ts +104 -0
  437. package/src/i18n/pose.zh-CN.ts +104 -0
  438. package/src/i18n/post-process-effects.ar.ts +25 -0
  439. package/src/i18n/post-process-effects.de.ts +24 -0
  440. package/src/i18n/post-process-effects.es.ts +26 -0
  441. package/src/i18n/post-process-effects.fr.ts +24 -0
  442. package/src/i18n/post-process-effects.he.ts +24 -0
  443. package/src/i18n/post-process-effects.hi.ts +26 -0
  444. package/src/i18n/post-process-effects.ja.ts +26 -0
  445. package/src/i18n/post-process-effects.ko.ts +26 -0
  446. package/src/i18n/post-process-effects.pt-BR.ts +24 -0
  447. package/src/i18n/post-process-effects.ru.ts +24 -0
  448. package/src/i18n/post-process-effects.zh-CN.ts +24 -0
  449. package/src/i18n/render-quality.ar.ts +34 -0
  450. package/src/i18n/render-quality.de.ts +30 -0
  451. package/src/i18n/render-quality.es.ts +35 -0
  452. package/src/i18n/render-quality.fr.ts +34 -0
  453. package/src/i18n/render-quality.he.ts +33 -0
  454. package/src/i18n/render-quality.hi.ts +39 -0
  455. package/src/i18n/render-quality.ja.ts +39 -0
  456. package/src/i18n/render-quality.ko.ts +39 -0
  457. package/src/i18n/render-quality.pt-BR.ts +37 -0
  458. package/src/i18n/render-quality.ru.ts +37 -0
  459. package/src/i18n/render-quality.zh-CN.ts +37 -0
  460. package/src/i18n/seasons.ar.ts +10 -0
  461. package/src/i18n/seasons.de.ts +10 -0
  462. package/src/i18n/seasons.es.ts +10 -0
  463. package/src/i18n/seasons.fr.ts +10 -0
  464. package/src/i18n/seasons.he.ts +10 -0
  465. package/src/i18n/seasons.hi.ts +10 -0
  466. package/src/i18n/seasons.ja.ts +10 -0
  467. package/src/i18n/seasons.ko.ts +10 -0
  468. package/src/i18n/seasons.pt-BR.ts +10 -0
  469. package/src/i18n/seasons.ru.ts +10 -0
  470. package/src/i18n/seasons.zh-CN.ts +10 -0
  471. package/src/i18n/setting.ar.ts +73 -0
  472. package/src/i18n/setting.de.ts +73 -0
  473. package/src/i18n/setting.es.ts +77 -0
  474. package/src/i18n/setting.fr.ts +73 -0
  475. package/src/i18n/setting.he.ts +76 -0
  476. package/src/i18n/setting.hi.ts +76 -0
  477. package/src/i18n/setting.ja.ts +78 -0
  478. package/src/i18n/setting.ko.ts +76 -0
  479. package/src/i18n/setting.pt-BR.ts +78 -0
  480. package/src/i18n/setting.ru.ts +76 -0
  481. package/src/i18n/setting.zh-CN.ts +76 -0
  482. package/src/i18n/style.ar.ts +55 -0
  483. package/src/i18n/style.de.ts +54 -0
  484. package/src/i18n/style.es.ts +54 -0
  485. package/src/i18n/style.fr.ts +54 -0
  486. package/src/i18n/style.he.ts +54 -0
  487. package/src/i18n/style.hi.ts +54 -0
  488. package/src/i18n/style.ja.ts +54 -0
  489. package/src/i18n/style.ko.ts +54 -0
  490. package/src/i18n/style.pt-BR.ts +56 -0
  491. package/src/i18n/style.ru.ts +54 -0
  492. package/src/i18n/style.zh-CN.ts +54 -0
  493. package/src/i18n/styling.ar.ts +295 -0
  494. package/src/i18n/styling.de.ts +285 -0
  495. package/src/i18n/styling.es.ts +317 -0
  496. package/src/i18n/styling.fr.ts +285 -0
  497. package/src/i18n/styling.he.ts +307 -0
  498. package/src/i18n/styling.hi.ts +323 -0
  499. package/src/i18n/styling.ja.ts +317 -0
  500. package/src/i18n/styling.ko.ts +311 -0
  501. package/src/i18n/styling.pt-BR.ts +301 -0
  502. package/src/i18n/styling.ru.ts +301 -0
  503. package/src/i18n/styling.zh-CN.ts +307 -0
  504. package/src/i18n/temporal.ar.ts +31 -0
  505. package/src/i18n/temporal.de.ts +24 -0
  506. package/src/i18n/temporal.es.ts +27 -0
  507. package/src/i18n/temporal.fr.ts +28 -0
  508. package/src/i18n/temporal.he.ts +31 -0
  509. package/src/i18n/temporal.hi.ts +31 -0
  510. package/src/i18n/temporal.ja.ts +31 -0
  511. package/src/i18n/temporal.ko.ts +31 -0
  512. package/src/i18n/temporal.pt-BR.ts +31 -0
  513. package/src/i18n/temporal.ru.ts +31 -0
  514. package/src/i18n/temporal.zh-CN.ts +31 -0
  515. package/src/i18n/transitions.ar.ts +97 -0
  516. package/src/i18n/transitions.de.ts +97 -0
  517. package/src/i18n/transitions.es.ts +97 -0
  518. package/src/i18n/transitions.fr.ts +97 -0
  519. package/src/i18n/transitions.he.ts +97 -0
  520. package/src/i18n/transitions.hi.ts +97 -0
  521. package/src/i18n/transitions.ja.ts +97 -0
  522. package/src/i18n/transitions.ko.ts +97 -0
  523. package/src/i18n/transitions.pt-BR.ts +97 -0
  524. package/src/i18n/transitions.ru.ts +97 -0
  525. package/src/i18n/transitions.zh-CN.ts +97 -0
  526. package/src/i18n/types.ts +158 -0
  527. package/src/i18n/vehicles.ar.ts +137 -0
  528. package/src/i18n/vehicles.de.ts +125 -0
  529. package/src/i18n/vehicles.es.ts +138 -0
  530. package/src/i18n/vehicles.fr.ts +125 -0
  531. package/src/i18n/vehicles.he.ts +136 -0
  532. package/src/i18n/vehicles.hi.ts +138 -0
  533. package/src/i18n/vehicles.ja.ts +138 -0
  534. package/src/i18n/vehicles.ko.ts +138 -0
  535. package/src/i18n/vehicles.pt-BR.ts +136 -0
  536. package/src/i18n/vehicles.ru.ts +136 -0
  537. package/src/i18n/vehicles.zh-CN.ts +136 -0
  538. package/src/i18n/voice-character.ar.ts +126 -0
  539. package/src/i18n/voice-character.de.ts +126 -0
  540. package/src/i18n/voice-character.es.ts +126 -0
  541. package/src/i18n/voice-character.fr.ts +126 -0
  542. package/src/i18n/voice-character.he.ts +126 -0
  543. package/src/i18n/voice-character.hi.ts +126 -0
  544. package/src/i18n/voice-character.ja.ts +126 -0
  545. package/src/i18n/voice-character.ko.ts +126 -0
  546. package/src/i18n/voice-character.pt-BR.ts +126 -0
  547. package/src/i18n/voice-character.ru.ts +126 -0
  548. package/src/i18n/voice-character.zh-CN.ts +126 -0
  549. package/src/i18n/voice-delivery.ar.ts +77 -0
  550. package/src/i18n/voice-delivery.de.ts +77 -0
  551. package/src/i18n/voice-delivery.es.ts +77 -0
  552. package/src/i18n/voice-delivery.fr.ts +77 -0
  553. package/src/i18n/voice-delivery.he.ts +77 -0
  554. package/src/i18n/voice-delivery.hi.ts +77 -0
  555. package/src/i18n/voice-delivery.ja.ts +77 -0
  556. package/src/i18n/voice-delivery.ko.ts +77 -0
  557. package/src/i18n/voice-delivery.pt-BR.ts +77 -0
  558. package/src/i18n/voice-delivery.ru.ts +77 -0
  559. package/src/i18n/voice-delivery.zh-CN.ts +77 -0
  560. package/src/i18n/weapons.ar.ts +115 -0
  561. package/src/i18n/weapons.de.ts +114 -0
  562. package/src/i18n/weapons.es.ts +116 -0
  563. package/src/i18n/weapons.fr.ts +103 -0
  564. package/src/i18n/weapons.he.ts +114 -0
  565. package/src/i18n/weapons.hi.ts +116 -0
  566. package/src/i18n/weapons.ja.ts +116 -0
  567. package/src/i18n/weapons.ko.ts +116 -0
  568. package/src/i18n/weapons.pt-BR.ts +114 -0
  569. package/src/i18n/weapons.ru.ts +114 -0
  570. package/src/i18n/weapons.zh-CN.ts +114 -0
  571. package/src/image-critic-node.ts +61 -0
  572. package/src/image-critic-types.ts +40 -0
  573. package/src/index.ts +866 -0
  574. package/src/inject-upstream.ts +15 -0
  575. package/src/inpaint-region.ts +51 -0
  576. package/src/json-evaluator.ts +732 -0
  577. package/src/json-path.ts +52 -0
  578. package/src/lip-sync-pricing.ts +90 -0
  579. package/src/list-merge.ts +40 -0
  580. package/src/list-sort.ts +122 -0
  581. package/src/list-source-resolver.ts +50 -0
  582. package/src/llm-models.ts +245 -0
  583. package/src/location-mention-slug.ts +291 -0
  584. package/src/location-preset-catalog-map.ts +128 -0
  585. package/src/loop-delimiter.ts +73 -0
  586. package/src/lora-routing.ts +95 -0
  587. package/src/lottie-overlay-catalog.ts +175 -0
  588. package/src/lottie-slots.ts +309 -0
  589. package/src/model-catalog.ts +2386 -0
  590. package/src/model-constants.ts +1910 -0
  591. package/src/model-tree.ts +120 -0
  592. package/src/monetization.ts +15 -0
  593. package/src/multi-pick.ts +42 -0
  594. package/src/node-default-mappings.ts +262 -0
  595. package/src/node-mappable-fields.ts +70 -0
  596. package/src/node-preset-export.ts +56 -0
  597. package/src/node-preset-extract.ts +147 -0
  598. package/src/node-refs.ts +253 -0
  599. package/src/node-runtime-keys.ts +117 -0
  600. package/src/object-aspect-defaults.ts +72 -0
  601. package/src/object-picker-types.ts +22 -0
  602. package/src/parameter-node-value.ts +284 -0
  603. package/src/pinterest-url.ts +28 -0
  604. package/src/pipeline-chat.ts +72 -0
  605. package/src/pipeline-defaults.ts +318 -0
  606. package/src/pipeline-events.ts +162 -0
  607. package/src/pipeline-state-types.ts +196 -0
  608. package/src/pipeline-types.ts +647 -0
  609. package/src/pipeline-validation.ts +87 -0
  610. package/src/presentation-types.ts +23 -0
  611. package/src/presentation-utils.ts +397 -0
  612. package/src/producer-types.ts +188 -0
  613. package/src/progress-curve.ts +99 -0
  614. package/src/provider-directive-defaults.ts +69 -0
  615. package/src/reduce-strategy-registry.ts +121 -0
  616. package/src/reference-board-templates.ts +81 -0
  617. package/src/reference-roles.ts +153 -0
  618. package/src/reference-sheet/__tests__/board-to-column.test.ts +20 -0
  619. package/src/reference-sheet/__tests__/catalog.test.ts +50 -0
  620. package/src/reference-sheet/__tests__/cost.test.ts +38 -0
  621. package/src/reference-sheet/__tests__/no-drift.test.ts +28 -0
  622. package/src/reference-sheet/__tests__/panel-plan.test.ts +61 -0
  623. package/src/reference-sheet/__tests__/panel-prompts.test.ts +17 -0
  624. package/src/reference-sheet/__tests__/plan-generation.test.ts +72 -0
  625. package/src/reference-sheet/__tests__/presets.test.ts +54 -0
  626. package/src/reference-sheet/__tests__/types.test.ts +24 -0
  627. package/src/reference-sheet/catalog.ts +144 -0
  628. package/src/reference-sheet/cost.ts +37 -0
  629. package/src/reference-sheet/credit-id.ts +7 -0
  630. package/src/reference-sheet/index.ts +8 -0
  631. package/src/reference-sheet/panel-plan.ts +65 -0
  632. package/src/reference-sheet/panel-prompts.ts +14 -0
  633. package/src/reference-sheet/plan-generation.ts +79 -0
  634. package/src/reference-sheet/presets.ts +77 -0
  635. package/src/reference-sheet/types.ts +92 -0
  636. package/src/repeat-types.ts +97 -0
  637. package/src/resolve-field-mappings.ts +119 -0
  638. package/src/route-filter.ts +80 -0
  639. package/src/scene-helper-types.ts +249 -0
  640. package/src/scene-node-types.ts +281 -0
  641. package/src/scraper-actors.ts +57 -0
  642. package/src/scraper-output-schemas.ts +25 -0
  643. package/src/seasons.ts +45 -0
  644. package/src/selector.ts +864 -0
  645. package/src/settled-with-limit.ts +42 -0
  646. package/src/shot-element.ts +43 -0
  647. package/src/social-media-specs.ts +121 -0
  648. package/src/social-post.ts +24 -0
  649. package/src/sub-workflow-validation.ts +78 -0
  650. package/src/supported-fonts.ts +40 -0
  651. package/src/surround.ts +113 -0
  652. package/src/switchx-pricing.ts +33 -0
  653. package/src/text-separators.ts +59 -0
  654. package/src/to-connected-references.ts +77 -0
  655. package/src/types.ts +272 -0
  656. package/src/variant-job-id.ts +17 -0
  657. package/src/vehicles.ts +213 -0
  658. package/src/video-analysis-pricing.ts +74 -0
  659. package/src/video-analysis.ts +127 -0
  660. package/src/video-duration.ts +25 -0
  661. package/src/voice-changer-models.ts +36 -0
  662. package/src/voice-matcher-types.ts +37 -0
  663. package/src/voices.ts +92 -0
  664. package/src/weapons.ts +190 -0
  665. package/src/workflow-export.ts +153 -0
@@ -0,0 +1,82 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "Extreme Wide Shot", description: "विशाल वातावरण में subject बहुत छोटा" },
6
+ "wide-shot": { label: "Wide Shot", description: "आसपास के माहौल के साथ पूरा बदन" },
7
+ "medium-wide-shot": { label: "Medium Wide", description: "घुटनों से ऊपर subject" },
8
+ "medium-shot": { label: "Medium Shot", description: "कमर से ऊपर subject" },
9
+ "medium-close-up": { label: "Medium Close-up", description: "छाती से ऊपर subject" },
10
+ "close-up": { label: "Close-up", description: "Frame भरते हुए subject का चेहरा" },
11
+ "extreme-close-up": { label: "Extreme Close-up", description: "चेहरे की एक feature का तंग detail" },
12
+ "ecu-eye": { label: "ECU: आँख", description: "Sergio Leone शैली का extreme close-up, एक आँख पर तंग" },
13
+ "ecu-mouth": { label: "ECU: होंठ/मुँह", description: "मुँह, होंठ और दाँतों पर तंग extreme close-up" },
14
+ "ecu-hands": { label: "ECU: हाथ", description: "हाथों पर तंग extreme close-up" },
15
+ "big-close-up": { label: "Big Close-up (BCU)", description: "Standard close-up से तंग, बस ठोड़ी से माथे तक का चेहरा" },
16
+ "choker": { label: "Choker Shot", description: "गले पर framed, केवल सिर और गर्दन, अंतरंग तीव्रता" },
17
+ "italian-shot": { label: "Italian Shot / Trinity Shot", description: "Sergio Leone Western trope: केवल आँखों पर crop किया हुआ ECU" },
18
+ "insert": { label: "Insert", description: "किसी वस्तु का detail shot" },
19
+ "macro": { label: "Macro", description: "छोटे subject का अत्यधिक नज़दीकी detail" },
20
+ "full-shot": { label: "Full Shot", description: "Frame में सिर-से-पैर तक पूरा बदन" },
21
+ "cowboy-shot": { label: "Cowboy Shot", description: "जाँघ के बीच से ऊपर, क्लासिक Western framing" },
22
+ "head-to-knees": { label: "सिर से घुटनों तक", description: "सिर से लेकर घुटनों तक" },
23
+ "head-to-hip": { label: "सिर से कूल्हे तक", description: "सिर से लेकर कूल्हे तक" },
24
+ "half-body": { label: "आधा बदन", description: "साफ़ कमर-से-ऊपर portrait" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "Eye Level", description: "Subject की आँख की ऊँचाई पर camera" },
28
+ "high-angle": { label: "High Angle", description: "Subject के ऊपर से नीचे देखता camera" },
29
+ "low-angle": { label: "Low Angle", description: "Subject के नीचे से ऊपर देखता camera" },
30
+ "overhead": { label: "Overhead", description: "सीधा ऊपर से god's eye view" },
31
+ "worms-eye-angle": { label: "Worm's Eye", description: "ज़मीन से अत्यधिक नीचे का कोण" },
32
+ "dutch-angle": { label: "Dutch Angle", description: "Tilted canted horizon" },
33
+ "birds-eye": { label: "Bird's Eye", description: "ऊँचा aerial overhead view" },
34
+ "slightly-downward": { label: "थोड़ा नीचे", description: "ऊपर से कोमल tilt, selfie-शैली" },
35
+
36
+ // Coverage
37
+ "single": { label: "Single", description: "एक subject की साफ़ shot" },
38
+ "two-shot": { label: "Two-Shot", description: "Frame में दोनों subjects" },
39
+ "three-shot": { label: "Three-Shot", description: "Frame में तीन subjects" },
40
+ "over-the-shoulder-framing": { label: "Over The Shoulder", description: "एक subject के कंधे के पीछे से दूसरे पर" },
41
+ "reverse-shot": { label: "Reverse Shot", description: "पिछली shot का विपरीत POV" },
42
+ "pov-framing": { label: "POV", description: "Subject की आँखों से" },
43
+ "selfie-framing": { label: "Selfie", description: "बाँह की दूरी पर self-portrait" },
44
+ "mirror-selfie": { label: "Mirror Selfie", description: "Mirror के प्रतिबिंब में phone दिखाई देता है" },
45
+ "gym-mirror-selfie": { label: "Gym Mirror Selfie", description: "Gym mirror से 3/4 side-back angle" },
46
+ "through-glass": { label: "काँच के पार", description: "अग्रभूमि के काँच के पार से framed" },
47
+ "top-down-flat-lay": { label: "Top-down Flat Lay", description: "सतह पर वस्तुओं की overhead arrangement" },
48
+ "establishing-shot": { label: "Establishing Shot", description: "Wide environmental shot, subject छोटा" },
49
+ "dirty-single": { label: "Dirty Single", description: "किनारे पर दूसरे पात्र के साथ single" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "Rule of Thirds", description: "Thirds intersection पर subject" },
53
+ "centered": { label: "केंद्रित", description: "Subject बिल्कुल बीच में, सममित" },
54
+ "headroom-tight": { label: "Headroom Tight", description: "Subject का सिर frame के top के पास" },
55
+ "negative-space": { label: "Negative Space", description: "खाली जगह के साथ subject offset" },
56
+ "leading-lines": { label: "Leading Lines", description: "रेखाएँ नज़र को subject की ओर खींचती हैं" },
57
+ "3x3-grid-collage": { label: "3×3 Grid Collage", description: "बदलावों की 3×3 grid में subject" },
58
+ "diptych": { label: "Diptych", description: "Two-frame side-by-side composition" },
59
+ "triptych": { label: "Triptych", description: "Three-frame composition" },
60
+ "multi-frame-mosaic": { label: "Multi-frame Mosaic", description: "छोटे tiles के mosaic से बना चेहरा" },
61
+ "contact-sheet": { label: "Contact Sheet", description: "Thumbnails का photo contact sheet" },
62
+ "magazine-spread": { label: "Magazine Spread", description: "Typography के साथ two-page magazine layout" },
63
+ "cutaway-cross-section": { label: "Cutaway / Cross-Section", description: "दीवारें हटाई हुई architectural cross-section" },
64
+
65
+ // Vantage
66
+ "front-on": { label: "सामने से", description: "Camera की ओर देखता हुआ subject" },
67
+ "three-quarter-front": { label: "Three-Quarter Front", description: "सामने से थोड़ा off-axis" },
68
+ "profile-left": { label: "Profile बाएँ", description: "Side view, subject का बायाँ" },
69
+ "profile-right": { label: "Profile दाएँ", description: "Side view, subject का दायाँ" },
70
+ "three-quarter-back": { label: "Three-Quarter Back", description: "पीछे से off-axis" },
71
+ "behind": { label: "पीछे से", description: "सीधा rear view" },
72
+ "side-back-angle": { label: "Side-Back Angle", description: "एक कंधे के पीछे से 3/4 view" },
73
+ "golden-spiral": { label: "Golden Spiral", description: "Fibonacci ratio spiral पर composition" },
74
+ "frame-within-frame": { label: "Frame Within a Frame", description: "अंदरूनी architectural element से framed subject" },
75
+ "s-curve": { label: "S-Curve", description: "नज़र को निर्देशित करता घुमावदार diagonal flow" },
76
+ "diagonal-composition": { label: "Diagonal", description: "Frame के पार जाती मज़बूत diagonal रेखा" },
77
+ "triangular-composition": { label: "Triangular", description: "तीन-बिंदु त्रिकोणीय arrangement" },
78
+ "symmetrical-mirror": { label: "Symmetrical / Mirror", description: "बिल्कुल बाएँ-दाएँ सममिति" },
79
+ "vignette-composition": { label: "Vignette", description: "केंद्र पर ध्यान केंद्रित करता भारी peripheral darkening" },
80
+ }
81
+
82
+ export default map
@@ -0,0 +1,84 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "エクストリーム・ワイドショット", description: "広大な環境の中で被写体が小さく見える" },
6
+ "wide-shot": { label: "ワイドショット", description: "周囲を含めた全身" },
7
+ "medium-wide-shot": { label: "ミディアム・ワイド", description: "膝から上の被写体" },
8
+ "medium-shot": { label: "ミディアムショット", description: "腰から上の被写体" },
9
+ "medium-close-up": { label: "ミディアム・クローズアップ", description: "胸から上の被写体" },
10
+ "close-up": { label: "クローズアップ", description: "顔がフレームを満たす" },
11
+ "extreme-close-up": { label: "エクストリーム・クローズアップ", description: "顔の特徴部分のタイトな詳細" },
12
+ "ecu-eye": { label: "ECU:目", description: "Sergio Leone風のエクストリーム・クローズアップ、片目に寄った構図" },
13
+ "ecu-mouth": { label: "ECU:唇/口", description: "口、唇、歯に寄ったエクストリーム・クローズアップ" },
14
+ "ecu-hands": { label: "ECU:手", description: "手に寄ったエクストリーム・クローズアップ" },
15
+ "big-close-up": { label: "ビッグ・クローズアップ(BCU)", description: "標準のクローズアップよりタイトに、顎から額までの顔のみ" },
16
+ "choker": { label: "チョーカーショット", description: "喉のラインで構図、頭と首だけ、親密な強度" },
17
+ "italian-shot": { label: "イタリアンショット/トリニティショット", description: "Sergio Leoneのウエスタン定番:目だけにクロップしたECU" },
18
+ "insert": { label: "インサート", description: "物体のディテールショット" },
19
+ "macro": { label: "マクロ", description: "小さな被写体の極端な拡大" },
20
+ "full-shot": { label: "フルショット", description: "頭からつま先まで全身がフレーム内に収まる" },
21
+ "cowboy-shot": { label: "カウボーイショット", description: "太もも中央から上、クラシックな西部劇のフレーミング" },
22
+ "head-to-knees": { label: "頭から膝まで", description: "頭から膝までを写す" },
23
+ "head-to-hip": { label: "頭から腰まで", description: "頭から腰までを写す" },
24
+ "half-body": { label: "ハーフボディ", description: "クリーンな腰上のポートレート" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "目線の高さ", description: "被写体の目の高さにカメラ" },
28
+ "high-angle": { label: "ハイアングル", description: "被写体の上から見下ろすカメラ" },
29
+ "low-angle": { label: "ローアングル", description: "被写体の下から見上げるカメラ" },
30
+ "overhead": { label: "オーバーヘッド", description: "真上からの神の視点" },
31
+ "worms-eye-angle": { label: "ワームズアイ", description: "地面からの極端なローアングル" },
32
+ "dutch-angle": { label: "ダッチアングル", description: "傾けたカントの水平線" },
33
+ "birds-eye": { label: "バーズアイ", description: "高い空中からの俯瞰ビュー" },
34
+ "slightly-downward": { label: "わずかに下向き", description: "上から軽く傾けた自撮り風" },
35
+
36
+ // Coverage
37
+ "single": { label: "シングル", description: "1人だけのクリーンなショット" },
38
+ "two-shot": { label: "ツーショット", description: "2人の被写体がフレーム内" },
39
+ "three-shot": { label: "スリーショット", description: "3人の被写体がフレーム内" },
40
+ "over-the-shoulder-framing": { label: "オーバー・ザ・ショルダー", description: "1人の肩越しに別の人物を見る" },
41
+ "reverse-shot": { label: "リバースショット", description: "前のショットの逆視点" },
42
+ "pov-framing": { label: "POV", description: "被写体の目を通した視点" },
43
+ "selfie-framing": { label: "セルフィー", description: "腕を伸ばした自撮り" },
44
+ "mirror-selfie": { label: "鏡の自撮り", description: "鏡の反射に映るスマホ" },
45
+ "gym-mirror-selfie": { label: "ジムの鏡自撮り", description: "ジムの鏡越しに3/4横後ろからの角度" },
46
+ "through-glass": { label: "ガラス越し", description: "前景のガラス越しのフレーミング" },
47
+ "top-down-flat-lay": { label: "トップダウン・フラットレイ", description: "表面に並べられた物の俯瞰配置" },
48
+ "establishing-shot": { label: "エスタブリッシングショット", description: "被写体は小さく、広い環境ショット" },
49
+ "dirty-single": { label: "ダーティ・シングル", description: "別の人物が端に少し映り込むシングル" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "三分割法", description: "三分割の交点に被写体を配置" },
53
+ "centered": { label: "中央配置", description: "被写体を中央に置いた左右対称構図" },
54
+ "headroom-tight": { label: "ヘッドルーム・タイト", description: "被写体の頭がフレーム上端近く" },
55
+ "negative-space": { label: "ネガティブスペース", description: "被写体を片側に寄せて空きを作る" },
56
+ "leading-lines": { label: "リーディングライン", description: "線が視線を被写体へ導く" },
57
+ "3x3-grid-collage": { label: "3×3グリッド・コラージュ", description: "3×3グリッドで複数バリエーション" },
58
+ "diptych": { label: "ディプティク", description: "2枚並べた構図" },
59
+ "triptych": { label: "トリプティク", description: "3枚並べた構図" },
60
+ "multi-frame-mosaic": { label: "マルチフレーム・モザイク", description: "小さなタイルから構成された顔のモザイク" },
61
+ "contact-sheet": { label: "コンタクトシート", description: "サムネイルのコンタクトシート風配置" },
62
+ "magazine-spread": { label: "雑誌見開き", description: "タイポグラフィ付きの雑誌2ページ見開きレイアウト" },
63
+ "cutaway-cross-section": { label: "カットアウェイ/断面", description: "壁を剥がした建築断面図" },
64
+
65
+ // Vantage
66
+ "front-on": { label: "正面", description: "被写体がカメラに正対する" },
67
+ "three-quarter-front": { label: "前方3/4", description: "正面からわずかにずれた角度" },
68
+ "profile-left": { label: "左プロフィール", description: "被写体の左側の横顔" },
69
+ "profile-right": { label: "右プロフィール", description: "被写体の右側の横顔" },
70
+ "three-quarter-back": { label: "後方3/4", description: "後ろからのオフアクシス" },
71
+ "behind": { label: "真後ろ", description: "真後ろからの視点" },
72
+ "side-back-angle": { label: "サイドバック・アングル", description: "片肩越しの3/4後方ビュー" },
73
+
74
+ // Additional composition
75
+ "golden-spiral": { label: "黄金螺旋", description: "フィボナッチ比の螺旋に基づく構図" },
76
+ "frame-within-frame": { label: "フレーム・イン・フレーム", description: "室内の建築要素で被写体を囲む構図" },
77
+ "s-curve": { label: "S字カーブ", description: "視線を導くしなやかな対角の流れ" },
78
+ "diagonal-composition": { label: "対角構図", description: "フレームを横切る強い対角線" },
79
+ "triangular-composition": { label: "三角構図", description: "三点による三角形の配置" },
80
+ "symmetrical-mirror": { label: "シンメトリー/ミラー", description: "完全な左右対称" },
81
+ "vignette-composition": { label: "ヴィネット", description: "周辺を強く暗くして中央に焦点を集める" },
82
+ }
83
+
84
+ export default map
@@ -0,0 +1,82 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "익스트림 와이드 샷", description: "광활한 환경 속 작은 피사체입니다" },
6
+ "wide-shot": { label: "와이드 샷", description: "주변 환경과 함께 보이는 전신입니다" },
7
+ "medium-wide-shot": { label: "미디엄 와이드", description: "무릎 위 피사체입니다" },
8
+ "medium-shot": { label: "미디엄 샷", description: "허리 위 피사체입니다" },
9
+ "medium-close-up": { label: "미디엄 클로즈업", description: "가슴 위 피사체입니다" },
10
+ "close-up": { label: "클로즈업", description: "프레임을 가득 채운 피사체의 얼굴입니다" },
11
+ "extreme-close-up": { label: "익스트림 클로즈업", description: "얼굴 일부의 타이트한 디테일입니다" },
12
+ "ecu-eye": { label: "ECU: 눈", description: "Sergio Leone 스타일의 익스트림 클로즈업, 한쪽 눈에 타이트하게 잡힙니다" },
13
+ "ecu-mouth": { label: "ECU: 입술/입", description: "입, 입술, 치아에 타이트하게 잡힌 익스트림 클로즈업입니다" },
14
+ "ecu-hands": { label: "ECU: 손", description: "손에 타이트하게 잡힌 익스트림 클로즈업입니다" },
15
+ "big-close-up": { label: "빅 클로즈업 (BCU)", description: "표준 클로즈업보다 더 타이트한, 턱부터 이마까지의 얼굴만입니다" },
16
+ "choker": { label: "초커 샷", description: "목 부위에 프레임, 머리와 목만, 친밀한 강도입니다" },
17
+ "italian-shot": { label: "이탈리안 샷 / 트리니티 샷", description: "Sergio Leone 서부극 트로프: 눈만 잘라낸 ECU입니다" },
18
+ "insert": { label: "인서트", description: "사물의 디테일 샷입니다" },
19
+ "macro": { label: "매크로", description: "작은 피사체의 극단적인 클로즈 디테일입니다" },
20
+ "full-shot": { label: "풀 샷", description: "머리부터 발끝까지 전신이 프레임에 들어갑니다" },
21
+ "cowboy-shot": { label: "카우보이 샷", description: "허벅지 중간부터 위로, 클래식한 서부극 프레이밍입니다" },
22
+ "head-to-knees": { label: "머리부터 무릎까지", description: "머리부터 무릎까지의 프레이밍입니다" },
23
+ "head-to-hip": { label: "머리부터 엉덩이까지", description: "머리부터 엉덩이까지의 프레이밍입니다" },
24
+ "half-body": { label: "반신", description: "허리 위의 깔끔한 인물 사진입니다" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "눈높이", description: "피사체의 눈높이에 위치한 카메라입니다" },
28
+ "high-angle": { label: "하이 앵글", description: "피사체 위에서 내려다보는 카메라입니다" },
29
+ "low-angle": { label: "로우 앵글", description: "피사체 아래에서 올려다보는 카메라입니다" },
30
+ "overhead": { label: "오버헤드", description: "정수직 탑다운의 신의 시점입니다" },
31
+ "worms-eye-angle": { label: "웜즈 아이", description: "지면에서 위를 보는 극단적 로우 앵글입니다" },
32
+ "dutch-angle": { label: "더치 앵글", description: "기울어진 수평선의 캔티드 프레임입니다" },
33
+ "birds-eye": { label: "버즈 아이", description: "위에서 내려다보는 고고도 항공 뷰입니다" },
34
+ "slightly-downward": { label: "약간 내려다보는", description: "셀카 스타일의 부드러운 위 기울기입니다" },
35
+
36
+ // Coverage
37
+ "single": { label: "싱글", description: "한 명의 피사체만 깔끔하게 담은 샷입니다" },
38
+ "two-shot": { label: "투 샷", description: "두 명의 피사체가 함께 프레임에 담깁니다" },
39
+ "three-shot": { label: "쓰리 샷", description: "세 명의 피사체가 프레임에 담깁니다" },
40
+ "over-the-shoulder-framing": { label: "오버 더 숄더", description: "한 피사체의 어깨 너머로 다른 피사체를 봅니다" },
41
+ "reverse-shot": { label: "리버스 샷", description: "이전 샷의 반대 시점입니다" },
42
+ "pov-framing": { label: "POV", description: "피사체의 눈을 통해 보는 시점입니다" },
43
+ "selfie-framing": { label: "셀카", description: "팔 길이만큼 떨어진 셀프 포트레이트입니다" },
44
+ "mirror-selfie": { label: "거울 셀카", description: "거울 반사에 휴대폰이 보이는 구도입니다" },
45
+ "gym-mirror-selfie": { label: "헬스장 거울 셀카", description: "헬스장 거울을 통한 3/4 측후면 앵글입니다" },
46
+ "through-glass": { label: "유리 너머", description: "전경 유리를 통해 프레임된 구도입니다" },
47
+ "top-down-flat-lay": { label: "탑다운 플랫 레이", description: "표면 위 사물들의 오버헤드 배치입니다" },
48
+ "establishing-shot": { label: "설정 샷", description: "넓은 환경 샷, 피사체가 작게 보입니다" },
49
+ "dirty-single": { label: "더티 싱글", description: "가장자리에 다른 캐릭터가 살짝 보이는 싱글입니다" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "삼분할 법칙", description: "삼분할 교차점에 위치한 피사체입니다" },
53
+ "centered": { label: "센터드", description: "정중앙, 좌우 대칭의 피사체입니다" },
54
+ "headroom-tight": { label: "헤드룸 타이트", description: "프레임 상단에 가까운 피사체의 머리입니다" },
55
+ "negative-space": { label: "네거티브 스페이스", description: "빈 공간과 함께 한쪽으로 치우친 피사체입니다" },
56
+ "leading-lines": { label: "리딩 라인", description: "시선을 피사체로 이끄는 선들입니다" },
57
+ "3x3-grid-collage": { label: "3×3 그리드 콜라주", description: "다양한 변형이 담긴 3×3 그리드 속 피사체입니다" },
58
+ "diptych": { label: "딥티크", description: "두 프레임이 나란히 놓인 구도입니다" },
59
+ "triptych": { label: "트립티크", description: "세 프레임으로 구성된 구도입니다" },
60
+ "multi-frame-mosaic": { label: "멀티 프레임 모자이크", description: "작은 타일들의 모자이크로 만든 얼굴입니다" },
61
+ "contact-sheet": { label: "콘택트 시트", description: "썸네일이 배열된 사진 콘택트 시트입니다" },
62
+ "magazine-spread": { label: "매거진 스프레드", description: "타이포그래피가 있는 두 페이지짜리 잡지 레이아웃입니다" },
63
+ "cutaway-cross-section": { label: "컷어웨이 / 단면도", description: "벽이 벗겨진 건축 단면도입니다" },
64
+
65
+ // Vantage
66
+ "front-on": { label: "정면", description: "카메라를 마주보는 피사체입니다" },
67
+ "three-quarter-front": { label: "3/4 정면", description: "정면에서 살짝 비스듬한 각도입니다" },
68
+ "profile-left": { label: "왼쪽 프로필", description: "피사체의 왼쪽에서 본 측면 뷰입니다" },
69
+ "profile-right": { label: "오른쪽 프로필", description: "피사체의 오른쪽에서 본 측면 뷰입니다" },
70
+ "three-quarter-back": { label: "3/4 후면", description: "뒤에서 비스듬히 본 각도입니다" },
71
+ "behind": { label: "뒤", description: "피사체의 정후면 뷰입니다" },
72
+ "side-back-angle": { label: "측후면 앵글", description: "한쪽 어깨 뒤에서 본 3/4 뷰입니다" },
73
+ "golden-spiral": { label: "황금 나선", description: "피보나치 비율의 나선 위에 배치된 구도입니다" },
74
+ "frame-within-frame": { label: "프레임 속 프레임", description: "내부 건축 요소로 둘러싸인 피사체 구도입니다" },
75
+ "s-curve": { label: "S 커브", description: "구불구불한 대각선의 흐름이 시선을 이끕니다" },
76
+ "diagonal-composition": { label: "대각선 구도", description: "프레임을 가로지르는 강한 대각선입니다" },
77
+ "triangular-composition": { label: "삼각형 구도", description: "세 점으로 이루어진 삼각형 배치입니다" },
78
+ "symmetrical-mirror": { label: "대칭 / 미러", description: "정확한 좌우 대칭의 구도입니다" },
79
+ "vignette-composition": { label: "비네트", description: "주변부를 강하게 어둡게 처리해 중앙에 시선을 집중시킵니다" },
80
+ }
81
+
82
+ export default map
@@ -0,0 +1,84 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "Plano Geral Extremo", description: "Sujeito minúsculo em ambiente vasto" },
6
+ "wide-shot": { label: "Plano Geral", description: "Corpo inteiro com o entorno" },
7
+ "medium-wide-shot": { label: "Plano Aberto Médio", description: "Sujeito da altura dos joelhos para cima" },
8
+ "medium-shot": { label: "Plano Médio", description: "Sujeito da cintura para cima" },
9
+ "medium-close-up": { label: "Primeiro Plano Médio", description: "Sujeito do peito para cima" },
10
+ "close-up": { label: "Primeiro Plano", description: "Rosto do sujeito preenchendo o quadro" },
11
+ "extreme-close-up": { label: "Primeiríssimo Plano", description: "Detalhe fechado de um traço do rosto" },
12
+ "ecu-eye": { label: "ECU: Olho", description: "Primeiríssimo plano no estilo Sergio Leone, fechado em um único olho" },
13
+ "ecu-mouth": { label: "ECU: Lábios/Boca", description: "Primeiríssimo plano fechado na boca, lábios e dentes" },
14
+ "ecu-hands": { label: "ECU: Mãos", description: "Primeiríssimo plano fechado nas mãos" },
15
+ "big-close-up": { label: "Big Close-up (BCU)", description: "Mais fechado que o close-up padrão, apenas o rosto do queixo à testa" },
16
+ "choker": { label: "Plano Choker", description: "Enquadrado na garganta, apenas cabeça e pescoço, intensidade íntima" },
17
+ "italian-shot": { label: "Plano Italiano / Trinity", description: "Tropo do Western de Sergio Leone: ECU recortando apenas nos olhos" },
18
+ "insert": { label: "Inserto", description: "Plano-detalhe de um objeto" },
19
+ "macro": { description: "Detalhe extremo de um pequeno sujeito" },
20
+ "full-shot": { label: "Plano Inteiro", description: "Corpo inteiro da cabeça aos pés no quadro" },
21
+ "cowboy-shot": { description: "Da metade da coxa para cima, enquadramento clássico de Western" },
22
+ "head-to-knees": { label: "Da Cabeça aos Joelhos", description: "Da cabeça até os joelhos" },
23
+ "head-to-hip": { label: "Da Cabeça ao Quadril", description: "Da cabeça até o quadril" },
24
+ "half-body": { label: "Meio Corpo", description: "Retrato limpo da cintura para cima" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "Altura dos Olhos", description: "Câmera na altura dos olhos do sujeito" },
28
+ "high-angle": { label: "Plongée", description: "Câmera acima do sujeito olhando para baixo" },
29
+ "low-angle": { label: "Contra-plongée", description: "Câmera abaixo do sujeito olhando para cima" },
30
+ "overhead": { label: "Vertical Direta", description: "Vista direta de cima para baixo, olho de Deus" },
31
+ "worms-eye-angle": { label: "Olho de Verme", description: "Ângulo extremamente baixo a partir do chão" },
32
+ "dutch-angle": { description: "Linha do horizonte inclinada e canted" },
33
+ "birds-eye": { description: "Vista aérea de cima" },
34
+ "slightly-downward": { label: "Levemente para Baixo", description: "Inclinação suave por cima, estilo selfie" },
35
+
36
+ // Coverage
37
+ "single": { label: "Plano Individual", description: "Plano limpo de um único sujeito" },
38
+ "two-shot": { label: "Plano de Dois", description: "Os dois sujeitos no quadro" },
39
+ "three-shot": { label: "Plano de Três", description: "Três sujeitos no quadro" },
40
+ "over-the-shoulder-framing": { label: "Sobre o Ombro", description: "Por trás do ombro de um sujeito até outro" },
41
+ "reverse-shot": { label: "Contraplano", description: "POV oposto ao plano anterior" },
42
+ "pov-framing": { description: "Pelo olhar do sujeito" },
43
+ "selfie-framing": { label: "Selfie", description: "Autorretrato com o braço estendido" },
44
+ "mirror-selfie": { label: "Selfie no Espelho", description: "Celular visível no reflexo do espelho" },
45
+ "gym-mirror-selfie": { label: "Selfie no Espelho da Academia", description: "Ângulo 3/4 lateral-traseiro pelo espelho da academia" },
46
+ "through-glass": { label: "Através do Vidro", description: "Enquadrado por uma vidraça em primeiro plano" },
47
+ "top-down-flat-lay": { label: "Flat Lay de Cima", description: "Arranjo aéreo de itens sobre uma superfície" },
48
+ "establishing-shot": { label: "Plano de Estabelecimento", description: "Plano amplo de ambiente, sujeito pequeno" },
49
+ "dirty-single": { description: "Single com outro personagem na borda do quadro" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "Regra dos Terços", description: "Sujeito numa intersecção dos terços" },
53
+ "centered": { label: "Centralizada", description: "Sujeito no centro, simétrico" },
54
+ "headroom-tight": { label: "Headroom Apertado", description: "Cabeça do sujeito perto do topo do quadro" },
55
+ "negative-space": { label: "Espaço Negativo", description: "Sujeito deslocado com espaço vazio" },
56
+ "leading-lines": { label: "Linhas Condutoras", description: "Linhas guiam o olhar até o sujeito" },
57
+ "3x3-grid-collage": { label: "Colagem em Grade 3×3", description: "Sujeito numa grade 3×3 de variações" },
58
+ "diptych": { label: "Díptico", description: "Composição em dois quadros lado a lado" },
59
+ "triptych": { label: "Tríptico", description: "Composição em três quadros" },
60
+ "multi-frame-mosaic": { label: "Mosaico Multi-frame", description: "Rosto montado a partir de um mosaico de pequenos azulejos" },
61
+ "contact-sheet": { label: "Folha-Contato", description: "Folha-contato de fotos em miniatura" },
62
+ "magazine-spread": { label: "Diagramação de Revista", description: "Spread de revista em duas páginas com tipografia" },
63
+ "cutaway-cross-section": { label: "Corte Transversal", description: "Corte arquitetônico com paredes removidas" },
64
+
65
+ // Vantage
66
+ "front-on": { label: "De Frente", description: "Sujeito de frente para a câmera" },
67
+ "three-quarter-front": { label: "Três-Quartos de Frente", description: "Levemente fora do eixo a partir da frente" },
68
+ "profile-left": { label: "Perfil Esquerdo", description: "Vista lateral, lado esquerdo do sujeito" },
69
+ "profile-right": { label: "Perfil Direito", description: "Vista lateral, lado direito do sujeito" },
70
+ "three-quarter-back": { label: "Três-Quartos de Trás", description: "Fora do eixo a partir de trás" },
71
+ "behind": { label: "Por Trás", description: "Vista direta por trás" },
72
+ "side-back-angle": { label: "Ângulo Lateral-Traseiro", description: "Vista 3/4 por trás de um dos ombros" },
73
+
74
+ // Additional composition
75
+ "golden-spiral": { label: "Espiral Dourada", description: "Composição na espiral da proporção de Fibonacci" },
76
+ "frame-within-frame": { label: "Quadro Dentro de Quadro", description: "Sujeito emoldurado por elemento arquitetônico interno" },
77
+ "s-curve": { label: "Curva em S", description: "Fluxo diagonal sinuoso guiando o olhar" },
78
+ "diagonal-composition": { label: "Diagonal", description: "Linha diagonal forte cortando o quadro" },
79
+ "triangular-composition": { label: "Triangular", description: "Arranjo triangular em três pontos" },
80
+ "symmetrical-mirror": { label: "Simétrica / Espelhada", description: "Simetria exata da esquerda para a direita" },
81
+ "vignette-composition": { label: "Vinheta", description: "Forte escurecimento periférico focando o centro" },
82
+ }
83
+
84
+ export default map
@@ -0,0 +1,82 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "Сверхдальний план", description: "Объект крошечный в обширной среде" },
6
+ "wide-shot": { label: "Дальний план", description: "Полный рост с окружением" },
7
+ "medium-wide-shot": { label: "Средне-дальний", description: "Объект от колен и выше" },
8
+ "medium-shot": { label: "Средний план", description: "Объект от пояса и выше" },
9
+ "medium-close-up": { label: "Средне-крупный", description: "Объект от груди и выше" },
10
+ "close-up": { label: "Крупный план", description: "Лицо объекта заполняет кадр" },
11
+ "extreme-close-up": { label: "Сверхкрупный план", description: "Деталь черты лица" },
12
+ "ecu-eye": { label: "ECU: Глаз", description: "Сверхкрупный план в стиле Sergio Leone, сжатый на одном глазу" },
13
+ "ecu-mouth": { label: "ECU: Губы/Рот", description: "Сверхкрупный план, сжатый на рте, губах и зубах" },
14
+ "ecu-hands": { label: "ECU: Руки", description: "Сверхкрупный план, сжатый на руках" },
15
+ "big-close-up": { label: "Большой крупный план (BCU)", description: "Плотнее стандартного крупного плана, только лицо от подбородка до лба" },
16
+ "choker": { label: "Choker Shot", description: "Кадрирование на горле, только голова и шея, интимная интенсивность" },
17
+ "italian-shot": { label: "Итальянский план / Trinity Shot", description: "Троп вестерна Sergio Leone: ECU с обрезкой только по глазам" },
18
+ "insert": { label: "Инсерт", description: "Деталь объекта" },
19
+ "macro": { label: "Макро", description: "Сверхблизкая деталь маленького объекта" },
20
+ "full-shot": { label: "Полный план", description: "Всё тело с головы до пят в кадре" },
21
+ "cowboy-shot": { label: "Ковбойский план", description: "От середины бедра, классическое вестерн-кадрирование" },
22
+ "head-to-knees": { label: "Голова до колен", description: "От головы до колен" },
23
+ "head-to-hip": { label: "Голова до бёдер", description: "От головы до бёдер" },
24
+ "half-body": { label: "Поясной портрет", description: "Чистый поясной портрет" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "На уровне глаз", description: "Камера на высоте глаз объекта" },
28
+ "high-angle": { label: "Верхний ракурс", description: "Камера над объектом, смотрит вниз" },
29
+ "low-angle": { label: "Нижний ракурс", description: "Камера под объектом, смотрит вверх" },
30
+ "overhead": { label: "Сверху", description: "Прямой вид сверху, глаз бога" },
31
+ "worms-eye-angle": { label: "С земли", description: "Экстремальный нижний ракурс с земли" },
32
+ "dutch-angle": { label: "Голландский угол", description: "Наклонённый горизонт" },
33
+ "birds-eye": { label: "С высоты птичьего полёта", description: "Высокий воздушный вид сверху" },
34
+ "slightly-downward": { label: "Слегка сверху", description: "Лёгкий наклон сверху, в стиле селфи" },
35
+
36
+ // Coverage
37
+ "single": { label: "Одиночный", description: "Чистый кадр одного объекта" },
38
+ "two-shot": { label: "Двойной", description: "Оба объекта в кадре" },
39
+ "three-shot": { label: "Тройной", description: "Три объекта в кадре" },
40
+ "over-the-shoulder-framing": { label: "Через плечо", description: "Через плечо одного на другого" },
41
+ "reverse-shot": { label: "Обратный кадр", description: "Противоположная точка съёмки" },
42
+ "pov-framing": { label: "POV", description: "Глазами объекта" },
43
+ "selfie-framing": { label: "Селфи", description: "Автопортрет на расстоянии вытянутой руки" },
44
+ "mirror-selfie": { label: "Селфи в зеркале", description: "Телефон виден в отражении зеркала" },
45
+ "gym-mirror-selfie": { label: "Селфи в зеркале спортзала", description: "Угол сзади-сбоку через зеркало в спортзале" },
46
+ "through-glass": { label: "Через стекло", description: "Кадр через переднее стеклянное полотно" },
47
+ "top-down-flat-lay": { label: "Плоская выкладка сверху", description: "Расположение предметов на поверхности сверху" },
48
+ "establishing-shot": { label: "Установочный план", description: "Широкий план места действия, объект мал" },
49
+ "dirty-single": { label: "Грязный одиночный", description: "Одиночный с другим персонажем у края" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "Правило третей", description: "Объект на пересечении третей" },
53
+ "centered": { label: "По центру", description: "Объект точно в центре, симметрично" },
54
+ "headroom-tight": { label: "Минимум места над головой", description: "Голова объекта у верхнего края кадра" },
55
+ "negative-space": { label: "Негативное пространство", description: "Объект смещён, пустое пространство" },
56
+ "leading-lines": { label: "Направляющие линии", description: "Линии ведут взгляд к объекту" },
57
+ "3x3-grid-collage": { label: "Коллаж 3×3", description: "Объект в сетке вариаций 3×3" },
58
+ "diptych": { label: "Диптих", description: "Двухкадровая композиция бок о бок" },
59
+ "triptych": { label: "Триптих", description: "Трёхкадровая композиция" },
60
+ "multi-frame-mosaic": { label: "Мультикадровая мозаика", description: "Лицо, собранное из мозаики маленьких плиток" },
61
+ "contact-sheet": { label: "Контактный лист", description: "Контактный лист с миниатюрами" },
62
+ "magazine-spread": { label: "Журнальный разворот", description: "Двухстраничный журнальный макет с типографикой" },
63
+ "cutaway-cross-section": { label: "Разрез / Поперечное сечение", description: "Архитектурный разрез со снятыми стенами" },
64
+
65
+ // Vantage
66
+ "front-on": { label: "Спереди", description: "Объект лицом к камере" },
67
+ "three-quarter-front": { label: "Три четверти спереди", description: "Слегка не по оси спереди" },
68
+ "profile-left": { label: "Профиль слева", description: "Вид сбоку, левая сторона объекта" },
69
+ "profile-right": { label: "Профиль справа", description: "Вид сбоку, правая сторона объекта" },
70
+ "three-quarter-back": { label: "Три четверти сзади", description: "Не по оси сзади" },
71
+ "behind": { label: "Сзади", description: "Прямой вид сзади" },
72
+ "side-back-angle": { label: "Угол сзади-сбоку", description: "Три четверти из-за одного плеча" },
73
+ "golden-spiral": { label: "Золотая спираль", description: "Композиция по спирали Фибоначчи" },
74
+ "frame-within-frame": { label: "Кадр в кадре", description: "Объект обрамлён внутренним архитектурным элементом" },
75
+ "s-curve": { label: "S-образная кривая", description: "Извилистый диагональный поток, ведущий взгляд" },
76
+ "diagonal-composition": { label: "Диагональная", description: "Сильная диагональ, рассекающая кадр" },
77
+ "triangular-composition": { label: "Треугольная", description: "Трёхточечная треугольная компоновка" },
78
+ "symmetrical-mirror": { label: "Симметрия / Зеркало", description: "Точная лево-правая симметрия" },
79
+ "vignette-composition": { label: "Виньетка", description: "Сильное затемнение по краям, фокус в центре" },
80
+ }
81
+
82
+ export default map
@@ -0,0 +1,82 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "大远景", description: "主体在广阔环境中显得渺小" },
6
+ "wide-shot": { label: "远景", description: "全身加周围环境" },
7
+ "medium-wide-shot": { label: "中远景", description: "膝盖以上的主体" },
8
+ "medium-shot": { label: "中景", description: "腰部以上的主体" },
9
+ "medium-close-up": { label: "中近景", description: "胸部以上的主体" },
10
+ "close-up": { label: "近景", description: "脸部充满画面" },
11
+ "extreme-close-up": { label: "大特写", description: "面部某一特征的紧凑细节" },
12
+ "ecu-eye": { label: "大特写:眼睛", description: "Sergio Leone 风格的大特写,紧贴单只眼睛" },
13
+ "ecu-mouth": { label: "大特写:唇/口", description: "紧贴嘴部、嘴唇与牙齿的大特写" },
14
+ "ecu-hands": { label: "大特写:手", description: "紧贴手部的大特写" },
15
+ "big-close-up": { label: "Big Close-up (BCU)", description: "比标准近景更紧,只取从下巴到额头的脸部" },
16
+ "choker": { label: "颈部特写", description: "在喉部位置取景,只见头颈,亲密的强烈感" },
17
+ "italian-shot": { label: "意大利镜头 / Trinity Shot", description: "Sergio Leone 西部片惯用手法:仅截取双眼的大特写" },
18
+ "insert": { label: "插入镜头", description: "对某物体的细节镜头" },
19
+ "macro": { label: "微距", description: "对小型主体的极近距细节" },
20
+ "full-shot": { label: "全身镜头", description: "全身入画" },
21
+ "cowboy-shot": { label: "牛仔镜头", description: "大腿中部以上,经典西部片取景" },
22
+ "head-to-knees": { label: "头到膝盖", description: "从头部到膝盖" },
23
+ "head-to-hip": { label: "头到髋", description: "从头部到髋部" },
24
+ "half-body": { label: "半身像", description: "干净的腰部以上人像" },
25
+
26
+ // Angle
27
+ "eye-level": { label: "平视角", description: "镜头与主体眼睛平齐" },
28
+ "high-angle": { label: "俯视角", description: "镜头从上俯瞰主体" },
29
+ "low-angle": { label: "仰视角", description: "镜头从下仰望主体" },
30
+ "overhead": { label: "正上方俯视", description: "正上方上帝视角" },
31
+ "worms-eye-angle": { label: "蠕虫视角", description: "极低机位仰望" },
32
+ "dutch-angle": { label: "荷兰角", description: "倾斜的失衡地平线" },
33
+ "birds-eye": { label: "鸟瞰", description: "高空俯瞰视角" },
34
+ "slightly-downward": { label: "略微俯视", description: "自拍式从上方轻微下倾" },
35
+
36
+ // Coverage
37
+ "single": { label: "单人镜头", description: "对一名主体的干净取景" },
38
+ "two-shot": { label: "双人镜头", description: "两个主体同时入画" },
39
+ "three-shot": { label: "三人镜头", description: "三个主体同时入画" },
40
+ "over-the-shoulder-framing":{ label: "过肩取景", description: "越过一名主体的肩膀对向另一人" },
41
+ "reverse-shot": { label: "反打镜头", description: "上一镜头的对侧视角" },
42
+ "pov-framing": { label: "主观视角", description: "通过主体的眼睛看世界" },
43
+ "selfie-framing": { label: "自拍取景", description: "手臂长度的自拍" },
44
+ "mirror-selfie": { label: "镜面自拍", description: "镜面反射中可见手机" },
45
+ "gym-mirror-selfie": { label: "健身房镜面自拍", description: "健身房镜中三分之四侧后角度" },
46
+ "through-glass": { label: "穿玻璃拍摄", description: "透过前景玻璃取景" },
47
+ "top-down-flat-lay": { label: "俯拍平铺", description: "桌面物品的正上方俯拍排列" },
48
+ "establishing-shot": { label: "建立镜头", description: "宽阔的环境镜头,主体很小" },
49
+ "dirty-single": { label: "脏单人镜头", description: "单人镜头边缘有另一角色入画" },
50
+
51
+ // Composition
52
+ "rule-of-thirds": { label: "三分法", description: "主体置于三分线交点" },
53
+ "centered": { label: "居中构图", description: "主体正中、对称" },
54
+ "headroom-tight": { label: "顶部预留紧凑", description: "主体头部贴近画框上沿" },
55
+ "negative-space": { label: "负空间", description: "主体偏置,留出大量空白" },
56
+ "leading-lines": { label: "引导线", description: "线条将视线引向主体" },
57
+ "3x3-grid-collage": { label: "3×3 网格拼贴", description: "3×3 网格中的主体变体" },
58
+ "diptych": { label: "双联画", description: "并列两幅一组的构图" },
59
+ "triptych": { label: "三联画", description: "三幅一组的构图" },
60
+ "multi-frame-mosaic": { label: "多格马赛克", description: "由众多小图块拼成的脸" },
61
+ "contact-sheet": { label: "印样小样", description: "缩略图组成的摄影印样" },
62
+ "magazine-spread": { label: "杂志跨页", description: "带文字版式的两版杂志跨页" },
63
+ "cutaway-cross-section":{ label: "剖面 / 横截面",description: "墙面剥开露出剖面的建筑视图" },
64
+ "golden-spiral": { label: "黄金螺旋", description: "依据斐波那契比例螺旋安排的构图" },
65
+ "frame-within-frame": { label: "画中框", description: "由室内建筑元素框出主体" },
66
+ "s-curve": { label: "S 形曲线", description: "蜿蜒的对角线引导视线" },
67
+ "diagonal-composition": { label: "对角线构图", description: "强烈的对角线斜切画面" },
68
+ "triangular-composition": { label: "三角构图", description: "三点式三角形排布" },
69
+ "symmetrical-mirror": { label: "对称 / 镜像", description: "完全的左右对称" },
70
+ "vignette-composition": { label: "暗角构图", description: "周边明显压暗,聚焦中央" },
71
+
72
+ // Vantage
73
+ "front-on": { label: "正面", description: "主体正对镜头" },
74
+ "three-quarter-front": { label: "三分之四正面", description: "略微偏离正面" },
75
+ "profile-left": { label: "左侧侧面", description: "侧视图,主体左侧" },
76
+ "profile-right": { label: "右侧侧面", description: "侧视图,主体右侧" },
77
+ "three-quarter-back": { label: "三分之四背面", description: "从背后偏角度的视角" },
78
+ "behind": { label: "正背面", description: "正后方视角" },
79
+ "side-back-angle": { label: "侧背角度", description: "从一侧肩后的三分之四视角" },
80
+ }
81
+
82
+ export default map