@strapi/i18n 0.0.0-experimental.86fea32ae4240d73f76516d7238e302b6b927e88 → 0.0.0-experimental.8bf99b7c43ed372264c198d347a2ada9dfed174d

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 (377) hide show
  1. package/dist/admin/components/BulkLocaleActionModal.js +262 -0
  2. package/dist/admin/components/BulkLocaleActionModal.js.map +1 -0
  3. package/dist/admin/components/BulkLocaleActionModal.mjs +260 -0
  4. package/dist/admin/components/BulkLocaleActionModal.mjs.map +1 -0
  5. package/dist/admin/components/CMHeaderActions.js +721 -0
  6. package/dist/admin/components/CMHeaderActions.js.map +1 -0
  7. package/dist/admin/components/CMHeaderActions.mjs +696 -0
  8. package/dist/admin/components/CMHeaderActions.mjs.map +1 -0
  9. package/dist/admin/components/CMListViewModalsAdditionalInformation.js +69 -0
  10. package/dist/admin/components/CMListViewModalsAdditionalInformation.js.map +1 -0
  11. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs +65 -0
  12. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs.map +1 -0
  13. package/dist/admin/components/CheckboxConfirmation.js +155 -0
  14. package/dist/admin/components/CheckboxConfirmation.js.map +1 -0
  15. package/dist/admin/components/CheckboxConfirmation.mjs +134 -0
  16. package/dist/admin/components/CheckboxConfirmation.mjs.map +1 -0
  17. package/dist/admin/components/CreateLocale.js +395 -0
  18. package/dist/admin/components/CreateLocale.js.map +1 -0
  19. package/dist/admin/components/CreateLocale.mjs +369 -0
  20. package/dist/admin/components/CreateLocale.mjs.map +1 -0
  21. package/dist/admin/components/DeleteLocale.js +90 -0
  22. package/dist/admin/components/DeleteLocale.js.map +1 -0
  23. package/dist/admin/components/DeleteLocale.mjs +69 -0
  24. package/dist/admin/components/DeleteLocale.mjs.map +1 -0
  25. package/dist/admin/components/EditLocale.js +212 -0
  26. package/dist/admin/components/EditLocale.js.map +1 -0
  27. package/dist/admin/components/EditLocale.mjs +190 -0
  28. package/dist/admin/components/EditLocale.mjs.map +1 -0
  29. package/dist/admin/components/LocaleListCell.js +82 -0
  30. package/dist/admin/components/LocaleListCell.js.map +1 -0
  31. package/dist/admin/components/LocaleListCell.mjs +80 -0
  32. package/dist/admin/components/LocaleListCell.mjs.map +1 -0
  33. package/dist/admin/components/LocalePicker.js +98 -0
  34. package/dist/admin/components/LocalePicker.js.map +1 -0
  35. package/dist/admin/components/LocalePicker.mjs +77 -0
  36. package/dist/admin/components/LocalePicker.mjs.map +1 -0
  37. package/dist/admin/components/LocaleTable.js +143 -0
  38. package/dist/admin/components/LocaleTable.js.map +1 -0
  39. package/dist/admin/components/LocaleTable.mjs +122 -0
  40. package/dist/admin/components/LocaleTable.mjs.map +1 -0
  41. package/dist/admin/constants.js +37 -0
  42. package/dist/admin/constants.js.map +1 -0
  43. package/dist/admin/constants.mjs +35 -0
  44. package/dist/admin/constants.mjs.map +1 -0
  45. package/dist/admin/contentManagerHooks/editView.js +106 -0
  46. package/dist/admin/contentManagerHooks/editView.js.map +1 -0
  47. package/dist/admin/contentManagerHooks/editView.mjs +85 -0
  48. package/dist/admin/contentManagerHooks/editView.mjs.map +1 -0
  49. package/dist/admin/contentManagerHooks/listView.js +43 -0
  50. package/dist/admin/contentManagerHooks/listView.js.map +1 -0
  51. package/dist/admin/contentManagerHooks/listView.mjs +41 -0
  52. package/dist/admin/contentManagerHooks/listView.mjs.map +1 -0
  53. package/dist/admin/contentReleasesHooks/releaseDetailsView.js +20 -0
  54. package/dist/admin/contentReleasesHooks/releaseDetailsView.js.map +1 -0
  55. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs +18 -0
  56. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs.map +1 -0
  57. package/dist/admin/hooks/useI18n.js +78 -0
  58. package/dist/admin/hooks/useI18n.js.map +1 -0
  59. package/dist/admin/hooks/useI18n.mjs +57 -0
  60. package/dist/admin/hooks/useI18n.mjs.map +1 -0
  61. package/dist/admin/index.js +225 -5
  62. package/dist/admin/index.js.map +1 -1
  63. package/dist/admin/index.mjs +201 -5
  64. package/dist/admin/index.mjs.map +1 -1
  65. package/dist/admin/middlewares/extendCTBAttributeInitialData.js +71 -0
  66. package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -0
  67. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +69 -0
  68. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs.map +1 -0
  69. package/dist/admin/middlewares/extendCTBInitialData.js +40 -0
  70. package/dist/admin/middlewares/extendCTBInitialData.js.map +1 -0
  71. package/dist/admin/middlewares/extendCTBInitialData.mjs +38 -0
  72. package/dist/admin/middlewares/extendCTBInitialData.mjs.map +1 -0
  73. package/dist/admin/middlewares/rbac-middleware.js +49 -0
  74. package/dist/admin/middlewares/rbac-middleware.js.map +1 -0
  75. package/dist/admin/middlewares/rbac-middleware.mjs +28 -0
  76. package/dist/admin/middlewares/rbac-middleware.mjs.map +1 -0
  77. package/dist/admin/pages/SettingsPage.js +107 -0
  78. package/dist/admin/pages/SettingsPage.js.map +1 -0
  79. package/dist/admin/pages/SettingsPage.mjs +85 -0
  80. package/dist/admin/pages/SettingsPage.mjs.map +1 -0
  81. package/dist/admin/pluginId.js +6 -0
  82. package/dist/admin/pluginId.js.map +1 -0
  83. package/dist/admin/pluginId.mjs +4 -0
  84. package/dist/admin/pluginId.mjs.map +1 -0
  85. package/dist/admin/services/api.js +12 -0
  86. package/dist/admin/services/api.js.map +1 -0
  87. package/dist/admin/services/api.mjs +10 -0
  88. package/dist/admin/services/api.mjs.map +1 -0
  89. package/dist/admin/services/locales.js +70 -0
  90. package/dist/admin/services/locales.js.map +1 -0
  91. package/dist/admin/services/locales.mjs +64 -0
  92. package/dist/admin/services/locales.mjs.map +1 -0
  93. package/dist/admin/services/relations.js +23 -0
  94. package/dist/admin/services/relations.js.map +1 -0
  95. package/dist/admin/services/relations.mjs +21 -0
  96. package/dist/admin/services/relations.mjs.map +1 -0
  97. package/dist/admin/src/components/CMHeaderActions.d.ts +2 -2
  98. package/dist/admin/src/components/LocaleListCell.d.ts +4 -4
  99. package/dist/admin/src/components/tests/CreateLocale.test.d.ts +1 -0
  100. package/dist/admin/src/components/tests/DeleteLocale.test.d.ts +1 -0
  101. package/dist/admin/src/components/tests/EditLocale.test.d.ts +1 -0
  102. package/dist/admin/src/components/tests/LocaleListCell.test.d.ts +1 -0
  103. package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +1 -1
  104. package/dist/admin/src/pages/tests/SettingsPage.test.d.ts +1 -0
  105. package/dist/admin/src/utils/schemas.d.ts +424 -16
  106. package/dist/admin/tests/server.d.ts +1 -0
  107. package/dist/admin/tests/utils.d.ts +6 -0
  108. package/dist/admin/translations/de.json.js +66 -0
  109. package/dist/admin/translations/de.json.js.map +1 -0
  110. package/dist/admin/translations/de.json.mjs +64 -0
  111. package/dist/admin/translations/de.json.mjs.map +1 -0
  112. package/dist/admin/translations/dk.json.js +66 -0
  113. package/dist/admin/translations/dk.json.js.map +1 -0
  114. package/dist/admin/translations/dk.json.mjs +64 -0
  115. package/dist/admin/translations/dk.json.mjs.map +1 -0
  116. package/dist/admin/translations/en.json.js +81 -0
  117. package/dist/admin/translations/en.json.js.map +1 -0
  118. package/dist/admin/translations/en.json.mjs +79 -0
  119. package/dist/admin/translations/en.json.mjs.map +1 -0
  120. package/dist/admin/translations/es.json.js +66 -0
  121. package/dist/admin/translations/es.json.js.map +1 -0
  122. package/dist/admin/translations/es.json.mjs +64 -0
  123. package/dist/admin/translations/es.json.mjs.map +1 -0
  124. package/dist/admin/translations/fr.json.js +66 -0
  125. package/dist/admin/translations/fr.json.js.map +1 -0
  126. package/dist/admin/translations/fr.json.mjs +64 -0
  127. package/dist/admin/translations/fr.json.mjs.map +1 -0
  128. package/dist/admin/translations/ko.json.js +65 -0
  129. package/dist/admin/translations/ko.json.js.map +1 -0
  130. package/dist/admin/translations/ko.json.mjs +63 -0
  131. package/dist/admin/translations/ko.json.mjs.map +1 -0
  132. package/dist/admin/translations/pl.json.js +66 -0
  133. package/dist/admin/translations/pl.json.js.map +1 -0
  134. package/dist/admin/translations/pl.json.mjs +64 -0
  135. package/dist/admin/translations/pl.json.mjs.map +1 -0
  136. package/dist/admin/translations/ru.json.js +68 -0
  137. package/dist/admin/translations/ru.json.js.map +1 -0
  138. package/dist/admin/translations/ru.json.mjs +66 -0
  139. package/dist/admin/translations/ru.json.mjs.map +1 -0
  140. package/dist/admin/translations/tr.json.js +66 -0
  141. package/dist/admin/translations/tr.json.js.map +1 -0
  142. package/dist/admin/translations/tr.json.mjs +64 -0
  143. package/dist/admin/translations/tr.json.mjs.map +1 -0
  144. package/dist/admin/translations/uk.json.js +82 -0
  145. package/dist/admin/translations/uk.json.js.map +1 -0
  146. package/dist/admin/translations/uk.json.mjs +80 -0
  147. package/dist/admin/translations/uk.json.mjs.map +1 -0
  148. package/dist/admin/translations/zh-Hans.json.js +57 -0
  149. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  150. package/dist/admin/translations/zh-Hans.json.mjs +55 -0
  151. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  152. package/dist/admin/translations/zh.json.js +66 -0
  153. package/dist/admin/translations/zh.json.js.map +1 -0
  154. package/dist/admin/translations/zh.json.mjs +64 -0
  155. package/dist/admin/translations/zh.json.mjs.map +1 -0
  156. package/dist/admin/utils/baseQuery.js +8 -0
  157. package/dist/admin/utils/baseQuery.js.map +1 -0
  158. package/dist/admin/utils/baseQuery.mjs +6 -0
  159. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  160. package/dist/admin/utils/clean.js +70 -0
  161. package/dist/admin/utils/clean.js.map +1 -0
  162. package/dist/admin/utils/clean.mjs +68 -0
  163. package/dist/admin/utils/clean.mjs.map +1 -0
  164. package/dist/admin/utils/fields.js +34 -0
  165. package/dist/admin/utils/fields.js.map +1 -0
  166. package/dist/admin/utils/fields.mjs +31 -0
  167. package/dist/admin/utils/fields.mjs.map +1 -0
  168. package/dist/admin/utils/getTranslation.js +8 -0
  169. package/dist/admin/utils/getTranslation.js.map +1 -0
  170. package/dist/admin/utils/getTranslation.mjs +6 -0
  171. package/dist/admin/utils/getTranslation.mjs.map +1 -0
  172. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  173. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  174. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  175. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  176. package/dist/admin/utils/schemas.js +74 -0
  177. package/dist/admin/utils/schemas.js.map +1 -0
  178. package/dist/admin/utils/schemas.mjs +72 -0
  179. package/dist/admin/utils/schemas.mjs.map +1 -0
  180. package/dist/admin/utils/strings.js +6 -0
  181. package/dist/admin/utils/strings.js.map +1 -0
  182. package/dist/admin/utils/strings.mjs +4 -0
  183. package/dist/admin/utils/strings.mjs.map +1 -0
  184. package/dist/server/bootstrap.js +79 -0
  185. package/dist/server/bootstrap.js.map +1 -0
  186. package/dist/server/bootstrap.mjs +77 -0
  187. package/dist/server/bootstrap.mjs.map +1 -0
  188. package/dist/server/constants/index.js +29 -0
  189. package/dist/server/constants/index.js.map +1 -0
  190. package/dist/server/constants/index.mjs +25 -0
  191. package/dist/server/constants/index.mjs.map +1 -0
  192. package/dist/server/constants/iso-locales.json.js +2423 -0
  193. package/dist/server/constants/iso-locales.json.js.map +1 -0
  194. package/dist/server/constants/iso-locales.json.mjs +2421 -0
  195. package/dist/server/constants/iso-locales.json.mjs.map +1 -0
  196. package/dist/server/content-types/index.js +10 -0
  197. package/dist/server/content-types/index.js.map +1 -0
  198. package/dist/server/content-types/index.mjs +8 -0
  199. package/dist/server/content-types/index.mjs.map +1 -0
  200. package/dist/server/content-types/locale/index.js +10 -0
  201. package/dist/server/content-types/locale/index.js.map +1 -0
  202. package/dist/server/content-types/locale/index.mjs +8 -0
  203. package/dist/server/content-types/locale/index.mjs.map +1 -0
  204. package/dist/server/content-types/locale/schema.json.js +46 -0
  205. package/dist/server/content-types/locale/schema.json.js.map +1 -0
  206. package/dist/server/content-types/locale/schema.json.mjs +38 -0
  207. package/dist/server/content-types/locale/schema.json.mjs.map +1 -0
  208. package/dist/server/controllers/content-types.js +76 -0
  209. package/dist/server/controllers/content-types.js.map +1 -0
  210. package/dist/server/controllers/content-types.mjs +74 -0
  211. package/dist/server/controllers/content-types.mjs.map +1 -0
  212. package/dist/server/controllers/index.js +14 -0
  213. package/dist/server/controllers/index.js.map +1 -0
  214. package/dist/server/controllers/index.mjs +12 -0
  215. package/dist/server/controllers/index.mjs.map +1 -0
  216. package/dist/server/controllers/iso-locales.js +13 -0
  217. package/dist/server/controllers/iso-locales.js.map +1 -0
  218. package/dist/server/controllers/iso-locales.mjs +11 -0
  219. package/dist/server/controllers/iso-locales.mjs.map +1 -0
  220. package/dist/server/controllers/locales.js +108 -0
  221. package/dist/server/controllers/locales.js.map +1 -0
  222. package/dist/server/controllers/locales.mjs +87 -0
  223. package/dist/server/controllers/locales.mjs.map +1 -0
  224. package/dist/server/controllers/validate-locale-creation.js +47 -0
  225. package/dist/server/controllers/validate-locale-creation.js.map +1 -0
  226. package/dist/server/controllers/validate-locale-creation.mjs +45 -0
  227. package/dist/server/controllers/validate-locale-creation.mjs.map +1 -0
  228. package/dist/server/domain/locale.js +11 -0
  229. package/dist/server/domain/locale.js.map +1 -0
  230. package/dist/server/domain/locale.mjs +9 -0
  231. package/dist/server/domain/locale.mjs.map +1 -0
  232. package/dist/server/graphql.js +115 -0
  233. package/dist/server/graphql.js.map +1 -0
  234. package/dist/server/graphql.mjs +113 -0
  235. package/dist/server/graphql.mjs.map +1 -0
  236. package/dist/server/index.js +18 -3430
  237. package/dist/server/index.js.map +1 -1
  238. package/dist/server/index.mjs +17 -3412
  239. package/dist/server/index.mjs.map +1 -1
  240. package/dist/server/register.js +79 -0
  241. package/dist/server/register.js.map +1 -0
  242. package/dist/server/register.mjs +77 -0
  243. package/dist/server/register.mjs.map +1 -0
  244. package/dist/server/routes/admin.js +102 -0
  245. package/dist/server/routes/admin.js.map +1 -0
  246. package/dist/server/routes/admin.mjs +100 -0
  247. package/dist/server/routes/admin.mjs.map +1 -0
  248. package/dist/server/routes/content-api.js +15 -0
  249. package/dist/server/routes/content-api.js.map +1 -0
  250. package/dist/server/routes/content-api.mjs +13 -0
  251. package/dist/server/routes/content-api.mjs.map +1 -0
  252. package/dist/server/routes/index.js +12 -0
  253. package/dist/server/routes/index.js.map +1 -0
  254. package/dist/server/routes/index.mjs +10 -0
  255. package/dist/server/routes/index.mjs.map +1 -0
  256. package/dist/server/services/content-types.js +157 -0
  257. package/dist/server/services/content-types.js.map +1 -0
  258. package/dist/server/services/content-types.mjs +155 -0
  259. package/dist/server/services/content-types.mjs.map +1 -0
  260. package/dist/server/services/index.js +22 -0
  261. package/dist/server/services/index.js.map +1 -0
  262. package/dist/server/services/index.mjs +20 -0
  263. package/dist/server/services/index.mjs.map +1 -0
  264. package/dist/server/services/iso-locales.js +12 -0
  265. package/dist/server/services/iso-locales.js.map +1 -0
  266. package/dist/server/services/iso-locales.mjs +10 -0
  267. package/dist/server/services/iso-locales.mjs.map +1 -0
  268. package/dist/server/services/locales.js +114 -0
  269. package/dist/server/services/locales.js.map +1 -0
  270. package/dist/server/services/locales.mjs +112 -0
  271. package/dist/server/services/locales.mjs.map +1 -0
  272. package/dist/server/services/localizations.js +68 -0
  273. package/dist/server/services/localizations.js.map +1 -0
  274. package/dist/server/services/localizations.mjs +66 -0
  275. package/dist/server/services/localizations.mjs.map +1 -0
  276. package/dist/server/services/metrics.js +30 -0
  277. package/dist/server/services/metrics.js.map +1 -0
  278. package/dist/server/services/metrics.mjs +28 -0
  279. package/dist/server/services/metrics.mjs.map +1 -0
  280. package/dist/server/services/permissions/actions.js +136 -0
  281. package/dist/server/services/permissions/actions.js.map +1 -0
  282. package/dist/server/services/permissions/actions.mjs +134 -0
  283. package/dist/server/services/permissions/actions.mjs.map +1 -0
  284. package/dist/server/services/permissions/engine.js +52 -0
  285. package/dist/server/services/permissions/engine.js.map +1 -0
  286. package/dist/server/services/permissions/engine.mjs +50 -0
  287. package/dist/server/services/permissions/engine.mjs.map +1 -0
  288. package/dist/server/services/permissions/sections-builder.js +45 -0
  289. package/dist/server/services/permissions/sections-builder.js.map +1 -0
  290. package/dist/server/services/permissions/sections-builder.mjs +43 -0
  291. package/dist/server/services/permissions/sections-builder.mjs.map +1 -0
  292. package/dist/server/services/permissions.js +14 -0
  293. package/dist/server/services/permissions.js.map +1 -0
  294. package/dist/server/services/permissions.mjs +12 -0
  295. package/dist/server/services/permissions.mjs.map +1 -0
  296. package/dist/server/services/sanitize/index.js +34 -0
  297. package/dist/server/services/sanitize/index.js.map +1 -0
  298. package/dist/server/services/sanitize/index.mjs +32 -0
  299. package/dist/server/services/sanitize/index.mjs.map +1 -0
  300. package/dist/server/src/index.d.ts +6 -0
  301. package/dist/server/src/index.d.ts.map +1 -1
  302. package/dist/server/src/register.d.ts.map +1 -1
  303. package/dist/server/src/services/index.d.ts +6 -0
  304. package/dist/server/src/services/index.d.ts.map +1 -1
  305. package/dist/server/src/services/localizations.d.ts +1 -1
  306. package/dist/server/src/services/localizations.d.ts.map +1 -1
  307. package/dist/server/src/services/sanitize/index.d.ts +11 -0
  308. package/dist/server/src/services/sanitize/index.d.ts.map +1 -0
  309. package/dist/server/src/utils/index.d.ts +2 -0
  310. package/dist/server/src/utils/index.d.ts.map +1 -1
  311. package/dist/server/utils/index.js +16 -0
  312. package/dist/server/utils/index.js.map +1 -0
  313. package/dist/server/utils/index.mjs +13 -0
  314. package/dist/server/utils/index.mjs.map +1 -0
  315. package/dist/server/validation/content-types.js +18 -0
  316. package/dist/server/validation/content-types.js.map +1 -0
  317. package/dist/server/validation/content-types.mjs +16 -0
  318. package/dist/server/validation/content-types.mjs.map +1 -0
  319. package/dist/server/validation/locales.js +23 -0
  320. package/dist/server/validation/locales.js.map +1 -0
  321. package/dist/server/validation/locales.mjs +20 -0
  322. package/dist/server/validation/locales.mjs.map +1 -0
  323. package/dist/shared/contracts/content-manager.d.ts +1 -1
  324. package/dist/shared/contracts/shared.d.ts +1 -1
  325. package/package.json +18 -16
  326. package/dist/_chunks/SettingsPage-DbRFoF_H.mjs +0 -554
  327. package/dist/_chunks/SettingsPage-DbRFoF_H.mjs.map +0 -1
  328. package/dist/_chunks/SettingsPage-uGJv15wR.js +0 -574
  329. package/dist/_chunks/SettingsPage-uGJv15wR.js.map +0 -1
  330. package/dist/_chunks/de-9eCAqqrB.mjs +0 -66
  331. package/dist/_chunks/de-9eCAqqrB.mjs.map +0 -1
  332. package/dist/_chunks/de-DtWiGdHl.js +0 -66
  333. package/dist/_chunks/de-DtWiGdHl.js.map +0 -1
  334. package/dist/_chunks/dk-2qBjxt-P.mjs +0 -66
  335. package/dist/_chunks/dk-2qBjxt-P.mjs.map +0 -1
  336. package/dist/_chunks/dk-D8C-casx.js +0 -66
  337. package/dist/_chunks/dk-D8C-casx.js.map +0 -1
  338. package/dist/_chunks/en-BYRZFDBV.mjs +0 -81
  339. package/dist/_chunks/en-BYRZFDBV.mjs.map +0 -1
  340. package/dist/_chunks/en-Dk9At9_Z.js +0 -81
  341. package/dist/_chunks/en-Dk9At9_Z.js.map +0 -1
  342. package/dist/_chunks/es-DS-XFGSw.js +0 -66
  343. package/dist/_chunks/es-DS-XFGSw.js.map +0 -1
  344. package/dist/_chunks/es-DlmMVaBG.mjs +0 -66
  345. package/dist/_chunks/es-DlmMVaBG.mjs.map +0 -1
  346. package/dist/_chunks/fr-3S6ke71d.mjs +0 -66
  347. package/dist/_chunks/fr-3S6ke71d.mjs.map +0 -1
  348. package/dist/_chunks/fr-BTjekDpq.js +0 -66
  349. package/dist/_chunks/fr-BTjekDpq.js.map +0 -1
  350. package/dist/_chunks/index-7_EUScSl.mjs +0 -1614
  351. package/dist/_chunks/index-7_EUScSl.mjs.map +0 -1
  352. package/dist/_chunks/index-BGtXLYX-.js +0 -1636
  353. package/dist/_chunks/index-BGtXLYX-.js.map +0 -1
  354. package/dist/_chunks/ko-DmcGUBQ3.js +0 -65
  355. package/dist/_chunks/ko-DmcGUBQ3.js.map +0 -1
  356. package/dist/_chunks/ko-qTjQ8IMw.mjs +0 -65
  357. package/dist/_chunks/ko-qTjQ8IMw.mjs.map +0 -1
  358. package/dist/_chunks/pl-B67TSHqT.mjs +0 -66
  359. package/dist/_chunks/pl-B67TSHqT.mjs.map +0 -1
  360. package/dist/_chunks/pl-Cn5RYonZ.js +0 -66
  361. package/dist/_chunks/pl-Cn5RYonZ.js.map +0 -1
  362. package/dist/_chunks/ru-BMBgVL3s.js +0 -68
  363. package/dist/_chunks/ru-BMBgVL3s.js.map +0 -1
  364. package/dist/_chunks/ru-hagMa57T.mjs +0 -68
  365. package/dist/_chunks/ru-hagMa57T.mjs.map +0 -1
  366. package/dist/_chunks/tr-CarUU76c.js +0 -66
  367. package/dist/_chunks/tr-CarUU76c.js.map +0 -1
  368. package/dist/_chunks/tr-Dw_jmkG-.mjs +0 -66
  369. package/dist/_chunks/tr-Dw_jmkG-.mjs.map +0 -1
  370. package/dist/_chunks/zh-57YM4amO.mjs +0 -66
  371. package/dist/_chunks/zh-57YM4amO.mjs.map +0 -1
  372. package/dist/_chunks/zh-CukOviB0.js +0 -66
  373. package/dist/_chunks/zh-CukOviB0.js.map +0 -1
  374. package/dist/_chunks/zh-Hans-DSHIXAa3.js +0 -57
  375. package/dist/_chunks/zh-Hans-DSHIXAa3.js.map +0 -1
  376. package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs +0 -57
  377. package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs.map +0 -1
@@ -1,3432 +1,20 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const fp = require("lodash/fp");
4
- const utils = require("@strapi/utils");
5
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
6
- function _interopNamespace(e) {
7
- if (e && e.__esModule)
8
- return e;
9
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
- if (e) {
11
- for (const k in e) {
12
- if (k !== "default") {
13
- const d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: () => e[k]
17
- });
18
- }
19
- }
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
- const ___default = /* @__PURE__ */ _interopDefault(_);
25
- const utils__namespace = /* @__PURE__ */ _interopNamespace(utils);
26
- const getCoreStore = () => {
27
- return strapi.store({ type: "plugin", name: "i18n" });
28
- };
29
- const getService = (name) => {
30
- return strapi.plugin("i18n").service(name);
31
- };
32
- const registerModelsHooks = () => {
33
- strapi.db.lifecycles.subscribe({
34
- models: ["plugin::i18n.locale"],
35
- async afterCreate() {
36
- await getService("permissions").actions.syncSuperAdminPermissionsWithLocales();
37
- },
38
- async afterDelete() {
39
- await getService("permissions").actions.syncSuperAdminPermissionsWithLocales();
40
- }
41
- });
42
- strapi.documents.use(async (context, next) => {
43
- const schema2 = context.contentType;
44
- if (!["create", "update", "discardDraft", "publish"].includes(context.action)) {
45
- return next();
46
- }
47
- if (!getService("content-types").isLocalizedContentType(schema2)) {
48
- return next();
49
- }
50
- const { getNestedPopulateOfNonLocalizedAttributes: getNestedPopulateOfNonLocalizedAttributes2 } = getService("content-types");
51
- const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes2(schema2.uid);
52
- const result = await next();
53
- let resultID;
54
- if (Array.isArray(result?.entries) && result.entries[0]?.id) {
55
- resultID = result.entries[0].id;
56
- } else if (result?.id) {
57
- resultID = result.id;
58
- } else {
59
- return result;
60
- }
61
- if (attributesToPopulate.length > 0) {
62
- const populatedResult = await strapi.db.query(schema2.uid).findOne({ where: { id: resultID }, populate: attributesToPopulate });
63
- await getService("localizations").syncNonLocalizedAttributes(populatedResult, schema2);
64
- }
65
- return result;
66
- });
67
- };
68
- const bootstrap = async () => {
69
- const { sendDidInitializeEvent: sendDidInitializeEvent2 } = getService("metrics");
70
- const { initDefaultLocale: initDefaultLocale2 } = getService("locales");
71
- const { sectionsBuilder, actions: actions2, engine } = getService("permissions");
72
- await initDefaultLocale2();
73
- sectionsBuilder.registerLocalesPropertyHandler();
74
- await actions2.registerI18nActions();
75
- actions2.registerI18nActionsHooks();
76
- actions2.updateActionsProperties();
77
- engine.registerI18nPermissionsHandlers();
78
- registerModelsHooks();
79
- sendDidInitializeEvent2();
80
- };
81
- const { ApplicationError: ApplicationError$3 } = utils.errors;
82
- const validateLocaleCreation = async (ctx, next) => {
83
- const { model } = ctx.params;
84
- const { query } = ctx.request;
85
- if (!ctx.request.body) {
86
- ctx.request.body = {};
87
- }
88
- const body = ctx.request.body;
89
- const { getValidLocale: getValidLocale2, isLocalizedContentType: isLocalizedContentType2 } = getService("content-types");
90
- const modelDef = strapi.getModel(model);
91
- if (!isLocalizedContentType2(modelDef)) {
92
- return next();
93
- }
94
- const locale2 = fp.get("locale", query) || fp.get("locale", body) || void 0;
95
- ctx.request.query = {};
96
- let entityLocale;
97
- try {
98
- entityLocale = await getValidLocale2(locale2);
99
- } catch (e) {
100
- throw new ApplicationError$3("This locale doesn't exist");
101
- }
102
- body.locale = entityLocale;
103
- if (modelDef.kind === "singleType") {
104
- const entity = await strapi.entityService.findMany(modelDef.uid, {
105
- locale: entityLocale
106
- });
107
- ctx.request.query.locale = body.locale;
108
- if (entity) {
109
- return next();
110
- }
111
- }
112
- return next();
113
- };
114
- const { ValidationError } = utils.errors;
115
- const LOCALE_SCALAR_TYPENAME = "I18NLocaleCode";
116
- const LOCALE_ARG_PLUGIN_NAME = "I18NLocaleArg";
117
- const graphqlProvider = ({ strapi: strapi2 }) => ({
118
- register() {
119
- const { service: getGraphQLService } = strapi2.plugin("graphql");
120
- const { service: getI18NService } = strapi2.plugin("i18n");
121
- const { isLocalizedContentType: isLocalizedContentType2 } = getI18NService("content-types");
122
- const extensionService = getGraphQLService("extension");
123
- extensionService.shadowCRUD("plugin::i18n.locale").disableMutations();
124
- Object.entries(strapi2.contentTypes).forEach(([uid, ct]) => {
125
- if (isLocalizedContentType2(ct)) {
126
- extensionService.shadowCRUD(uid).field("locale").disableInput();
127
- extensionService.shadowCRUD(uid).field("localizations").disableInput();
128
- }
129
- });
130
- extensionService.use(({ nexus, typeRegistry }) => {
131
- const i18nLocaleArgPlugin = getI18nLocaleArgPlugin({ nexus, typeRegistry });
132
- const i18nLocaleScalar = getLocaleScalar({ nexus });
133
- return {
134
- plugins: [i18nLocaleArgPlugin],
135
- types: [i18nLocaleScalar],
136
- resolversConfig: {
137
- // Modify the default scope associated to find and findOne locale queries to match the actual action name
138
- "Query.i18NLocale": { auth: { scope: "plugin::i18n.locales.listLocales" } },
139
- "Query.i18NLocales": { auth: { scope: "plugin::i18n.locales.listLocales" } }
140
- }
141
- };
142
- });
143
- }
144
- });
145
- const getLocaleScalar = ({ nexus }) => {
146
- const { service: getI18NService } = strapi.plugin("i18n");
147
- const locales2 = getI18NService("iso-locales").getIsoLocales();
148
- return nexus.scalarType({
149
- name: LOCALE_SCALAR_TYPENAME,
150
- description: "A string used to identify an i18n locale",
151
- serialize: fp.identity,
152
- parseValue: fp.identity,
153
- parseLiteral(ast) {
154
- if (ast.kind !== "StringValue") {
155
- throw new ValidationError("Locale cannot represent non string type");
156
- }
157
- const isValidLocale = ast.value === "*" || locales2.find(fp.propEq("code", ast.value));
158
- if (!isValidLocale) {
159
- throw new ValidationError("Unknown locale supplied");
160
- }
161
- return ast.value;
162
- }
163
- });
164
- };
165
- const getI18nLocaleArgPlugin = ({ nexus, typeRegistry }) => {
166
- const { service: getI18NService } = strapi.plugin("i18n");
167
- const { isLocalizedContentType: isLocalizedContentType2 } = getI18NService("content-types");
168
- return nexus.plugin({
169
- name: LOCALE_ARG_PLUGIN_NAME,
170
- onAddOutputField(config) {
171
- const { parentType } = config;
172
- if (parentType !== "Query" && parentType !== "Mutation") {
173
- return;
174
- }
175
- let contentType;
176
- if (config?.extensions?.strapi?.contentType) {
177
- contentType = config.extensions.strapi.contentType;
178
- } else {
179
- const registryType = typeRegistry.get(config.type);
180
- if (!registryType) {
181
- return;
182
- }
183
- contentType = registryType.config.contentType;
184
- }
185
- if (!isLocalizedContentType2(contentType)) {
186
- return;
187
- }
188
- if (!config.args) {
189
- config.args = {};
190
- }
191
- config.args.locale = nexus.arg({
192
- type: LOCALE_SCALAR_TYPENAME,
193
- description: "The locale to use for the query"
194
- });
195
- }
196
- });
197
- };
198
- const register = ({ strapi: strapi2 }) => {
199
- extendContentTypes(strapi2);
200
- addContentManagerLocaleMiddleware(strapi2);
201
- };
202
- const addContentManagerLocaleMiddleware = (strapi2) => {
203
- strapi2.server.router.use("/content-manager/collection-types/:model", (ctx, next) => {
204
- if (ctx.method === "POST" || ctx.method === "PUT") {
205
- return validateLocaleCreation(ctx, next);
206
- }
207
- return next();
208
- });
209
- strapi2.server.router.use("/content-manager/single-types/:model", (ctx, next) => {
210
- if (ctx.method === "POST" || ctx.method === "PUT") {
211
- return validateLocaleCreation(ctx, next);
212
- }
213
- return next();
214
- });
215
- };
216
- const extendContentTypes = (strapi2) => {
217
- Object.values(strapi2.contentTypes).forEach((contentType) => {
218
- const { attributes: attributes2 } = contentType;
219
- ___default.default.set(attributes2, "locale", {
220
- writable: true,
221
- private: false,
222
- configurable: false,
223
- visible: false,
224
- type: "string"
225
- });
226
- ___default.default.set(attributes2, "localizations", {
227
- type: "relation",
228
- relation: "oneToMany",
229
- target: contentType.uid,
230
- writable: false,
231
- private: false,
232
- configurable: false,
233
- visible: false,
234
- unstable_virtual: true,
235
- joinColumn: {
236
- name: "document_id",
237
- referencedColumn: "document_id",
238
- referencedTable: strapi2.db.metadata.identifiers.getTableName(contentType.collectionName),
239
- // ensure the population will not include the results we already loaded
240
- on({ results }) {
241
- return {
242
- id: {
243
- $notIn: results.map((r) => r.id)
244
- }
245
- };
246
- }
247
- }
248
- });
249
- });
250
- if (strapi2.plugin("graphql")) {
251
- graphqlProvider({ strapi: strapi2 }).register();
252
- }
253
- };
254
- const info = {
255
- singularName: "locale",
256
- pluralName: "locales",
257
- collectionName: "locales",
258
- displayName: "Locale",
259
- description: ""
260
- };
261
- const options = {};
262
- const pluginOptions = {
263
- "content-manager": {
264
- visible: false
265
- },
266
- "content-type-builder": {
267
- visible: false
268
- }
269
- };
270
- const attributes = {
271
- name: {
272
- type: "string",
273
- min: 1,
274
- max: 50,
275
- configurable: false
276
- },
277
- code: {
278
- type: "string",
279
- unique: true,
280
- configurable: false
281
- }
282
- };
283
- const schema = {
284
- info,
285
- options,
286
- pluginOptions,
287
- attributes
288
- };
289
- const locale = {
290
- schema
291
- };
292
- const contentTypes$1 = {
293
- locale
294
- };
295
- const actions = [
296
- {
297
- section: "settings",
298
- category: "Internationalization",
299
- subCategory: "Locales",
300
- pluginName: "i18n",
301
- displayName: "Create",
302
- uid: "locale.create"
303
- },
304
- {
305
- section: "settings",
306
- category: "Internationalization",
307
- subCategory: "Locales",
308
- pluginName: "i18n",
309
- displayName: "Read",
310
- uid: "locale.read",
311
- aliases: [
312
- { actionId: "plugin::content-manager.explorer.read", subjects: ["plugin::i18n.locale"] }
313
- ]
314
- },
315
- {
316
- section: "settings",
317
- category: "Internationalization",
318
- subCategory: "Locales",
319
- pluginName: "i18n",
320
- displayName: "Update",
321
- uid: "locale.update"
322
- },
323
- {
324
- section: "settings",
325
- category: "Internationalization",
326
- subCategory: "Locales",
327
- pluginName: "i18n",
328
- displayName: "Delete",
329
- uid: "locale.delete"
330
- }
331
- ];
332
- const addLocalesPropertyIfNeeded = ({ value: action }) => {
333
- const {
334
- section,
335
- options: { applyToProperties }
336
- } = action;
337
- if (section !== "contentTypes") {
338
- return;
339
- }
340
- if (fp.isArray(applyToProperties) && applyToProperties.includes("locales")) {
341
- return;
342
- }
343
- action.options.applyToProperties = fp.isArray(applyToProperties) ? applyToProperties.concat("locales") : ["locales"];
344
- };
345
- const shouldApplyLocalesPropertyToSubject = ({ property, subject }) => {
346
- if (property === "locales") {
347
- const model = strapi.getModel(subject);
348
- return getService("content-types").isLocalizedContentType(model);
349
- }
350
- return true;
351
- };
352
- const addAllLocalesToPermissions = async (permissions2) => {
353
- const { actionProvider } = strapi.service("admin::permission");
354
- const { find: findAllLocales } = getService("locales");
355
- const allLocales = await findAllLocales();
356
- const allLocalesCode = allLocales.map(fp.prop("code"));
357
- return Promise.all(
358
- permissions2.map(async (permission) => {
359
- const { action, subject } = permission;
360
- const appliesToLocalesProperty = await actionProvider.appliesToProperty(
361
- "locales",
362
- action,
363
- subject
364
- );
365
- if (!appliesToLocalesProperty) {
366
- return permission;
367
- }
368
- const oldPermissionProperties = fp.getOr({}, "properties", permission);
369
- return { ...permission, properties: { ...oldPermissionProperties, locales: allLocalesCode } };
370
- })
371
- );
372
- };
373
- const syncSuperAdminPermissionsWithLocales = async () => {
374
- const roleService = strapi.service("admin::role");
375
- const permissionService = strapi.service("admin::permission");
376
- const superAdminRole = await roleService.getSuperAdmin();
377
- if (!superAdminRole) {
378
- return;
379
- }
380
- const superAdminPermissions = await permissionService.findMany({
381
- where: {
382
- role: {
383
- id: superAdminRole.id
384
- }
385
- }
386
- });
387
- const newSuperAdminPermissions = await addAllLocalesToPermissions(superAdminPermissions);
388
- await roleService.assignPermissions(superAdminRole.id, newSuperAdminPermissions);
389
- };
390
- const registerI18nActions = async () => {
391
- const { actionProvider } = strapi.service("admin::permission");
392
- await actionProvider.registerMany(actions);
393
- };
394
- const registerI18nActionsHooks = () => {
395
- const { actionProvider } = strapi.service("admin::permission");
396
- const { hooks } = strapi.service("admin::role");
397
- actionProvider.hooks.appliesPropertyToSubject.register(shouldApplyLocalesPropertyToSubject);
398
- hooks.willResetSuperAdminPermissions.register(addAllLocalesToPermissions);
399
- };
400
- const updateActionsProperties = () => {
401
- const { actionProvider } = strapi.service("admin::permission");
402
- actionProvider.hooks.willRegister.register(addLocalesPropertyIfNeeded);
403
- actionProvider.values().forEach((action) => addLocalesPropertyIfNeeded({ value: action }));
404
- };
405
- const i18nActionsService = {
406
- actions,
407
- registerI18nActions,
408
- registerI18nActionsHooks,
409
- updateActionsProperties,
410
- syncSuperAdminPermissionsWithLocales
411
- };
412
- const localesPropertyHandler = async ({ action, section }) => {
413
- const { actionProvider } = strapi.service("admin::permission");
414
- const locales2 = await getService("locales").find();
415
- if (fp.isEmpty(locales2)) {
416
- return;
417
- }
418
- for (const subject of section.subjects) {
419
- const applies = await actionProvider.appliesToProperty("locales", action.actionId, subject.uid);
420
- const hasLocalesProperty = subject.properties.find(
421
- (property) => property.value === "locales"
422
- );
423
- if (applies && !hasLocalesProperty) {
424
- subject.properties.push({
425
- label: "Locales",
426
- value: "locales",
427
- children: locales2.map(({ name, code }) => ({ label: name || code, value: code }))
428
- });
429
- }
430
- }
431
- };
432
- const registerLocalesPropertyHandler = () => {
433
- const { sectionsBuilder } = strapi.service("admin::permission");
434
- sectionsBuilder.addHandler("singleTypes", localesPropertyHandler);
435
- sectionsBuilder.addHandler("collectionTypes", localesPropertyHandler);
436
- };
437
- const sectionsBuilderService = {
438
- localesPropertyHandler,
439
- registerLocalesPropertyHandler
440
- };
441
- const willRegisterPermission = (context) => {
442
- const { permission, condition, user } = context;
443
- const { subject, properties } = permission;
444
- const isSuperAdmin = strapi.service("admin::role").hasSuperAdminRole(user);
445
- if (isSuperAdmin) {
446
- return;
447
- }
448
- const { locales: locales2 } = properties || {};
449
- const { isLocalizedContentType: isLocalizedContentType2 } = getService("content-types");
450
- if (!subject) {
451
- return;
452
- }
453
- const ct = strapi.contentTypes[subject];
454
- if (!isLocalizedContentType2(ct)) {
455
- return;
456
- }
457
- if (locales2 === null) {
458
- return;
459
- }
460
- condition.and({
461
- locale: {
462
- $in: locales2 || []
463
- }
464
- });
465
- };
466
- const registerI18nPermissionsHandlers = () => {
467
- const { engine } = strapi.service("admin::permission");
468
- engine.hooks["before-register.permission"].register(willRegisterPermission);
469
- };
470
- const engineService = {
471
- willRegisterPermission,
472
- registerI18nPermissionsHandlers
473
- };
474
- const permissions = () => ({
475
- actions: i18nActionsService,
476
- sectionsBuilder: sectionsBuilderService,
477
- engine: engineService
478
- });
479
- const sendDidInitializeEvent = async () => {
480
- const { isLocalizedContentType: isLocalizedContentType2 } = getService("content-types");
481
- const numberOfContentTypes = fp.reduce(
482
- (sum, contentType) => isLocalizedContentType2(contentType) ? sum + 1 : sum,
483
- 0
484
- )(strapi.contentTypes);
485
- await strapi.telemetry.send("didInitializeI18n", { groupProperties: { numberOfContentTypes } });
486
- };
487
- const sendDidUpdateI18nLocalesEvent = async () => {
488
- const numberOfLocales = await getService("locales").count();
489
- await strapi.telemetry.send("didUpdateI18nLocales", {
490
- groupProperties: { numberOfLocales }
491
- });
492
- };
493
- const metrics = () => ({
494
- sendDidInitializeEvent,
495
- sendDidUpdateI18nLocalesEvent
496
- });
497
- const syncNonLocalizedAttributes = async (sourceEntry, model) => {
498
- const { copyNonLocalizedAttributes: copyNonLocalizedAttributes2 } = getService("content-types");
499
- const nonLocalizedAttributes = copyNonLocalizedAttributes2(model, sourceEntry);
500
- if (fp.isEmpty(nonLocalizedAttributes)) {
501
- return;
502
- }
503
- const uid = model.uid;
504
- const documentId = sourceEntry.documentId;
505
- const locale2 = sourceEntry.locale;
506
- const status = sourceEntry?.publishedAt ? "published" : "draft";
507
- const localeEntriesToUpdate = await strapi.db.query(uid).findMany({
508
- where: {
509
- documentId,
510
- publishedAt: status === "published" ? { $ne: null } : null,
511
- locale: { $ne: locale2 }
512
- },
513
- select: ["locale", "id"]
514
- });
515
- const entryData = await strapi.documents(uid).omitComponentData(nonLocalizedAttributes);
516
- await utils.async.map(localeEntriesToUpdate, async (entry) => {
517
- const transformedData = await strapi.documents.utils.transformData(
518
- fp.cloneDeep(nonLocalizedAttributes),
519
- {
520
- uid,
521
- status,
522
- locale: entry.locale,
523
- allowMissingId: true
524
- }
525
- );
526
- const componentData = await strapi.documents(uid).updateComponents(entry, transformedData);
527
- await strapi.db.query(uid).update({
528
- where: {
529
- documentId,
530
- publishedAt: status === "published" ? { $ne: null } : null,
531
- locale: { $eq: entry.locale }
532
- },
533
- // The data we send to the update function is the entry data merged with
534
- // the updated component data
535
- data: Object.assign(fp.cloneDeep(entryData), componentData)
536
- });
537
- });
538
- };
539
- const localizations = () => ({
540
- syncNonLocalizedAttributes
541
- });
542
- const isoLocales = [
543
- {
544
- code: "af",
545
- name: "Afrikaans (af)"
546
- },
547
- {
548
- code: "af-NA",
549
- name: "Afrikaans (Namibia) (af-NA)"
550
- },
551
- {
552
- code: "af-ZA",
553
- name: "Afrikaans (South Africa) (af-ZA)"
554
- },
555
- {
556
- code: "agq",
557
- name: "Aghem (agq)"
558
- },
559
- {
560
- code: "agq-CM",
561
- name: "Aghem (Cameroon) (agq-CM)"
562
- },
563
- {
564
- code: "ak",
565
- name: "Akan (ak)"
566
- },
567
- {
568
- code: "ak-GH",
569
- name: "Akan (Ghana) (ak-GH)"
570
- },
571
- {
572
- code: "sq",
573
- name: "Albanian (sq)"
574
- },
575
- {
576
- code: "sq-AL",
577
- name: "Albanian (Albania) (sq-AL)"
578
- },
579
- {
580
- code: "am",
581
- name: "Amharic (am)"
582
- },
583
- {
584
- code: "am-ET",
585
- name: "Amharic (Ethiopia) (am-ET)"
586
- },
587
- {
588
- code: "aig",
589
- name: "Antigua and Barbuda Creole English"
590
- },
591
- {
592
- code: "ar",
593
- name: "Arabic (ar)"
594
- },
595
- {
596
- code: "ar-DZ",
597
- name: "Arabic (Algeria) (ar-DZ)"
598
- },
599
- {
600
- code: "ar-BH",
601
- name: "Arabic (Bahrain) (ar-BH)"
602
- },
603
- {
604
- code: "ar-EG",
605
- name: "Arabic (Egypt) (ar-EG)"
606
- },
607
- {
608
- code: "ar-IQ",
609
- name: "Arabic (Iraq) (ar-IQ)"
610
- },
611
- {
612
- code: "ar-JO",
613
- name: "Arabic (Jordan) (ar-JO)"
614
- },
615
- {
616
- code: "ar-KW",
617
- name: "Arabic (Kuwait) (ar-KW)"
618
- },
619
- {
620
- code: "ar-LB",
621
- name: "Arabic (Lebanon) (ar-LB)"
622
- },
623
- {
624
- code: "ar-LY",
625
- name: "Arabic (Libya) (ar-LY)"
626
- },
627
- {
628
- code: "ar-MA",
629
- name: "Arabic (Morocco) (ar-MA)"
630
- },
631
- {
632
- code: "ar-OM",
633
- name: "Arabic (Oman) (ar-OM)"
634
- },
635
- {
636
- code: "ar-QA",
637
- name: "Arabic (Qatar) (ar-QA)"
638
- },
639
- {
640
- code: "ar-SA",
641
- name: "Arabic (Saudi Arabia) (ar-SA)"
642
- },
643
- {
644
- code: "ar-SD",
645
- name: "Arabic (Sudan) (ar-SD)"
646
- },
647
- {
648
- code: "ar-SY",
649
- name: "Arabic (Syria) (ar-SY)"
650
- },
651
- {
652
- code: "ar-TN",
653
- name: "Arabic (Tunisia) (ar-TN)"
654
- },
655
- {
656
- code: "ar-AE",
657
- name: "Arabic (United Arab Emirates) (ar-AE)"
658
- },
659
- {
660
- code: "ar-001",
661
- name: "Arabic (World) (ar-001)"
662
- },
663
- {
664
- code: "ar-YE",
665
- name: "Arabic (Yemen) (ar-YE)"
666
- },
667
- {
668
- code: "hy",
669
- name: "Armenian (hy)"
670
- },
671
- {
672
- code: "hy-AM",
673
- name: "Armenian (Armenia) (hy-AM)"
674
- },
675
- {
676
- code: "as",
677
- name: "Assamese (as)"
678
- },
679
- {
680
- code: "as-IN",
681
- name: "Assamese (India) (as-IN)"
682
- },
683
- {
684
- code: "ast",
685
- name: "Asturian (ast)"
686
- },
687
- {
688
- code: "ast-ES",
689
- name: "Asturian (Spain) (ast-ES)"
690
- },
691
- {
692
- code: "asa",
693
- name: "Asu (asa)"
694
- },
695
- {
696
- code: "asa-TZ",
697
- name: "Asu (Tanzania) (asa-TZ)"
698
- },
699
- {
700
- code: "az",
701
- name: "Azerbaijani (az)"
702
- },
703
- {
704
- code: "az-Cyrl",
705
- name: "Azerbaijani (Cyrillic) (az-Cyrl)"
706
- },
707
- {
708
- code: "az-Cyrl-AZ",
709
- name: "Azerbaijani (Cyrillic, Azerbaijan) (az-Cyrl-AZ)"
710
- },
711
- {
712
- code: "az-Latn",
713
- name: "Azerbaijani (Latin) (az-Latn)"
714
- },
715
- {
716
- code: "az-Latn-AZ",
717
- name: "Azerbaijani (Latin, Azerbaijan) (az-Latn-AZ)"
718
- },
719
- {
720
- code: "ksf",
721
- name: "Bafia (ksf)"
722
- },
723
- {
724
- code: "ksf-CM",
725
- name: "Bafia (Cameroon) (ksf-CM)"
726
- },
727
- {
728
- code: "bah",
729
- name: "Bahamas Creole English"
730
- },
731
- {
732
- code: "bm",
733
- name: "Bambara (bm)"
734
- },
735
- {
736
- code: "bm-ML",
737
- name: "Bambara (Mali) (bm-ML)"
738
- },
739
- {
740
- code: "bas",
741
- name: "Basaa (bas)"
742
- },
743
- {
744
- code: "bas-CM",
745
- name: "Basaa (Cameroon) (bas-CM)"
746
- },
747
- {
748
- code: "eu",
749
- name: "Basque (eu)"
750
- },
751
- {
752
- code: "eu-ES",
753
- name: "Basque (Spain) (eu-ES)"
754
- },
755
- {
756
- code: "be",
757
- name: "Belarusian (be)"
758
- },
759
- {
760
- code: "be-BY",
761
- name: "Belarusian (Belarus) (be-BY)"
762
- },
763
- {
764
- code: "bem",
765
- name: "Bemba (bem)"
766
- },
767
- {
768
- code: "bem-ZM",
769
- name: "Bemba (Zambia) (bem-ZM)"
770
- },
771
- {
772
- code: "bez",
773
- name: "Bena (bez)"
774
- },
775
- {
776
- code: "bez-TZ",
777
- name: "Bena (Tanzania) (bez-TZ)"
778
- },
779
- {
780
- code: "bn",
781
- name: "Bengali (bn)"
782
- },
783
- {
784
- code: "bn-BD",
785
- name: "Bengali (Bangladesh) (bn-BD)"
786
- },
787
- {
788
- code: "bn-IN",
789
- name: "Bengali (India) (bn-IN)"
790
- },
791
- {
792
- code: "brx",
793
- name: "Bodo (brx)"
794
- },
795
- {
796
- code: "brx-IN",
797
- name: "Bodo (India) (brx-IN)"
798
- },
799
- {
800
- code: "bs",
801
- name: "Bosnian (bs)"
802
- },
803
- {
804
- code: "bs-BA",
805
- name: "Bosnian (Bosnia and Herzegovina) (bs-BA)"
806
- },
807
- {
808
- code: "br",
809
- name: "Breton (br)"
810
- },
811
- {
812
- code: "br-FR",
813
- name: "Breton (France) (br-FR)"
814
- },
815
- {
816
- code: "bg",
817
- name: "Bulgarian (bg)"
818
- },
819
- {
820
- code: "bg-BG",
821
- name: "Bulgarian (Bulgaria) (bg-BG)"
822
- },
823
- {
824
- code: "my",
825
- name: "Burmese (my)"
826
- },
827
- {
828
- code: "my-MM",
829
- name: "Burmese (Myanmar [Burma]) (my-MM)"
830
- },
831
- {
832
- code: "ca",
833
- name: "Catalan (ca)"
834
- },
835
- {
836
- code: "ca-ES",
837
- name: "Catalan (Spain) (ca-ES)"
838
- },
839
- {
840
- code: "ckb",
841
- name: "Central Kurdish (ckb)"
842
- },
843
- {
844
- code: "kmr",
845
- name: "Northern Kurdish (kmr)"
846
- },
847
- {
848
- code: "sdh",
849
- name: "Southern Kurdish (sdh)"
850
- },
851
- {
852
- code: "tzm",
853
- name: "Central Morocco Tamazight (tzm)"
854
- },
855
- {
856
- code: "tzm-Latn",
857
- name: "Central Morocco Tamazight (Latin) (tzm-Latn)"
858
- },
859
- {
860
- code: "tzm-Latn-MA",
861
- name: "Central Morocco Tamazight (Latin, Morocco) (tzm-Latn-MA) "
862
- },
863
- {
864
- code: "chr",
865
- name: "Cherokee (chr)"
866
- },
867
- {
868
- code: "chr-US",
869
- name: "Cherokee (United States) (chr-US)"
870
- },
871
- {
872
- code: "cgg",
873
- name: "Chiga (cgg)"
874
- },
875
- {
876
- code: "cgg-UG",
877
- name: "Chiga (Uganda) (cgg-UG)"
878
- },
879
- {
880
- code: "zh",
881
- name: "Chinese (zh)"
882
- },
883
- {
884
- code: "zh-Hans",
885
- name: "Chinese (Simplified) (zh-Hans)"
886
- },
887
- {
888
- code: "zh-CN",
889
- name: "Chinese (Simplified, China) (zh-CN)"
890
- },
891
- {
892
- code: "zh-Hans-CN",
893
- name: "Chinese (Simplified, China) (zh-Hans-CN)"
894
- },
895
- {
896
- code: "zh-Hans-HK",
897
- name: "Chinese (Simplified, Hong Kong SAR China) (zh-Hans-HK)"
898
- },
899
- {
900
- code: "zh-Hans-MO",
901
- name: "Chinese (Simplified, Macau SAR China) (zh-Hans-MO) "
902
- },
903
- {
904
- code: "zh-Hans-SG",
905
- name: "Chinese (Simplified, Singapore) (zh-Hans-SG)"
906
- },
907
- {
908
- code: "zh-Hant",
909
- name: "Chinese (Traditional) (zh-Hant)"
910
- },
911
- {
912
- code: "zh-Hant-HK",
913
- name: "Chinese (Traditional, Hong Kong SAR China) (zh-Hant-HK) "
914
- },
915
- {
916
- code: "zh-Hant-MO",
917
- name: "Chinese (Traditional, Macau SAR China) (zh-Hant-MO) "
918
- },
919
- {
920
- code: "zh-Hant-TW",
921
- name: "Chinese (Traditional, Taiwan) (zh-Hant-TW)"
922
- },
923
- {
924
- code: "swc",
925
- name: "Congo Swahili (swc)"
926
- },
927
- {
928
- code: "swc-CD",
929
- name: "Congo Swahili (Congo - Kinshasa) (swc-CD)"
930
- },
931
- {
932
- code: "kw",
933
- name: "Cornish (kw)"
934
- },
935
- {
936
- code: "kw-GB",
937
- name: "Cornish (United Kingdom) (kw-GB)"
938
- },
939
- {
940
- code: "hr",
941
- name: "Croatian (hr)"
942
- },
943
- {
944
- code: "hr-HR",
945
- name: "Croatian (Croatia) (hr-HR)"
946
- },
947
- {
948
- code: "cs",
949
- name: "Czech (cs)"
950
- },
951
- {
952
- code: "cs-CZ",
953
- name: "Czech (Czech Republic) (cs-CZ)"
954
- },
955
- {
956
- code: "da",
957
- name: "Danish (da)"
958
- },
959
- {
960
- code: "da-DK",
961
- name: "Danish (Denmark) (da-DK)"
962
- },
963
- {
964
- code: "dua",
965
- name: "Duala (dua)"
966
- },
967
- {
968
- code: "dua-CM",
969
- name: "Duala (Cameroon) (dua-CM)"
970
- },
971
- {
972
- code: "dv",
973
- name: "Dhivehi (Maldives)"
974
- },
975
- {
976
- code: "nl",
977
- name: "Dutch (nl)"
978
- },
979
- {
980
- code: "nl-AW",
981
- name: "Dutch (Aruba) (nl-AW)"
982
- },
983
- {
984
- code: "nl-BE",
985
- name: "Dutch (Belgium) (nl-BE)"
986
- },
987
- {
988
- code: "nl-CW",
989
- name: "Dutch (Curaçao) (nl-CW)"
990
- },
991
- {
992
- code: "nl-NL",
993
- name: "Dutch (Netherlands) (nl-NL)"
994
- },
995
- {
996
- code: "nl-SX",
997
- name: "Dutch (Sint Maarten) (nl-SX)"
998
- },
999
- {
1000
- code: "ebu",
1001
- name: "Embu (ebu)"
1002
- },
1003
- {
1004
- code: "ebu-KE",
1005
- name: "Embu (Kenya) (ebu-KE)"
1006
- },
1007
- {
1008
- code: "en",
1009
- name: "English (en)"
1010
- },
1011
- {
1012
- code: "en-AI",
1013
- name: "English (Anguilla) (en-AI)"
1014
- },
1015
- {
1016
- code: "en-AS",
1017
- name: "English (American Samoa) (en-AS)"
1018
- },
1019
- {
1020
- code: "en-AU",
1021
- name: "English (Australia) (en-AU)"
1022
- },
1023
- {
1024
- code: "en-AT",
1025
- name: "English (Austria) (en-AT)"
1026
- },
1027
- {
1028
- code: "en-BB",
1029
- name: "English (Barbados) (en-BB)"
1030
- },
1031
- {
1032
- code: "en-BE",
1033
- name: "English (Belgium) (en-BE)"
1034
- },
1035
- {
1036
- code: "en-BZ",
1037
- name: "English (Belize) (en-BZ)"
1038
- },
1039
- {
1040
- code: "en-BM",
1041
- name: "English (Bermuda) (en-BM)"
1042
- },
1043
- {
1044
- code: "en-BW",
1045
- name: "English (Botswana) (en-BW)"
1046
- },
1047
- {
1048
- code: "en-IO",
1049
- name: "English (British Indian Ocean Territory) (en-IO)"
1050
- },
1051
- {
1052
- code: "en-BI",
1053
- name: "English (Burundi) (en-BI)"
1054
- },
1055
- {
1056
- code: "en-CM",
1057
- name: "English (Cameroon) (en-CM)"
1058
- },
1059
- {
1060
- code: "en-CA",
1061
- name: "English (Canada) (en-CA)"
1062
- },
1063
- {
1064
- code: "en-KY",
1065
- name: "English (Cayman Islands) (en-KY)"
1066
- },
1067
- {
1068
- code: "en-CX",
1069
- name: "English (Christmas Island) (en-CX)"
1070
- },
1071
- {
1072
- code: "en-CC",
1073
- name: "English (Cocos [Keeling] Islands) (en-CC)"
1074
- },
1075
- {
1076
- code: "en-CK",
1077
- name: "English (Cook Islands) (en-CK)"
1078
- },
1079
- {
1080
- code: "en-CY",
1081
- name: "English (Cyprus) (en-CY)"
1082
- },
1083
- {
1084
- code: "en-DK",
1085
- name: "English (Denmark) (en-DK)"
1086
- },
1087
- {
1088
- code: "en-DG",
1089
- name: "English (Diego Garcia) (en-DG)"
1090
- },
1091
- {
1092
- code: "en-DM",
1093
- name: "English (Dominica) (en-DM)"
1094
- },
1095
- {
1096
- code: "en-EG",
1097
- name: "English (Egypt) (en-EG)"
1098
- },
1099
- {
1100
- code: "en-ER",
1101
- name: "English (Eritrea) (en-ER)"
1102
- },
1103
- {
1104
- code: "en-EU",
1105
- name: "English (Europe) (en-EU)"
1106
- },
1107
- {
1108
- code: "en-FK",
1109
- name: "English (Falkland Islands) (en-FK)"
1110
- },
1111
- {
1112
- code: "en-FJ",
1113
- name: "English (Fiji) (en-FJ)"
1114
- },
1115
- {
1116
- code: "en-FI",
1117
- name: "English (Finland) (en-FI)"
1118
- },
1119
- {
1120
- code: "en-GM",
1121
- name: "English (Gambia) (en-GM)"
1122
- },
1123
- {
1124
- code: "en-DE",
1125
- name: "English (Germany) (en-DE)"
1126
- },
1127
- {
1128
- code: "en-GH",
1129
- name: "English (Ghana) (en-GH)"
1130
- },
1131
- {
1132
- code: "en-GI",
1133
- name: "English (Gibraltar) (en-GI)"
1134
- },
1135
- {
1136
- code: "en-GD",
1137
- name: "English (Grenada) (en-GD)"
1138
- },
1139
- {
1140
- code: "en-GU",
1141
- name: "English (Guam) (en-GU)"
1142
- },
1143
- {
1144
- code: "en-GG",
1145
- name: "English (Guernsey) (en-GG)"
1146
- },
1147
- {
1148
- code: "en-GY",
1149
- name: "English (Guyana) (en-GY)"
1150
- },
1151
- {
1152
- code: "en-HK",
1153
- name: "English (Hong Kong SAR China) (en-HK)"
1154
- },
1155
- {
1156
- code: "en-IN",
1157
- name: "English (India) (en-IN)"
1158
- },
1159
- {
1160
- code: "en-IE",
1161
- name: "English (Ireland) (en-IE)"
1162
- },
1163
- {
1164
- code: "en-IM",
1165
- name: "English (Isle of Man) (en-IM)"
1166
- },
1167
- {
1168
- code: "en-IL",
1169
- name: "English (Israel) (en-IL)"
1170
- },
1171
- {
1172
- code: "en-JM",
1173
- name: "English (Jamaica) (en-JM)"
1174
- },
1175
- {
1176
- code: "en-JE",
1177
- name: "English (Jersey) (en-JE)"
1178
- },
1179
- {
1180
- code: "en-KE",
1181
- name: "English (Kenya) (en-KE)"
1182
- },
1183
- {
1184
- code: "en-KI",
1185
- name: "English (Kiribati) (en-KI)"
1186
- },
1187
- {
1188
- code: "en-KW",
1189
- name: "English (Kuwait) (en-KW)"
1190
- },
1191
- {
1192
- code: "en-LS",
1193
- name: "English (Lesotho) (en-LS)"
1194
- },
1195
- {
1196
- code: "en-MO",
1197
- name: "English (Macao SAR China) (en-MO)"
1198
- },
1199
- {
1200
- code: "en-MG",
1201
- name: "English (Madagascar) (en-MG)"
1202
- },
1203
- {
1204
- code: "en-MW",
1205
- name: "English (Malawi) (en-MW)"
1206
- },
1207
- {
1208
- code: "en-MY",
1209
- name: "English (Malaysia) (en-MY)"
1210
- },
1211
- {
1212
- code: "en-MT",
1213
- name: "English (Malta) (en-MT)"
1214
- },
1215
- {
1216
- code: "en-MH",
1217
- name: "English (Marshall Islands) (en-MH)"
1218
- },
1219
- {
1220
- code: "en-MU",
1221
- name: "English (Mauritius) (en-MU)"
1222
- },
1223
- {
1224
- code: "en-FM",
1225
- name: "English (Micronesia) (en-FM)"
1226
- },
1227
- {
1228
- code: "en-MS",
1229
- name: "English (Montserrat) (en-MS)"
1230
- },
1231
- {
1232
- code: "en-NA",
1233
- name: "English (Namibia) (en-NA)"
1234
- },
1235
- {
1236
- code: "en-NR",
1237
- name: "English (Nauru) (en-NR)"
1238
- },
1239
- {
1240
- code: "en-NL",
1241
- name: "English (Netherlands) (en-NL)"
1242
- },
1243
- {
1244
- code: "en-NZ",
1245
- name: "English (New Zealand) (en-NZ)"
1246
- },
1247
- {
1248
- code: "en-NG",
1249
- name: "English (Nigeria) (en-NG)"
1250
- },
1251
- {
1252
- code: "en-NU",
1253
- name: "English (Niue) (en-NU)"
1254
- },
1255
- {
1256
- code: "en-NF",
1257
- name: "English (Norfolk Island) (en-NF)"
1258
- },
1259
- {
1260
- code: "en-MP",
1261
- name: "English (Northern Mariana Islands) (en-MP)"
1262
- },
1263
- {
1264
- code: "en-NO",
1265
- name: "English (Norway) (en-NO)"
1266
- },
1267
- {
1268
- code: "en-PA",
1269
- name: "English (Panama) (en-PA)"
1270
- },
1271
- {
1272
- code: "en-PK",
1273
- name: "English (Pakistan) (en-PK)"
1274
- },
1275
- {
1276
- code: "en-PW",
1277
- name: "English (Palau) (en-PW)"
1278
- },
1279
- {
1280
- code: "en-PG",
1281
- name: "English (Papua New Guinea) (en-PG)"
1282
- },
1283
- {
1284
- code: "en-PH",
1285
- name: "English (Philippines) (en-PH)"
1286
- },
1287
- {
1288
- code: "en-PN",
1289
- name: "English (Pitcairn Islands) (en-PN)"
1290
- },
1291
- {
1292
- code: "en-PR",
1293
- name: "English (Puerto Rico) (en-PR)"
1294
- },
1295
- {
1296
- code: "en-RW",
1297
- name: "English (Rwanda) (en-RW)"
1298
- },
1299
- {
1300
- code: "en-WS",
1301
- name: "English (Samoa) (en-WS)"
1302
- },
1303
- {
1304
- code: "en-SA",
1305
- name: "English (Saudi Arabia) (en-SA)"
1306
- },
1307
- {
1308
- code: "en-SC",
1309
- name: "English (Seychelles) (en-SC)"
1310
- },
1311
- {
1312
- code: "en-SL",
1313
- name: "English (Sierra Leone) (en-SL)"
1314
- },
1315
- {
1316
- code: "en-SG",
1317
- name: "English (Singapore) (en-SG)"
1318
- },
1319
- {
1320
- code: "en-SX",
1321
- name: "English (Sint Maarten) (en-SX)"
1322
- },
1323
- {
1324
- code: "en-SI",
1325
- name: "English (Slovenia) (en-SI)"
1326
- },
1327
- {
1328
- code: "en-SB",
1329
- name: "English (Solomon Islands) (en-SB)"
1330
- },
1331
- {
1332
- code: "en-SS",
1333
- name: "English (South Sudan) (en-SS)"
1334
- },
1335
- {
1336
- code: "en-SH",
1337
- name: "English (St Helena) (en-SH)"
1338
- },
1339
- {
1340
- code: "en-KN",
1341
- name: "English (St Kitts & Nevis) (en-KN)"
1342
- },
1343
- {
1344
- code: "en-LC",
1345
- name: "English (St Lucia) (en-LC)"
1346
- },
1347
- {
1348
- code: "svc",
1349
- name: "Vincentian Creole English"
1350
- },
1351
- {
1352
- code: "vic",
1353
- name: "Virgin Islands Creole English"
1354
- },
1355
- {
1356
- code: "en-SD",
1357
- name: "English (Sudan) (en-SD)"
1358
- },
1359
- {
1360
- code: "en-SZ",
1361
- name: "English (Swaziland) (en-SZ)"
1362
- },
1363
- {
1364
- code: "en-SE",
1365
- name: "English (Sweden) (en-SE)"
1366
- },
1367
- {
1368
- code: "en-CH",
1369
- name: "English (Switzerland) (en-CH)"
1370
- },
1371
- {
1372
- code: "en-TZ",
1373
- name: "English (Tanzania) (en-TZ)"
1374
- },
1375
- {
1376
- code: "en-TK",
1377
- name: "English (Tokelau) (en-TK)"
1378
- },
1379
- {
1380
- code: "en-TO",
1381
- name: "English (Tonga) (en-TO)"
1382
- },
1383
- {
1384
- code: "en-TT",
1385
- name: "English (Trinidad and Tobago) (en-TT)"
1386
- },
1387
- {
1388
- code: "en-TV",
1389
- name: "English (Tuvalu) (en-TV)"
1390
- },
1391
- {
1392
- code: "en-ZA",
1393
- name: "English (South Africa) (en-ZA)"
1394
- },
1395
- {
1396
- code: "en-AE",
1397
- name: "English (U.A.E.) (en-AE)"
1398
- },
1399
- {
1400
- code: "en-UM",
1401
- name: "English (U.S. Minor Outlying Islands) (en-UM)"
1402
- },
1403
- {
1404
- code: "en-VI",
1405
- name: "English (U.S. Virgin Islands) (en-VI)"
1406
- },
1407
- {
1408
- code: "en-US-POSIX",
1409
- name: "English (U.S., Computer) (en-US-POSIX)"
1410
- },
1411
- {
1412
- code: "en-UG",
1413
- name: "English (Uganda) (en-UG)"
1414
- },
1415
- {
1416
- code: "en-GB",
1417
- name: "English (United Kingdom) (en-GB)"
1418
- },
1419
- {
1420
- code: "en-US",
1421
- name: "English (United States) (en-US)"
1422
- },
1423
- {
1424
- code: "en-VU",
1425
- name: "English (Vanuatu) (en-VU)"
1426
- },
1427
- {
1428
- code: "en-ZM",
1429
- name: "English (Zambia) (en-ZM)"
1430
- },
1431
- {
1432
- code: "en-ZW",
1433
- name: "English (Zimbabwe) (en-ZW)"
1434
- },
1435
- {
1436
- code: "eo",
1437
- name: "Esperanto (eo)"
1438
- },
1439
- {
1440
- code: "et",
1441
- name: "Estonian (et)"
1442
- },
1443
- {
1444
- code: "et-EE",
1445
- name: "Estonian (Estonia) (et-EE)"
1446
- },
1447
- {
1448
- code: "ee",
1449
- name: "Ewe (ee)"
1450
- },
1451
- {
1452
- code: "ee-GH",
1453
- name: "Ewe (Ghana) (ee-GH)"
1454
- },
1455
- {
1456
- code: "ee-TG",
1457
- name: "Ewe (Togo) (ee-TG)"
1458
- },
1459
- {
1460
- code: "ewo",
1461
- name: "Ewondo (ewo)"
1462
- },
1463
- {
1464
- code: "ewo-CM",
1465
- name: "Ewondo (Cameroon) (ewo-CM)"
1466
- },
1467
- {
1468
- code: "fo",
1469
- name: "Faroese (fo)"
1470
- },
1471
- {
1472
- code: "fo-FO",
1473
- name: "Faroese (Faroe Islands) (fo-FO)"
1474
- },
1475
- {
1476
- code: "fil",
1477
- name: "Filipino (fil)"
1478
- },
1479
- {
1480
- code: "fil-PH",
1481
- name: "Filipino (Philippines) (fil-PH)"
1482
- },
1483
- {
1484
- code: "fi",
1485
- name: "Finnish (fi)"
1486
- },
1487
- {
1488
- code: "fi-FI",
1489
- name: "Finnish (Finland) (fi-FI)"
1490
- },
1491
- {
1492
- code: "fr",
1493
- name: "French (fr)"
1494
- },
1495
- {
1496
- code: "fr-BE",
1497
- name: "French (Belgium) (fr-BE)"
1498
- },
1499
- {
1500
- code: "fr-BJ",
1501
- name: "French (Benin) (fr-BJ)"
1502
- },
1503
- {
1504
- code: "fr-BF",
1505
- name: "French (Burkina Faso) (fr-BF)"
1506
- },
1507
- {
1508
- code: "fr-BI",
1509
- name: "French (Burundi) (fr-BI)"
1510
- },
1511
- {
1512
- code: "fr-CM",
1513
- name: "French (Cameroon) (fr-CM)"
1514
- },
1515
- {
1516
- code: "fr-CA",
1517
- name: "French (Canada) (fr-CA)"
1518
- },
1519
- {
1520
- code: "fr-CF",
1521
- name: "French (Central African Republic) (fr-CF)"
1522
- },
1523
- {
1524
- code: "fr-TD",
1525
- name: "French (Chad) (fr-TD)"
1526
- },
1527
- {
1528
- code: "fr-KM",
1529
- name: "French (Comoros) (fr-KM)"
1530
- },
1531
- {
1532
- code: "fr-CG",
1533
- name: "French (Congo - Brazzaville) (fr-CG)"
1534
- },
1535
- {
1536
- code: "fr-CD",
1537
- name: "French (Congo - Kinshasa) (fr-CD)"
1538
- },
1539
- {
1540
- code: "fr-CI",
1541
- name: "French (Côte d’Ivoire) (fr-CI)"
1542
- },
1543
- {
1544
- code: "fr-DJ",
1545
- name: "French (Djibouti) (fr-DJ)"
1546
- },
1547
- {
1548
- code: "fr-GQ",
1549
- name: "French (Equatorial Guinea) (fr-GQ)"
1550
- },
1551
- {
1552
- code: "fr-FR",
1553
- name: "French (France) (fr-FR)"
1554
- },
1555
- {
1556
- code: "fr-GF",
1557
- name: "French (French Guiana) (fr-GF)"
1558
- },
1559
- {
1560
- code: "fr-GA",
1561
- name: "French (Gabon) (fr-GA)"
1562
- },
1563
- {
1564
- code: "fr-GP",
1565
- name: "French (Guadeloupe) (fr-GP)"
1566
- },
1567
- {
1568
- code: "fr-GN",
1569
- name: "French (Guinea) (fr-GN)"
1570
- },
1571
- {
1572
- code: "fr-LU",
1573
- name: "French (Luxembourg) (fr-LU)"
1574
- },
1575
- {
1576
- code: "fr-MG",
1577
- name: "French (Madagascar) (fr-MG)"
1578
- },
1579
- {
1580
- code: "fr-ML",
1581
- name: "French (Mali) (fr-ML)"
1582
- },
1583
- {
1584
- code: "fr-MQ",
1585
- name: "French (Martinique) (fr-MQ)"
1586
- },
1587
- {
1588
- code: "fr-YT",
1589
- name: "French (Mayotte) (fr-YT)"
1590
- },
1591
- {
1592
- code: "fr-MC",
1593
- name: "French (Monaco) (fr-MC)"
1594
- },
1595
- {
1596
- code: "fr-NE",
1597
- name: "French (Niger) (fr-NE)"
1598
- },
1599
- {
1600
- code: "fr-RW",
1601
- name: "French (Rwanda) (fr-RW)"
1602
- },
1603
- {
1604
- code: "fr-RE",
1605
- name: "French (Réunion) (fr-RE)"
1606
- },
1607
- {
1608
- code: "fr-BL",
1609
- name: "French (Saint Barthélemy) (fr-BL)"
1610
- },
1611
- {
1612
- code: "fr-MF",
1613
- name: "French (Saint Martin) (fr-MF)"
1614
- },
1615
- {
1616
- code: "fr-MU",
1617
- name: "French (Mauritius) (fr-MU)"
1618
- },
1619
- {
1620
- code: "fr-SN",
1621
- name: "French (Senegal) (fr-SN)"
1622
- },
1623
- {
1624
- code: "fr-CH",
1625
- name: "French (Switzerland) (fr-CH)"
1626
- },
1627
- {
1628
- code: "fr-TG",
1629
- name: "French (Togo) (fr-TG)"
1630
- },
1631
- {
1632
- code: "ff",
1633
- name: "Fulah (ff)"
1634
- },
1635
- {
1636
- code: "ff-SN",
1637
- name: "Fulah (Senegal) (ff-SN)"
1638
- },
1639
- {
1640
- code: "gl",
1641
- name: "Galician (gl)"
1642
- },
1643
- {
1644
- code: "gl-ES",
1645
- name: "Galician (Spain) (gl-ES)"
1646
- },
1647
- {
1648
- code: "lao",
1649
- name: "Laotian (Laos) (lao)"
1650
- },
1651
- {
1652
- code: "lg",
1653
- name: "Ganda (lg)"
1654
- },
1655
- {
1656
- code: "lg-UG",
1657
- name: "Ganda (Uganda) (lg-UG)"
1658
- },
1659
- {
1660
- code: "ka",
1661
- name: "Georgian (ka)"
1662
- },
1663
- {
1664
- code: "ka-GE",
1665
- name: "Georgian (Georgia) (ka-GE)"
1666
- },
1667
- {
1668
- code: "de",
1669
- name: "German (de)"
1670
- },
1671
- {
1672
- code: "de-AT",
1673
- name: "German (Austria) (de-AT)"
1674
- },
1675
- {
1676
- code: "de-BE",
1677
- name: "German (Belgium) (de-BE)"
1678
- },
1679
- {
1680
- code: "de-DE",
1681
- name: "German (Germany) (de-DE)"
1682
- },
1683
- {
1684
- code: "de-LI",
1685
- name: "German (Liechtenstein) (de-LI)"
1686
- },
1687
- {
1688
- code: "de-LU",
1689
- name: "German (Luxembourg) (de-LU)"
1690
- },
1691
- {
1692
- code: "de-CH",
1693
- name: "German (Switzerland) (de-CH)"
1694
- },
1695
- {
1696
- code: "el",
1697
- name: "Greek (el)"
1698
- },
1699
- {
1700
- code: "el-CY",
1701
- name: "Greek (Cyprus) (el-CY)"
1702
- },
1703
- {
1704
- code: "el-GR",
1705
- name: "Greek (Greece) (el-GR)"
1706
- },
1707
- {
1708
- code: "gu",
1709
- name: "Gujarati (gu)"
1710
- },
1711
- {
1712
- code: "gu-IN",
1713
- name: "Gujarati (India) (gu-IN)"
1714
- },
1715
- {
1716
- code: "guz",
1717
- name: "Gusii (guz)"
1718
- },
1719
- {
1720
- code: "guz-KE",
1721
- name: "Gusii (Kenya) (guz-KE)"
1722
- },
1723
- {
1724
- code: "ha",
1725
- name: "Hausa (ha)"
1726
- },
1727
- {
1728
- code: "ha-Latn",
1729
- name: "Hausa (Latin) (ha-Latn)"
1730
- },
1731
- {
1732
- code: "ha-Latn-GH",
1733
- name: "Hausa (Latin, Ghana) (ha-Latn-GH)"
1734
- },
1735
- {
1736
- code: "ha-Latn-NE",
1737
- name: "Hausa (Latin, Niger) (ha-Latn-NE)"
1738
- },
1739
- {
1740
- code: "ha-Latn-NG",
1741
- name: "Hausa (Latin, Nigeria) (ha-Latn-NG)"
1742
- },
1743
- {
1744
- code: "haw",
1745
- name: "Hawaiian (haw)"
1746
- },
1747
- {
1748
- code: "haw-US",
1749
- name: "Hawaiian (United States) (haw-US)"
1750
- },
1751
- {
1752
- code: "he",
1753
- name: "Hebrew (he)"
1754
- },
1755
- {
1756
- code: "he-IL",
1757
- name: "Hebrew (Israel) (he-IL)"
1758
- },
1759
- {
1760
- code: "hi",
1761
- name: "Hindi (hi)"
1762
- },
1763
- {
1764
- code: "hi-IN",
1765
- name: "Hindi (India) (hi-IN)"
1766
- },
1767
- {
1768
- code: "hu",
1769
- name: "Hungarian (hu)"
1770
- },
1771
- {
1772
- code: "hu-HU",
1773
- name: "Hungarian (Hungary) (hu-HU)"
1774
- },
1775
- {
1776
- code: "is",
1777
- name: "Icelandic (is)"
1778
- },
1779
- {
1780
- code: "is-IS",
1781
- name: "Icelandic (Iceland) (is-IS)"
1782
- },
1783
- {
1784
- code: "ig",
1785
- name: "Igbo (ig)"
1786
- },
1787
- {
1788
- code: "ig-NG",
1789
- name: "Igbo (Nigeria) (ig-NG)"
1790
- },
1791
- {
1792
- code: "smn",
1793
- name: "Inari Sami"
1794
- },
1795
- {
1796
- code: "smn-FI",
1797
- name: "Inari Sami (Finland)"
1798
- },
1799
- {
1800
- code: "id",
1801
- name: "Indonesian (id)"
1802
- },
1803
- {
1804
- code: "id-ID",
1805
- name: "Indonesian (Indonesia) (id-ID)"
1806
- },
1807
- {
1808
- code: "ga",
1809
- name: "Irish (ga)"
1810
- },
1811
- {
1812
- code: "ga-IE",
1813
- name: "Irish (Ireland) (ga-IE)"
1814
- },
1815
- {
1816
- code: "it",
1817
- name: "Italian (it)"
1818
- },
1819
- {
1820
- code: "it-IT",
1821
- name: "Italian (Italy) (it-IT)"
1822
- },
1823
- {
1824
- code: "it-CH",
1825
- name: "Italian (Switzerland) (it-CH)"
1826
- },
1827
- {
1828
- code: "ja",
1829
- name: "Japanese (ja)"
1830
- },
1831
- {
1832
- code: "ja-JP",
1833
- name: "Japanese (Japan) (ja-JP)"
1834
- },
1835
- {
1836
- code: "dyo",
1837
- name: "Jola-Fonyi (dyo)"
1838
- },
1839
- {
1840
- code: "dyo-SN",
1841
- name: "Jola-Fonyi (Senegal) (dyo-SN)"
1842
- },
1843
- {
1844
- code: "kea",
1845
- name: "Kabuverdianu (kea)"
1846
- },
1847
- {
1848
- code: "kea-CV",
1849
- name: "Kabuverdianu (Cape Verde) (kea-CV)"
1850
- },
1851
- {
1852
- code: "kab",
1853
- name: "Kabyle (kab)"
1854
- },
1855
- {
1856
- code: "kab-DZ",
1857
- name: "Kabyle (Algeria) (kab-DZ)"
1858
- },
1859
- {
1860
- code: "kl",
1861
- name: "Kalaallisut (kl)"
1862
- },
1863
- {
1864
- code: "kl-GL",
1865
- name: "Kalaallisut (Greenland) (kl-GL)"
1866
- },
1867
- {
1868
- code: "kln",
1869
- name: "Kalenjin (kln)"
1870
- },
1871
- {
1872
- code: "kln-KE",
1873
- name: "Kalenjin (Kenya) (kln-KE)"
1874
- },
1875
- {
1876
- code: "kam",
1877
- name: "Kamba (kam)"
1878
- },
1879
- {
1880
- code: "kam-KE",
1881
- name: "Kamba (Kenya) (kam-KE)"
1882
- },
1883
- {
1884
- code: "kn",
1885
- name: "Kannada (kn)"
1886
- },
1887
- {
1888
- code: "kn-IN",
1889
- name: "Kannada (India) (kn-IN)"
1890
- },
1891
- {
1892
- code: "kaa",
1893
- name: "Kara-Kalpak (kaa)"
1894
- },
1895
- {
1896
- code: "kk",
1897
- name: "Kazakh (kk)"
1898
- },
1899
- {
1900
- code: "kk-Cyrl",
1901
- name: "Kazakh (Cyrillic) (kk-Cyrl)"
1902
- },
1903
- {
1904
- code: "kk-Cyrl-KZ",
1905
- name: "Kazakh (Cyrillic, Kazakhstan) (kk-Cyrl-KZ)"
1906
- },
1907
- {
1908
- code: "km",
1909
- name: "Khmer (km)"
1910
- },
1911
- {
1912
- code: "km-KH",
1913
- name: "Khmer (Cambodia) (km-KH)"
1914
- },
1915
- {
1916
- code: "ki",
1917
- name: "Kikuyu (ki)"
1918
- },
1919
- {
1920
- code: "ki-KE",
1921
- name: "Kikuyu (Kenya) (ki-KE)"
1922
- },
1923
- {
1924
- code: "rw",
1925
- name: "Kinyarwanda (rw)"
1926
- },
1927
- {
1928
- code: "rw-RW",
1929
- name: "Kinyarwanda (Rwanda) (rw-RW)"
1930
- },
1931
- {
1932
- code: "kok",
1933
- name: "Konkani (kok)"
1934
- },
1935
- {
1936
- code: "kok-IN",
1937
- name: "Konkani (India) (kok-IN)"
1938
- },
1939
- {
1940
- code: "ko",
1941
- name: "Korean (ko)"
1942
- },
1943
- {
1944
- code: "ko-KR",
1945
- name: "Korean (South Korea) (ko-KR)"
1946
- },
1947
- {
1948
- code: "khq",
1949
- name: "Koyra Chiini (khq)"
1950
- },
1951
- {
1952
- code: "khq-ML",
1953
- name: "Koyra Chiini (Mali) (khq-ML)"
1954
- },
1955
- {
1956
- code: "ses",
1957
- name: "Koyraboro Senni (ses)"
1958
- },
1959
- {
1960
- code: "ses-ML",
1961
- name: "Koyraboro Senni (Mali) (ses-ML)"
1962
- },
1963
- {
1964
- code: "nmg",
1965
- name: "Kwasio (nmg)"
1966
- },
1967
- {
1968
- code: "nmg-CM",
1969
- name: "Kwasio (Cameroon) (nmg-CM)"
1970
- },
1971
- {
1972
- code: "ky",
1973
- name: "Kyrgyz (ky)"
1974
- },
1975
- {
1976
- code: "lag",
1977
- name: "Langi (lag)"
1978
- },
1979
- {
1980
- code: "lag-TZ",
1981
- name: "Langi (Tanzania) (lag-TZ)"
1982
- },
1983
- {
1984
- code: "lv",
1985
- name: "Latvian (lv)"
1986
- },
1987
- {
1988
- code: "lv-LV",
1989
- name: "Latvian (Latvia) (lv-LV)"
1990
- },
1991
- {
1992
- code: "lir",
1993
- name: "Liberian English"
1994
- },
1995
- {
1996
- code: "ln",
1997
- name: "Lingala (ln)"
1998
- },
1999
- {
2000
- code: "ln-CG",
2001
- name: "Lingala (Congo - Brazzaville) (ln-CG)"
2002
- },
2003
- {
2004
- code: "ln-CD",
2005
- name: "Lingala (Congo - Kinshasa) (ln-CD)"
2006
- },
2007
- {
2008
- code: "lt",
2009
- name: "Lithuanian (lt)"
2010
- },
2011
- {
2012
- code: "lt-LT",
2013
- name: "Lithuanian (Lithuania) (lt-LT)"
2014
- },
2015
- {
2016
- code: "lu",
2017
- name: "Luba-Katanga (lu)"
2018
- },
2019
- {
2020
- code: "lu-CD",
2021
- name: "Luba-Katanga (Congo - Kinshasa) (lu-CD)"
2022
- },
2023
- {
2024
- code: "luo",
2025
- name: "Luo (luo)"
2026
- },
2027
- {
2028
- code: "luo-KE",
2029
- name: "Luo (Kenya) (luo-KE)"
2030
- },
2031
- {
2032
- code: "luy",
2033
- name: "Luyia (luy)"
2034
- },
2035
- {
2036
- code: "luy-KE",
2037
- name: "Luyia (Kenya) (luy-KE)"
2038
- },
2039
- {
2040
- code: "mk",
2041
- name: "Macedonian (mk)"
2042
- },
2043
- {
2044
- code: "mk-MK",
2045
- name: "Macedonian (Macedonia) (mk-MK)"
2046
- },
2047
- {
2048
- code: "jmc",
2049
- name: "Machame (jmc)"
2050
- },
2051
- {
2052
- code: "jmc-TZ",
2053
- name: "Machame (Tanzania) (jmc-TZ)"
2054
- },
2055
- {
2056
- code: "mgh",
2057
- name: "Makhuwa-Meetto (mgh)"
2058
- },
2059
- {
2060
- code: "mgh-MZ",
2061
- name: "Makhuwa-Meetto (Mozambique) (mgh-MZ)"
2062
- },
2063
- {
2064
- code: "kde",
2065
- name: "Makonde (kde)"
2066
- },
2067
- {
2068
- code: "kde-TZ",
2069
- name: "Makonde (Tanzania) (kde-TZ)"
2070
- },
2071
- {
2072
- code: "mg",
2073
- name: "Malagasy (mg)"
2074
- },
2075
- {
2076
- code: "mg-MG",
2077
- name: "Malagasy (Madagascar) (mg-MG)"
2078
- },
2079
- {
2080
- code: "ms",
2081
- name: "Malay (ms)"
2082
- },
2083
- {
2084
- code: "ms-BN",
2085
- name: "Malay (Brunei) (ms-BN)"
2086
- },
2087
- {
2088
- code: "ms-MY",
2089
- name: "Malay (Malaysia) (ms-MY)"
2090
- },
2091
- {
2092
- code: "ml",
2093
- name: "Malayalam (ml)"
2094
- },
2095
- {
2096
- code: "ml-IN",
2097
- name: "Malayalam (India) (ml-IN)"
2098
- },
2099
- {
2100
- code: "mt",
2101
- name: "Maltese (mt)"
2102
- },
2103
- {
2104
- code: "mt-MT",
2105
- name: "Maltese (Malta) (mt-MT)"
2106
- },
2107
- {
2108
- code: "gv",
2109
- name: "Manx (gv)"
2110
- },
2111
- {
2112
- code: "gv-GB",
2113
- name: "Manx (United Kingdom) (gv-GB)"
2114
- },
2115
- {
2116
- code: "mr",
2117
- name: "Marathi (mr)"
2118
- },
2119
- {
2120
- code: "mr-IN",
2121
- name: "Marathi (India) (mr-IN)"
2122
- },
2123
- {
2124
- code: "mas",
2125
- name: "Masai (mas)"
2126
- },
2127
- {
2128
- code: "mas-KE",
2129
- name: "Masai (Kenya) (mas-KE)"
2130
- },
2131
- {
2132
- code: "mas-TZ",
2133
- name: "Masai (Tanzania) (mas-TZ)"
2134
- },
2135
- {
2136
- code: "mer",
2137
- name: "Meru (mer)"
2138
- },
2139
- {
2140
- code: "mer-KE",
2141
- name: "Meru (Kenya) (mer-KE)"
2142
- },
2143
- {
2144
- code: "mn",
2145
- name: "Mongolian (mn)"
2146
- },
2147
- {
2148
- code: "mfe",
2149
- name: "Morisyen (mfe)"
2150
- },
2151
- {
2152
- code: "mfe-MU",
2153
- name: "Morisyen (Mauritius) (mfe-MU)"
2154
- },
2155
- {
2156
- code: "mua",
2157
- name: "Mundang (mua)"
2158
- },
2159
- {
2160
- code: "mua-CM",
2161
- name: "Mundang (Cameroon) (mua-CM)"
2162
- },
2163
- {
2164
- code: "naq",
2165
- name: "Nama (naq)"
2166
- },
2167
- {
2168
- code: "naq-NA",
2169
- name: "Nama (Namibia) (naq-NA)"
2170
- },
2171
- {
2172
- code: "ne",
2173
- name: "Nepali (ne)"
2174
- },
2175
- {
2176
- code: "ne-IN",
2177
- name: "Nepali (India) (ne-IN)"
2178
- },
2179
- {
2180
- code: "ne-NP",
2181
- name: "Nepali (Nepal) (ne-NP)"
2182
- },
2183
- {
2184
- code: "se",
2185
- name: "Northern Sami"
2186
- },
2187
- {
2188
- code: "se-FI",
2189
- name: "Northern Sami (Finland)"
2190
- },
2191
- {
2192
- code: "se-NO",
2193
- name: "Northern Sami (Norway)"
2194
- },
2195
- {
2196
- code: "se-SE",
2197
- name: "Northern Sami (Sweden)"
2198
- },
2199
- {
2200
- code: "nd",
2201
- name: "North Ndebele (nd)"
2202
- },
2203
- {
2204
- code: "nd-ZW",
2205
- name: "North Ndebele (Zimbabwe) (nd-ZW)"
2206
- },
2207
- {
2208
- code: "nb",
2209
- name: "Norwegian Bokmål (nb)"
2210
- },
2211
- {
2212
- code: "nb-NO",
2213
- name: "Norwegian Bokmål (Norway) (nb-NO)"
2214
- },
2215
- {
2216
- code: "nn",
2217
- name: "Norwegian Nynorsk (nn)"
2218
- },
2219
- {
2220
- code: "nn-NO",
2221
- name: "Norwegian Nynorsk (Norway) (nn-NO)"
2222
- },
2223
- {
2224
- code: "nus",
2225
- name: "Nuer (nus)"
2226
- },
2227
- {
2228
- code: "nus-SD",
2229
- name: "Nuer (Sudan) (nus-SD)"
2230
- },
2231
- {
2232
- code: "nyn",
2233
- name: "Nyankole (nyn)"
2234
- },
2235
- {
2236
- code: "nyn-UG",
2237
- name: "Nyankole (Uganda) (nyn-UG)"
2238
- },
2239
- {
2240
- code: "or",
2241
- name: "Oriya (or)"
2242
- },
2243
- {
2244
- code: "or-IN",
2245
- name: "Oriya (India) (or-IN)"
2246
- },
2247
- {
2248
- code: "om",
2249
- name: "Oromo (om)"
2250
- },
2251
- {
2252
- code: "om-ET",
2253
- name: "Oromo (Ethiopia) (om-ET)"
2254
- },
2255
- {
2256
- code: "om-KE",
2257
- name: "Oromo (Kenya) (om-KE)"
2258
- },
2259
- {
2260
- code: "ps",
2261
- name: "Pashto (ps)"
2262
- },
2263
- {
2264
- code: "ps-AF",
2265
- name: "Pashto (Afghanistan) (ps-AF)"
2266
- },
2267
- {
2268
- code: "fa",
2269
- name: "Persian (fa)"
2270
- },
2271
- {
2272
- code: "fa-AF",
2273
- name: "Persian (Afghanistan) (fa-AF)"
2274
- },
2275
- {
2276
- code: "fa-IR",
2277
- name: "Persian (Iran) (fa-IR)"
2278
- },
2279
- {
2280
- code: "pl",
2281
- name: "Polish (pl)"
2282
- },
2283
- {
2284
- code: "pl-PL",
2285
- name: "Polish (Poland) (pl-PL)"
2286
- },
2287
- {
2288
- code: "pt",
2289
- name: "Portuguese (pt)"
2290
- },
2291
- {
2292
- code: "pt-AO",
2293
- name: "Portuguese (Angola) (pt-AO)"
2294
- },
2295
- {
2296
- code: "pt-BR",
2297
- name: "Portuguese (Brazil) (pt-BR)"
2298
- },
2299
- {
2300
- code: "pt-GW",
2301
- name: "Portuguese (Guinea-Bissau) (pt-GW)"
2302
- },
2303
- {
2304
- code: "pt-MZ",
2305
- name: "Portuguese (Mozambique) (pt-MZ)"
2306
- },
2307
- {
2308
- code: "pt-PT",
2309
- name: "Portuguese (Portugal) (pt-PT)"
2310
- },
2311
- {
2312
- code: "pt-ST",
2313
- name: "Portuguese (São Tomé and Príncipe) (pt-ST)"
2314
- },
2315
- {
2316
- code: "pa",
2317
- name: "Punjabi (pa)"
2318
- },
2319
- {
2320
- code: "pa-Arab",
2321
- name: "Punjabi (Arabic) (pa-Arab)"
2322
- },
2323
- {
2324
- code: "pa-Arab-PK",
2325
- name: "Punjabi (Arabic, Pakistan) (pa-Arab-PK)"
2326
- },
2327
- {
2328
- code: "pa-Guru",
2329
- name: "Punjabi (Gurmukhi) (pa-Guru)"
2330
- },
2331
- {
2332
- code: "pa-Guru-IN",
2333
- name: "Punjabi (Gurmukhi, India) (pa-Guru-IN)"
2334
- },
2335
- {
2336
- code: "ro",
2337
- name: "Romanian (ro)"
2338
- },
2339
- {
2340
- code: "ro-MD",
2341
- name: "Romanian (Moldova) (ro-MD)"
2342
- },
2343
- {
2344
- code: "ro-RO",
2345
- name: "Romanian (Romania) (ro-RO)"
2346
- },
2347
- {
2348
- code: "rm",
2349
- name: "Romansh (rm)"
2350
- },
2351
- {
2352
- code: "rm-CH",
2353
- name: "Romansh (Switzerland) (rm-CH)"
2354
- },
2355
- {
2356
- code: "rof",
2357
- name: "Rombo (rof)"
2358
- },
2359
- {
2360
- code: "rof-TZ",
2361
- name: "Rombo (Tanzania) (rof-TZ)"
2362
- },
2363
- {
2364
- code: "rn",
2365
- name: "Rundi (rn)"
2366
- },
2367
- {
2368
- code: "rn-BI",
2369
- name: "Rundi (Burundi) (rn-BI)"
2370
- },
2371
- {
2372
- code: "ru",
2373
- name: "Russian (ru)"
2374
- },
2375
- {
2376
- code: "ru-MD",
2377
- name: "Russian (Moldova) (ru-MD)"
2378
- },
2379
- {
2380
- code: "ru-RU",
2381
- name: "Russian (Russia) (ru-RU)"
2382
- },
2383
- {
2384
- code: "ru-UA",
2385
- name: "Russian (Ukraine) (ru-UA)"
2386
- },
2387
- {
2388
- code: "rwk",
2389
- name: "Rwa (rwk)"
2390
- },
2391
- {
2392
- code: "rwk-TZ",
2393
- name: "Rwa (Tanzania) (rwk-TZ)"
2394
- },
2395
- {
2396
- code: "saq",
2397
- name: "Samburu (saq)"
2398
- },
2399
- {
2400
- code: "saq-KE",
2401
- name: "Samburu (Kenya) (saq-KE)"
2402
- },
2403
- {
2404
- code: "sg",
2405
- name: "Sango (sg)"
2406
- },
2407
- {
2408
- code: "sg-CF",
2409
- name: "Sango (Central African Republic) (sg-CF)"
2410
- },
2411
- {
2412
- code: "sbp",
2413
- name: "Sangu (sbp)"
2414
- },
2415
- {
2416
- code: "sbp-TZ",
2417
- name: "Sangu (Tanzania) (sbp-TZ)"
2418
- },
2419
- {
2420
- code: "sa",
2421
- name: "Sanskrit (sa)"
2422
- },
2423
- {
2424
- code: "gd",
2425
- name: "Scottish Gaelic (gd)"
2426
- },
2427
- {
2428
- code: "gd-GB",
2429
- name: "Scottish Gaelic (United Kingdom)"
2430
- },
2431
- {
2432
- code: "seh",
2433
- name: "Sena (seh)"
2434
- },
2435
- {
2436
- code: "seh-MZ",
2437
- name: "Sena (Mozambique) (seh-MZ)"
2438
- },
2439
- {
2440
- code: "sr",
2441
- name: "Serbian (sr)"
2442
- },
2443
- {
2444
- code: "sr-Cyrl",
2445
- name: "Serbian (Cyrillic) (sr-Cyrl)"
2446
- },
2447
- {
2448
- code: "sr-Cyrl-BA",
2449
- name: "Serbian (Cyrillic, Bosnia and Herzegovina)(sr-Cyrl-BA) "
2450
- },
2451
- {
2452
- code: "sr-Cyrl-ME",
2453
- name: "Serbian (Cyrillic, Montenegro) (sr-Cyrl-ME)"
2454
- },
2455
- {
2456
- code: "sr-Cyrl-RS",
2457
- name: "Serbian (Cyrillic, Serbia) (sr-Cyrl-RS)"
2458
- },
2459
- {
2460
- code: "sr-Latn",
2461
- name: "Serbian (Latin) (sr-Latn)"
2462
- },
2463
- {
2464
- code: "sr-Latn-BA",
2465
- name: "Serbian (Latin, Bosnia and Herzegovina) (sr-Latn-BA) "
2466
- },
2467
- {
2468
- code: "sr-Latn-ME",
2469
- name: "Serbian (Latin, Montenegro) (sr-Latn-ME)"
2470
- },
2471
- {
2472
- code: "sr-Latn-RS",
2473
- name: "Serbian (Latin, Serbia) (sr-Latn-RS)"
2474
- },
2475
- {
2476
- code: "ksb",
2477
- name: "Shambala (ksb)"
2478
- },
2479
- {
2480
- code: "ksb-TZ",
2481
- name: "Shambala (Tanzania) (ksb-TZ)"
2482
- },
2483
- {
2484
- code: "sn",
2485
- name: "Shona (sn)"
2486
- },
2487
- {
2488
- code: "sn-ZW",
2489
- name: "Shona (Zimbabwe) (sn-ZW)"
2490
- },
2491
- {
2492
- code: "ii",
2493
- name: "Sichuan Yi (ii)"
2494
- },
2495
- {
2496
- code: "ii-CN",
2497
- name: "Sichuan Yi (China) (ii-CN)"
2498
- },
2499
- {
2500
- code: "si",
2501
- name: "Sinhala (si)"
2502
- },
2503
- {
2504
- code: "si-LK",
2505
- name: "Sinhala (Sri Lanka) (si-LK)"
2506
- },
2507
- {
2508
- code: "sk",
2509
- name: "Slovak (sk)"
2510
- },
2511
- {
2512
- code: "sk-SK",
2513
- name: "Slovak (Slovakia) (sk-SK)"
2514
- },
2515
- {
2516
- code: "sl",
2517
- name: "Slovenian (sl)"
2518
- },
2519
- {
2520
- code: "sl-SI",
2521
- name: "Slovenian (Slovenia) (sl-SI)"
2522
- },
2523
- {
2524
- code: "xog",
2525
- name: "Soga (xog)"
2526
- },
2527
- {
2528
- code: "xog-UG",
2529
- name: "Soga (Uganda) (xog-UG)"
2530
- },
2531
- {
2532
- code: "so",
2533
- name: "Somali (so)"
2534
- },
2535
- {
2536
- code: "so-DJ",
2537
- name: "Somali (Djibouti) (so-DJ)"
2538
- },
2539
- {
2540
- code: "so-ET",
2541
- name: "Somali (Ethiopia) (so-ET)"
2542
- },
2543
- {
2544
- code: "so-KE",
2545
- name: "Somali (Kenya) (so-KE)"
2546
- },
2547
- {
2548
- code: "so-SO",
2549
- name: "Somali (Somalia) (so-SO)"
2550
- },
2551
- {
2552
- code: "es",
2553
- name: "Spanish (es)"
2554
- },
2555
- {
2556
- code: "es-AR",
2557
- name: "Spanish (Argentina) (es-AR)"
2558
- },
2559
- {
2560
- code: "es-BO",
2561
- name: "Spanish (Bolivia) (es-BO)"
2562
- },
2563
- {
2564
- code: "es-CL",
2565
- name: "Spanish (Chile) (es-CL)"
2566
- },
2567
- {
2568
- code: "es-CO",
2569
- name: "Spanish (Colombia) (es-CO)"
2570
- },
2571
- {
2572
- code: "es-CR",
2573
- name: "Spanish (Costa Rica) (es-CR)"
2574
- },
2575
- {
2576
- code: "es-DO",
2577
- name: "Spanish (Dominican Republic) (es-DO)"
2578
- },
2579
- {
2580
- code: "es-EC",
2581
- name: "Spanish (Ecuador) (es-EC)"
2582
- },
2583
- {
2584
- code: "es-SV",
2585
- name: "Spanish (El Salvador) (es-SV)"
2586
- },
2587
- {
2588
- code: "es-GQ",
2589
- name: "Spanish (Equatorial Guinea) (es-GQ)"
2590
- },
2591
- {
2592
- code: "es-GT",
2593
- name: "Spanish (Guatemala) (es-GT)"
2594
- },
2595
- {
2596
- code: "es-HN",
2597
- name: "Spanish (Honduras) (es-HN)"
2598
- },
2599
- {
2600
- code: "es-419",
2601
- name: "Spanish (Latin America) (es-419)"
2602
- },
2603
- {
2604
- code: "es-MX",
2605
- name: "Spanish (Mexico) (es-MX)"
2606
- },
2607
- {
2608
- code: "es-NI",
2609
- name: "Spanish (Nicaragua) (es-NI)"
2610
- },
2611
- {
2612
- code: "es-PA",
2613
- name: "Spanish (Panama) (es-PA)"
2614
- },
2615
- {
2616
- code: "es-PY",
2617
- name: "Spanish (Paraguay) (es-PY)"
2618
- },
2619
- {
2620
- code: "es-PE",
2621
- name: "Spanish (Peru) (es-PE)"
2622
- },
2623
- {
2624
- code: "es-PR",
2625
- name: "Spanish (Puerto Rico) (es-PR)"
2626
- },
2627
- {
2628
- code: "es-ES",
2629
- name: "Spanish (Spain) (es-ES)"
2630
- },
2631
- {
2632
- code: "es-US",
2633
- name: "Spanish (United States) (es-US)"
2634
- },
2635
- {
2636
- code: "es-UY",
2637
- name: "Spanish (Uruguay) (es-UY)"
2638
- },
2639
- {
2640
- code: "es-VE",
2641
- name: "Spanish (Venezuela) (es-VE)"
2642
- },
2643
- {
2644
- code: "sw",
2645
- name: "Swahili (sw)"
2646
- },
2647
- {
2648
- code: "sw-KE",
2649
- name: "Swahili (Kenya) (sw-KE)"
2650
- },
2651
- {
2652
- code: "sw-TZ",
2653
- name: "Swahili (Tanzania) (sw-TZ)"
2654
- },
2655
- {
2656
- code: "sv",
2657
- name: "Swedish (sv)"
2658
- },
2659
- {
2660
- code: "sv-FI",
2661
- name: "Swedish (Finland) (sv-FI)"
2662
- },
2663
- {
2664
- code: "sv-SE",
2665
- name: "Swedish (Sweden) (sv-SE)"
2666
- },
2667
- {
2668
- code: "gsw",
2669
- name: "Swiss German (gsw)"
2670
- },
2671
- {
2672
- code: "gsw-CH",
2673
- name: "Swiss German (Switzerland) (gsw-CH)"
2674
- },
2675
- {
2676
- code: "shi",
2677
- name: "Tachelhit (shi)"
2678
- },
2679
- {
2680
- code: "shi-Latn",
2681
- name: "Tachelhit (Latin) (shi-Latn)"
2682
- },
2683
- {
2684
- code: "shi-Latn-MA",
2685
- name: "Tachelhit (Latin, Morocco) (shi-Latn-MA)"
2686
- },
2687
- {
2688
- code: "shi-Tfng",
2689
- name: "Tachelhit (Tifinagh) (shi-Tfng)"
2690
- },
2691
- {
2692
- code: "shi-Tfng-MA",
2693
- name: "Tachelhit (Tifinagh, Morocco) (shi-Tfng-MA)"
2694
- },
2695
- {
2696
- code: "dav",
2697
- name: "Taita (dav)"
2698
- },
2699
- {
2700
- code: "dav-KE",
2701
- name: "Taita (Kenya) (dav-KE)"
2702
- },
2703
- {
2704
- code: "tg",
2705
- name: "Tajik (tg)"
2706
- },
2707
- {
2708
- code: "ta",
2709
- name: "Tamil (ta)"
2710
- },
2711
- {
2712
- code: "ta-IN",
2713
- name: "Tamil (India) (ta-IN)"
2714
- },
2715
- {
2716
- code: "ta-LK",
2717
- name: "Tamil (Sri Lanka) (ta-LK)"
2718
- },
2719
- {
2720
- code: "twq",
2721
- name: "Tasawaq (twq)"
2722
- },
2723
- {
2724
- code: "twq-NE",
2725
- name: "Tasawaq (Niger) (twq-NE)"
2726
- },
2727
- {
2728
- code: "mi",
2729
- name: "Te Reo Māori (mi)"
2730
- },
2731
- {
2732
- code: "te",
2733
- name: "Telugu (te)"
2734
- },
2735
- {
2736
- code: "te-IN",
2737
- name: "Telugu (India) (te-IN)"
2738
- },
2739
- {
2740
- code: "teo",
2741
- name: "Teso (teo)"
2742
- },
2743
- {
2744
- code: "teo-KE",
2745
- name: "Teso (Kenya) (teo-KE)"
2746
- },
2747
- {
2748
- code: "teo-UG",
2749
- name: "Teso (Uganda) (teo-UG)"
2750
- },
2751
- {
2752
- code: "th",
2753
- name: "Thai (th)"
2754
- },
2755
- {
2756
- code: "th-TH",
2757
- name: "Thai (Thailand) (th-TH)"
2758
- },
2759
- {
2760
- code: "bo",
2761
- name: "Tibetan (bo)"
2762
- },
2763
- {
2764
- code: "bo-CN",
2765
- name: "Tibetan (China) (bo-CN)"
2766
- },
2767
- {
2768
- code: "bo-IN",
2769
- name: "Tibetan (India) (bo-IN)"
2770
- },
2771
- {
2772
- code: "ti",
2773
- name: "Tigrinya (ti)"
2774
- },
2775
- {
2776
- code: "ti-ER",
2777
- name: "Tigrinya (Eritrea) (ti-ER)"
2778
- },
2779
- {
2780
- code: "ti-ET",
2781
- name: "Tigrinya (Ethiopia) (ti-ET)"
2782
- },
2783
- {
2784
- code: "to",
2785
- name: "Tongan (to)"
2786
- },
2787
- {
2788
- code: "to-TO",
2789
- name: "Tongan (Tonga) (to-TO)"
2790
- },
2791
- {
2792
- code: "tr",
2793
- name: "Turkish (tr)"
2794
- },
2795
- {
2796
- code: "tk",
2797
- name: "Turkmen (tk)"
2798
- },
2799
- {
2800
- code: "tr-TR",
2801
- name: "Turkish (Turkey) (tr-TR)"
2802
- },
2803
- {
2804
- code: "tch",
2805
- name: "Turks And Caicos Creole English"
2806
- },
2807
- {
2808
- code: "uk",
2809
- name: "Ukrainian (uk)"
2810
- },
2811
- {
2812
- code: "uk-UA",
2813
- name: "Ukrainian (Ukraine) (uk-UA)"
2814
- },
2815
- {
2816
- code: "ur",
2817
- name: "Urdu (ur)"
2818
- },
2819
- {
2820
- code: "ur-IN",
2821
- name: "Urdu (India) (ur-IN)"
2822
- },
2823
- {
2824
- code: "ur-PK",
2825
- name: "Urdu (Pakistan) (ur-PK)"
2826
- },
2827
- {
2828
- code: "ug",
2829
- name: "Uyghur"
2830
- },
2831
- {
2832
- code: "ug-CN",
2833
- name: "Uyghur (China)"
2834
- },
2835
- {
2836
- code: "uz",
2837
- name: "Uzbek (uz)"
2838
- },
2839
- {
2840
- code: "uz-Arab",
2841
- name: "Uzbek (Arabic) (uz-Arab)"
2842
- },
2843
- {
2844
- code: "uz-Arab-AF",
2845
- name: "Uzbek (Arabic, Afghanistan) (uz-Arab-AF)"
2846
- },
2847
- {
2848
- code: "uz-Cyrl",
2849
- name: "Uzbek (Cyrillic) (uz-Cyrl)"
2850
- },
2851
- {
2852
- code: "uz-Cyrl-UZ",
2853
- name: "Uzbek (Cyrillic, Uzbekistan) (uz-Cyrl-UZ)"
2854
- },
2855
- {
2856
- code: "uz-Latn",
2857
- name: "Uzbek (Latin) (uz-Latn)"
2858
- },
2859
- {
2860
- code: "uz-Latn-UZ",
2861
- name: "Uzbek (Latin, Uzbekistan) (uz-Latn-UZ)"
2862
- },
2863
- {
2864
- code: "vai",
2865
- name: "Vai (vai)"
2866
- },
2867
- {
2868
- code: "vai-Latn",
2869
- name: "Vai (Latin) (vai-Latn)"
2870
- },
2871
- {
2872
- code: "vai-Latn-LR",
2873
- name: "Vai (Latin, Liberia) (vai-Latn-LR)"
2874
- },
2875
- {
2876
- code: "vai-Vaii",
2877
- name: "Vai (Vai) (vai-Vaii)"
2878
- },
2879
- {
2880
- code: "vai-Vaii-LR",
2881
- name: "Vai (Vai, Liberia) (vai-Vaii-LR)"
2882
- },
2883
- {
2884
- code: "val",
2885
- name: "Valencian (val)"
2886
- },
2887
- {
2888
- code: "val-ES",
2889
- name: "Valencian (Spain) (val-ES)"
2890
- },
2891
- {
2892
- code: "ca-ES-valencia",
2893
- name: "Valencian (Spain Catalan) (ca-ES-valencia)"
2894
- },
2895
- {
2896
- code: "vi",
2897
- name: "Vietnamese (vi)"
2898
- },
2899
- {
2900
- code: "vi-VN",
2901
- name: "Vietnamese (Vietnam) (vi-VN)"
2902
- },
2903
- {
2904
- code: "vun",
2905
- name: "Vunjo (vun)"
2906
- },
2907
- {
2908
- code: "vun-TZ",
2909
- name: "Vunjo (Tanzania) (vun-TZ)"
2910
- },
2911
- {
2912
- code: "cy",
2913
- name: "Welsh (cy)"
2914
- },
2915
- {
2916
- code: "cy-GB",
2917
- name: "Welsh (United Kingdom) (cy-GB)"
2918
- },
2919
- {
2920
- code: "yav",
2921
- name: "Yangben (yav)"
2922
- },
2923
- {
2924
- code: "yav-CM",
2925
- name: "Yangben (Cameroon) (yav-CM)"
2926
- },
2927
- {
2928
- code: "yo",
2929
- name: "Yoruba (yo)"
2930
- },
2931
- {
2932
- code: "yo-NG",
2933
- name: "Yoruba (Nigeria) (yo-NG)"
2934
- },
2935
- {
2936
- code: "dje",
2937
- name: "Zarma (dje)"
2938
- },
2939
- {
2940
- code: "dje-NE",
2941
- name: "Zarma (Niger) (dje-NE)"
2942
- },
2943
- {
2944
- code: "zu",
2945
- name: "Zulu (zu)"
2946
- },
2947
- {
2948
- code: "zu-ZA",
2949
- name: "Zulu (South Africa) (zu-ZA)"
2950
- }
2951
- ];
2952
- const getInitLocale = () => {
2953
- const envLocaleCode = process.env.STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE;
2954
- if (envLocaleCode) {
2955
- const matchingLocale = isoLocales.find(({ code }) => code === envLocaleCode);
2956
- if (!matchingLocale) {
2957
- throw new Error(
2958
- "Unknown locale code provided in the environment variable STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE"
2959
- );
2960
- }
2961
- return { ...matchingLocale };
2962
- }
2963
- return {
2964
- code: "en",
2965
- name: "English (en)"
2966
- };
2967
- };
2968
- const DEFAULT_LOCALE = getInitLocale();
2969
- const find = (params = {}) => strapi.db.query("plugin::i18n.locale").findMany({ where: params });
2970
- const findById = (id) => strapi.db.query("plugin::i18n.locale").findOne({ where: { id } });
2971
- const findByCode = (code) => strapi.db.query("plugin::i18n.locale").findOne({ where: { code } });
2972
- const count = (params = {}) => strapi.db.query("plugin::i18n.locale").count({ where: params });
2973
- const create = async (locale2) => {
2974
- const result = await strapi.db.query("plugin::i18n.locale").create({ data: locale2 });
2975
- getService("metrics").sendDidUpdateI18nLocalesEvent();
2976
- return result;
2977
- };
2978
- const update = async (params, updates) => {
2979
- const result = await strapi.db.query("plugin::i18n.locale").update({ where: params, data: updates });
2980
- getService("metrics").sendDidUpdateI18nLocalesEvent();
2981
- return result;
2982
- };
2983
- const deleteFn = async ({ id }) => {
2984
- const localeToDelete = await findById(id);
2985
- if (localeToDelete) {
2986
- await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });
2987
- const result = await strapi.db.query("plugin::i18n.locale").delete({ where: { id } });
2988
- getService("metrics").sendDidUpdateI18nLocalesEvent();
2989
- return result;
2990
- }
2991
- return localeToDelete;
2992
- };
2993
- const setDefaultLocale = ({ code }) => getCoreStore().set({ key: "default_locale", value: code });
2994
- const getDefaultLocale = () => getCoreStore().get({ key: "default_locale" });
2995
- const setIsDefault = async (locales2) => {
2996
- if (fp.isNil(locales2)) {
2997
- return locales2;
2998
- }
2999
- const actualDefault = await getDefaultLocale();
3000
- if (Array.isArray(locales2)) {
3001
- return locales2.map((locale2) => ({ ...locale2, isDefault: actualDefault === locale2.code }));
3002
- }
3003
- return { ...locales2, isDefault: actualDefault === locales2.code };
3004
- };
3005
- const initDefaultLocale = async () => {
3006
- const existingLocalesNb = await strapi.db.query("plugin::i18n.locale").count();
3007
- if (existingLocalesNb === 0) {
3008
- await create(DEFAULT_LOCALE);
3009
- await setDefaultLocale({ code: DEFAULT_LOCALE.code });
3010
- }
3011
- };
3012
- const deleteAllLocalizedEntriesFor = async ({ locale: locale2 }) => {
3013
- const { isLocalizedContentType: isLocalizedContentType2 } = getService("content-types");
3014
- const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType2);
3015
- for (const model of localizedModels) {
3016
- await strapi.db.query(model.uid).deleteMany({ where: { locale: locale2 } });
3017
- }
3018
- };
3019
- const locales = () => ({
3020
- find,
3021
- findById,
3022
- findByCode,
3023
- create,
3024
- update,
3025
- count,
3026
- setDefaultLocale,
3027
- getDefaultLocale,
3028
- setIsDefault,
3029
- delete: deleteFn,
3030
- initDefaultLocale
3031
- });
3032
- const getIsoLocales = () => isoLocales;
3033
- const isoLocalesService = () => ({
3034
- getIsoLocales
3035
- });
3036
- const {
3037
- isRelationalAttribute,
3038
- getVisibleAttributes,
3039
- isTypedAttribute,
3040
- getScalarAttributes,
3041
- getRelationalAttributes
3042
- } = utils.contentTypes;
3043
- const { ApplicationError: ApplicationError$2 } = utils.errors;
3044
- const hasLocalizedOption = (modelOrAttribute) => {
3045
- return fp.prop("pluginOptions.i18n.localized", modelOrAttribute) === true;
3046
- };
3047
- const getValidLocale = async (locale2) => {
3048
- const localesService = getService("locales");
3049
- if (fp.isNil(locale2)) {
3050
- return localesService.getDefaultLocale();
3051
- }
3052
- const foundLocale = await localesService.findByCode(locale2);
3053
- if (!foundLocale) {
3054
- throw new ApplicationError$2("Locale not found");
3055
- }
3056
- return locale2;
3057
- };
3058
- const isLocalizedAttribute = (attribute) => {
3059
- return hasLocalizedOption(attribute) || isRelationalAttribute(attribute) || isTypedAttribute(attribute, "uid");
3060
- };
3061
- const isLocalizedContentType = (model) => {
3062
- return hasLocalizedOption(model);
3063
- };
3064
- const getNonLocalizedAttributes = (model) => {
3065
- return getVisibleAttributes(model).filter(
3066
- (attrName) => !isLocalizedAttribute(model.attributes[attrName])
3067
- );
3068
- };
3069
- const removeId = (value) => {
3070
- if (typeof value === "object" && fp.has("id", value)) {
3071
- delete value.id;
3072
- }
3073
- };
3074
- const removeIds = (model) => (entry) => removeIdsMut(model, fp.cloneDeep(entry));
3075
- const removeIdsMut = (model, entry) => {
3076
- if (fp.isNil(entry)) {
3077
- return entry;
3078
- }
3079
- removeId(entry);
3080
- ___default.default.forEach(model.attributes, (attr, attrName) => {
3081
- const value = entry[attrName];
3082
- if (attr.type === "dynamiczone" && fp.isArray(value)) {
3083
- value.forEach((compo) => {
3084
- if (fp.has("__component", compo)) {
3085
- const model2 = strapi.components[compo.__component];
3086
- removeIdsMut(model2, compo);
3087
- }
3088
- });
3089
- } else if (attr.type === "component") {
3090
- const model2 = strapi.components[attr.component];
3091
- if (fp.isArray(value)) {
3092
- value.forEach((compo) => removeIdsMut(model2, compo));
3093
- } else {
3094
- removeIdsMut(model2, value);
3095
- }
3096
- }
3097
- });
3098
- return entry;
3099
- };
3100
- const copyNonLocalizedAttributes = (model, entry) => {
3101
- const nonLocalizedAttributes = getNonLocalizedAttributes(model);
3102
- return fp.pipe(fp.pick(nonLocalizedAttributes), removeIds(model))(entry);
3103
- };
3104
- const getLocalizedAttributes = (model) => {
3105
- return getVisibleAttributes(model).filter(
3106
- (attrName) => isLocalizedAttribute(model.attributes[attrName])
3107
- );
3108
- };
3109
- const fillNonLocalizedAttributes = (entry, relatedEntry, { model }) => {
3110
- if (fp.isNil(relatedEntry)) {
3111
- return;
3112
- }
3113
- const modelDef = strapi.getModel(model);
3114
- const relatedEntryCopy = copyNonLocalizedAttributes(modelDef, relatedEntry);
3115
- ___default.default.forEach(relatedEntryCopy, (value, field) => {
3116
- if (fp.isNil(entry[field])) {
3117
- entry[field] = value;
3118
- }
3119
- });
3120
- };
3121
- const getNestedPopulateOfNonLocalizedAttributes = (modelUID) => {
3122
- const schema2 = strapi.getModel(modelUID);
3123
- const scalarAttributes = getScalarAttributes(schema2);
3124
- const nonLocalizedAttributes = getNonLocalizedAttributes(schema2);
3125
- const allAttributes = [...scalarAttributes, ...nonLocalizedAttributes];
3126
- if (schema2.modelType === "component") {
3127
- allAttributes.push(...getRelationalAttributes(schema2));
3128
- }
3129
- const currentAttributesToPopulate = allAttributes.filter((value, index2, self) => {
3130
- return self.indexOf(value) === index2 && self.lastIndexOf(value) === index2;
3131
- });
3132
- const attributesToPopulate = [...currentAttributesToPopulate];
3133
- for (const attrName of currentAttributesToPopulate) {
3134
- const attr = schema2.attributes[attrName];
3135
- if (attr.type === "component") {
3136
- const nestedPopulate = getNestedPopulateOfNonLocalizedAttributes(attr.component).map(
3137
- (nestedAttr) => `${attrName}.${nestedAttr}`
3138
- );
3139
- attributesToPopulate.push(...nestedPopulate);
3140
- } else if (attr.type === "dynamiczone") {
3141
- attr.components.forEach((componentName) => {
3142
- const nestedPopulate = getNestedPopulateOfNonLocalizedAttributes(componentName).map(
3143
- (nestedAttr) => `${attrName}.${nestedAttr}`
3144
- );
3145
- attributesToPopulate.push(...nestedPopulate);
3146
- });
3147
- }
3148
- }
3149
- return attributesToPopulate;
3150
- };
3151
- const contentTypes = () => ({
3152
- isLocalizedContentType,
3153
- getValidLocale,
3154
- getLocalizedAttributes,
3155
- getNonLocalizedAttributes,
3156
- copyNonLocalizedAttributes,
3157
- fillNonLocalizedAttributes,
3158
- getNestedPopulateOfNonLocalizedAttributes
3159
- });
3160
- const services = {
3161
- permissions,
3162
- metrics,
3163
- localizations,
3164
- locales,
3165
- "iso-locales": isoLocalesService,
3166
- "content-types": contentTypes
3167
- };
3168
- const admin = {
3169
- type: "admin",
3170
- routes: [
3171
- {
3172
- method: "GET",
3173
- path: "/iso-locales",
3174
- handler: "iso-locales.listIsoLocales",
3175
- config: {
3176
- policies: [
3177
- "admin::isAuthenticatedAdmin",
3178
- {
3179
- name: "plugin::content-manager.hasPermissions",
3180
- config: { actions: ["plugin::i18n.locale.read"] }
3181
- }
3182
- ]
3183
- }
3184
- },
3185
- {
3186
- method: "GET",
3187
- path: "/locales",
3188
- handler: "locales.listLocales",
3189
- config: {
3190
- policies: ["admin::isAuthenticatedAdmin"]
3191
- }
3192
- },
3193
- {
3194
- method: "POST",
3195
- path: "/locales",
3196
- handler: "locales.createLocale",
3197
- config: {
3198
- policies: [
3199
- "admin::isAuthenticatedAdmin",
3200
- {
3201
- name: "plugin::content-manager.hasPermissions",
3202
- config: { actions: ["plugin::i18n.locale.create"] }
3203
- }
3204
- ]
3205
- }
3206
- },
3207
- {
3208
- method: "PUT",
3209
- path: "/locales/:id",
3210
- handler: "locales.updateLocale",
3211
- config: {
3212
- policies: [
3213
- "admin::isAuthenticatedAdmin",
3214
- {
3215
- name: "plugin::content-manager.hasPermissions",
3216
- config: { actions: ["plugin::i18n.locale.update"] }
3217
- }
3218
- ]
3219
- }
3220
- },
3221
- {
3222
- method: "DELETE",
3223
- path: "/locales/:id",
3224
- handler: "locales.deleteLocale",
3225
- config: {
3226
- policies: [
3227
- "admin::isAuthenticatedAdmin",
3228
- {
3229
- name: "plugin::content-manager.hasPermissions",
3230
- config: { actions: ["plugin::i18n.locale.delete"] }
3231
- }
3232
- ]
3233
- }
3234
- },
3235
- {
3236
- method: "POST",
3237
- path: "/content-manager/actions/get-non-localized-fields",
3238
- handler: "content-types.getNonLocalizedAttributes",
3239
- config: {
3240
- policies: ["admin::isAuthenticatedAdmin"]
3241
- }
3242
- }
3243
- ]
3244
- };
3245
- const contentApi = {
3246
- type: "content-api",
3247
- routes: [
3248
- {
3249
- method: "GET",
3250
- path: "/locales",
3251
- handler: "locales.listLocales"
3252
- }
3253
- ]
3254
- };
3255
- const routes = {
3256
- admin,
3257
- "content-api": contentApi
3258
- };
3259
- const allowedLocaleCodes = isoLocales.map(fp.prop("code"));
3260
- const createLocaleSchema = utils.yup.object().shape({
3261
- name: utils.yup.string().max(50).nullable(),
3262
- code: utils.yup.string().oneOf(allowedLocaleCodes).required(),
3263
- isDefault: utils.yup.boolean().required()
3264
- }).noUnknown();
3265
- const updateLocaleSchema = utils.yup.object().shape({
3266
- name: utils.yup.string().min(1).max(50).nullable(),
3267
- isDefault: utils.yup.boolean()
3268
- }).noUnknown();
3269
- const validateCreateLocaleInput = utils.validateYupSchema(createLocaleSchema);
3270
- const validateUpdateLocaleInput = utils.validateYupSchema(updateLocaleSchema);
3271
- const formatLocale = (locale2) => {
3272
- return {
3273
- ...locale2,
3274
- name: locale2.name || null
3275
- };
3276
- };
3277
- const { setCreatorFields } = utils__namespace;
3278
- const { ApplicationError: ApplicationError$1 } = utils__namespace.errors;
3279
- const sanitizeLocale = (locale2) => {
3280
- const model = strapi.getModel("plugin::i18n.locale");
3281
- return strapi.contentAPI.sanitize.output(locale2, model);
3282
- };
3283
- const controller$2 = {
3284
- async listLocales(ctx) {
3285
- const localesService = getService("locales");
3286
- const locales2 = await localesService.find();
3287
- const sanitizedLocales = await sanitizeLocale(locales2);
3288
- ctx.body = await localesService.setIsDefault(sanitizedLocales);
3289
- },
3290
- async createLocale(ctx) {
3291
- const { user } = ctx.state;
3292
- const body = ctx.request.body;
3293
- const { isDefault, ...localeToCreate } = body;
3294
- await validateCreateLocaleInput(body);
3295
- const localesService = getService("locales");
3296
- const existingLocale = await localesService.findByCode(body.code);
3297
- if (existingLocale) {
3298
- throw new ApplicationError$1("This locale already exists");
3299
- }
3300
- const localeToPersist = setCreatorFields({ user })(formatLocale(localeToCreate));
3301
- const locale2 = await localesService.create(localeToPersist);
3302
- if (isDefault) {
3303
- await localesService.setDefaultLocale(locale2);
3304
- }
3305
- const sanitizedLocale = await sanitizeLocale(locale2);
3306
- ctx.body = await localesService.setIsDefault(sanitizedLocale);
3307
- },
3308
- async updateLocale(ctx) {
3309
- const { user } = ctx.state;
3310
- const { id } = ctx.params;
3311
- const body = ctx.request.body;
3312
- const { isDefault, ...updates } = body;
3313
- await validateUpdateLocaleInput(body);
3314
- const localesService = getService("locales");
3315
- const existingLocale = await localesService.findById(id);
3316
- if (!existingLocale) {
3317
- return ctx.notFound("locale.notFound");
3318
- }
3319
- const allowedParams = ["name"];
3320
- const cleanUpdates = setCreatorFields({ user, isEdition: true })(fp.pick(allowedParams, updates));
3321
- const updatedLocale = await localesService.update({ id }, cleanUpdates);
3322
- if (isDefault) {
3323
- await localesService.setDefaultLocale(updatedLocale);
3324
- }
3325
- const sanitizedLocale = await sanitizeLocale(updatedLocale);
3326
- ctx.body = await localesService.setIsDefault(sanitizedLocale);
3327
- },
3328
- async deleteLocale(ctx) {
3329
- const { id } = ctx.params;
3330
- const localesService = getService("locales");
3331
- const existingLocale = await localesService.findById(id);
3332
- if (!existingLocale) {
3333
- return ctx.notFound("locale.notFound");
3334
- }
3335
- const defaultLocaleCode = await localesService.getDefaultLocale();
3336
- if (existingLocale.code === defaultLocaleCode) {
3337
- throw new ApplicationError$1("Cannot delete the default locale");
3338
- }
3339
- await localesService.delete({ id });
3340
- const sanitizedLocale = await sanitizeLocale(existingLocale);
3341
- ctx.body = await localesService.setIsDefault(sanitizedLocale);
3342
- }
3343
- };
3344
- const validateGetNonLocalizedAttributesSchema = utils.yup.object().shape({
3345
- model: utils.yup.string().required(),
3346
- id: utils.yup.mixed().when("model", {
3347
- is: (model) => fp.get("kind", strapi.contentType(model)) === "singleType",
3348
- then: utils.yup.strapiID().nullable(),
3349
- otherwise: utils.yup.strapiID().required()
3350
- }),
3351
- locale: utils.yup.string().required()
3352
- }).noUnknown().required();
3353
- const validateGetNonLocalizedAttributesInput = utils.validateYupSchema(
3354
- validateGetNonLocalizedAttributesSchema
3355
- );
3356
- const { ApplicationError } = utils.errors;
3357
- const { PUBLISHED_AT_ATTRIBUTE } = utils.contentTypes.constants;
3358
- const getLocalesProperty = fp.getOr([], "properties.locales");
3359
- const getFieldsProperty = fp.prop("properties.fields");
3360
- const getFirstLevelPath = fp.map((path) => path.split(".")[0]);
3361
- const controller$1 = {
3362
- async getNonLocalizedAttributes(ctx) {
3363
- const { user } = ctx.state;
3364
- const body = ctx.request.body;
3365
- const { model, id, locale: locale2 } = body;
3366
- await validateGetNonLocalizedAttributesInput({ model, id, locale: locale2 });
3367
- const {
3368
- copyNonLocalizedAttributes: copyNonLocalizedAttributes2,
3369
- isLocalizedContentType: isLocalizedContentType2,
3370
- getNestedPopulateOfNonLocalizedAttributes: getNestedPopulateOfNonLocalizedAttributes2
3371
- } = getService("content-types");
3372
- const {
3373
- default: { READ_ACTION, CREATE_ACTION }
3374
- } = strapi.service("admin::constants");
3375
- const modelDef = strapi.contentType(model);
3376
- const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes2(model);
3377
- if (!isLocalizedContentType2(modelDef)) {
3378
- throw new ApplicationError(`Model ${model} is not localized`);
3379
- }
3380
- const params = modelDef.kind === "singleType" ? {} : { id };
3381
- const entity = await strapi.db.query(model).findOne({ where: params, populate: attributesToPopulate });
3382
- if (!entity) {
3383
- return ctx.notFound();
3384
- }
3385
- const permissions2 = await strapi.admin.services.permission.findMany({
3386
- where: {
3387
- action: [READ_ACTION, CREATE_ACTION],
3388
- subject: model,
3389
- role: {
3390
- id: user.roles.map(fp.prop("id"))
3391
- }
3392
- }
3393
- });
3394
- const localePermissions = permissions2.filter((perm) => getLocalesProperty(perm).includes(locale2)).map(getFieldsProperty);
3395
- const permittedFields = fp.pipe(fp.flatten, getFirstLevelPath, fp.uniq)(localePermissions);
3396
- const nonLocalizedFields = copyNonLocalizedAttributes2(modelDef, entity);
3397
- const sanitizedNonLocalizedFields = fp.pick(permittedFields, nonLocalizedFields);
3398
- const availableLocalesResult = await strapi.plugins["content-manager"].service("document-metadata").getMetadata(model, entity, {
3399
- availableLocales: true
3400
- });
3401
- const availableLocales = availableLocalesResult.availableLocales.map(
3402
- (localeResult) => fp.pick(["id", "locale", PUBLISHED_AT_ATTRIBUTE], localeResult)
3403
- );
3404
- ctx.body = {
3405
- nonLocalizedFields: sanitizedNonLocalizedFields,
3406
- localizations: availableLocales.concat(
3407
- fp.pick(["id", "locale", PUBLISHED_AT_ATTRIBUTE], entity)
3408
- )
3409
- };
3410
- }
3411
- };
3412
- const controller = {
3413
- listIsoLocales(ctx) {
3414
- const isoLocalesService2 = getService("iso-locales");
3415
- ctx.body = isoLocalesService2.getIsoLocales();
3416
- }
3417
- };
3418
- const controllers = {
3419
- locales: controller$2,
3420
- "iso-locales": controller,
3421
- "content-types": controller$1
3422
- };
3423
- const index = () => ({
3424
- register,
3425
- bootstrap,
3426
- routes,
3427
- controllers,
3428
- contentTypes: contentTypes$1,
3429
- services
3430
- });
1
+ 'use strict';
2
+
3
+ var bootstrap = require('./bootstrap.js');
4
+ var register = require('./register.js');
5
+ var index$3 = require('./content-types/index.js');
6
+ var index$4 = require('./services/index.js');
7
+ var index$1 = require('./routes/index.js');
8
+ var index$2 = require('./controllers/index.js');
9
+
10
+ var index = (()=>({
11
+ register,
12
+ bootstrap,
13
+ routes: index$1,
14
+ controllers: index$2,
15
+ contentTypes: index$3,
16
+ services: index$4
17
+ }));
18
+
3431
19
  module.exports = index;
3432
20
  //# sourceMappingURL=index.js.map