@strapi/i18n 0.0.0-experimental.1610404a03d98b65f497f9adda35815021b8fd76 → 0.0.0-experimental.167a9bf54fe8f7f1746540f004c1e9d9b5ab21c6

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