UNPKG

@localazy/api-client

Version:

Official Node.js client for the Localazy API, providing a simple and type-safe way to integrate localization features into your JavaScript and TypeScript projects.

653 lines 64 kB
/* @localazy/api-client@2.2.0 * (c) 2026 Localazy <team@localazy.com> * @license MIT */ var A = class { api; constructor(A) { this.api = A; } static getId(A, I) { const _ = "string" == typeof A ? A : A.id || ""; if (!_) throw new Error(`Invalid ${I} ID.`); return _; } }, I = class extends A { async translate(I, _) { const { project: N, ...E } = I, S = A.getId(N, "project"); return await this.api.client.post(`/projects/${S}/ai`, E, _); } }, _ = class I extends A { async json(A, _) { const { project: N, file: E, langs: S } = A, e = await Promise.all(S.map((A) => this.api.files.listKeys({ project: N, file: E, lang: A }, _))); return Object.fromEntries(I.mapLanguages(S, e)); } static mapLanguages(A, _) { return A.map((A, N) => [A, I.mapResult(_[N])]); } static mapResult(A) { return A.reduce((A, I) => { const _ = I.key; if (_.length <= 1) { const N = _[0]; return void 0 !== N && (A[N] = I.value), A; } let N = A; for (let A = 0; A < _.length; A++) { const E = _[A], S = A === _.length - 1; void 0 !== E && (S ? N[E] = I.value : (void 0 === N[E] && (N[E] = {}), N = N[E])); } return A; }, {}); } }, N = class extends A { async list(I, _) { const { project: N } = I, E = A.getId(N, "project"); return await this.api.client.get(`/projects/${E}/files`, _); } async first(A, I) { const _ = await this.list(A, I); if (void 0 !== _[0]) return _[0]; throw new Error("File not found."); } async listKeys(A, I) { const _ = []; let N = { keys: [], next: "" }; do N = await this.listKeysPage({ ...A, next: N.next }, I), _.push(...N.keys); while (N.next); return _; } async listKeysPage(I, _) { const { project: N, file: E, lang: S, ...e } = I, R = A.getId(N, "project"), t = A.getId(E, "file"); return await this.api.client.get(`/projects/${R}/files/${t}/keys/${S}`, { ..._, params: e }); } async listKeysSinceEvent(A, I) { const { sinceEvent: _, ...N } = A, E = await this.listKeys({ ...N, event: !0 }, I), S = E.filter((A) => void 0 !== A.event && null !== A.event), e = S.length > 0 ? S.reduce((A, I) => Math.max(A, I.event ?? -Infinity), -Infinity) : null; return { keys: null != _ ? E.filter((A) => void 0 !== A.event && null !== A.event && A.event > _) : E, maxEvent: e }; } async getContents(I, _) { const { project: N, file: E, lang: S } = I, e = A.getId(N, "project"), R = A.getId(E, "file"); return await this.api.client.get(`/projects/${e}/files/${R}/download/${S}`, { ..._, responseType: "blob" }); } }, E = class extends A { async list(A) { return await this.api.client.get("/import/formats", A); } }, S = class extends A { async list(I, _) { const { project: N } = I, E = A.getId(N, "project"); return (await this.api.client.get(`/projects/${E}/glossary`, _)).glossaries; } async find(I, _) { const { project: N, glossaryRecord: E } = I, S = A.getId(N, "project"), e = "string" == typeof E ? E : E.id; return await this.api.client.get(`/projects/${S}/glossary/${e}`, _); } async create(I, _) { const { project: N, ...E } = I, S = A.getId(N, "project"); return (await this.api.client.post(`/projects/${S}/glossary`, E, _)).result; } async update(I, _) { const { project: N, glossaryRecord: E, ...S } = I, e = A.getId(N, "project"), R = "string" == typeof E ? E : E.id; await this.api.client.put(`/projects/${e}/glossary/${R}`, S, _); } async delete(I, _) { const { project: N, glossaryRecord: E } = I, S = A.getId(N, "project"), e = "string" == typeof E ? E : E.id; await this.api.client.delete(`/projects/${S}/glossary/${e}`, _); } }, e = (A, I) => ({ ...A.i18nOptions, files: [...I.map((I) => ({ name: "content.json", ...A.fileOptions, content: { type: "json", ...A.contentOptions, ...I } }))] }), R = (A = 150) => new Promise((I) => { setTimeout(I, A); }); function t(A) { if ("object" != typeof A) return !1; if (null == A) return !1; if (null === Object.getPrototypeOf(A)) return !0; if ("[object Object]" !== Object.prototype.toString.call(A)) { const I = A[Symbol.toStringTag]; return null != I && !!Object.getOwnPropertyDescriptor(A, Symbol.toStringTag)?.writable && A.toString() === `[object ${I}]`; } let I = A; for (; null !== Object.getPrototypeOf(I);) I = Object.getPrototypeOf(I); return Object.getPrototypeOf(A) === I; } function n() {} function r(A) { return Object.getOwnPropertySymbols(A).filter((I) => Object.prototype.propertyIsEnumerable.call(A, I)); } function L(A) { return null == A ? void 0 === A ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(A); } var a = "[object RegExp]", s = "[object String]", O = "[object Number]", T = "[object Boolean]", H = "[object Arguments]", C = "[object Symbol]", U = "[object Date]", o = "[object Map]", G = "[object Set]", i = "[object Array]", c = "[object ArrayBuffer]", M = "[object Object]", D = "[object DataView]", B = "[object Uint8Array]", u = "[object Uint8ClampedArray]", l = "[object Uint16Array]", K = "[object Uint32Array]", f = "[object Int8Array]", P = "[object Int16Array]", p = "[object Int32Array]", y = "[object Float32Array]", Y = "[object Float64Array]", h = "object" == typeof globalThis && globalThis || "object" == typeof window && window || "object" == typeof self && self || "object" == typeof global && global || function() { return this; }() || Function("return this")(); function b(A) { return void 0 !== h.Buffer && h.Buffer.isBuffer(A); } function g(A) { return null != A && "function" != typeof A && function(A) { return Number.isSafeInteger(A) && A >= 0; }(A.length); } function d(A, I = 1) { return 0 !== (I = Math.max(Math.floor(I), 0)) && g(A) ? function(A, I) { if (!Number.isInteger(I) || I <= 0) throw new Error("Size must be an integer greater than zero."); const _ = Math.ceil(A.length / I), N = Array(_); for (let E = 0; E < _; E++) { const _ = E * I, S = _ + I; N[E] = A.slice(_, S); } return N; }((_ = A, Array.isArray(_) ? _ : Array.from(_)), I) : []; var _; } function m(A) { if (null == A) return ""; if ("string" == typeof A) return A; if (Array.isArray(A)) return A.map(m).join(","); const I = String(A); return "0" === I && Object.is(Number(A), -0) ? "-0" : I; } function F(A) { return "string" == typeof A || "symbol" == typeof A ? A : Object.is(A?.valueOf?.(), -0) ? "-0" : String(A); } function j(A) { if (Array.isArray(A)) return A.map(F); if ("symbol" == typeof A) return [A]; const I = [], _ = (A = m(A)).length; if (0 === _) return I; let N = 0, E = "", S = "", e = !1; for (46 === A.charCodeAt(0) && (I.push(""), N++); N < _;) { const R = A[N]; S ? "\\" === R && N + 1 < _ ? (N++, E += A[N]) : R === S ? S = "" : E += R : e ? "\"" === R || "'" === R ? S = R : "]" === R ? (e = !1, I.push(E), E = "") : E += R : "[" === R ? (e = !0, E && (I.push(E), E = "")) : "." === R ? E && (I.push(E), E = "") : E += R, N++; } return E && I.push(E), I; } function k(A) { return "__proto__" === A; } function Z(A, I, _) { if (null == A) return _; switch (typeof I) { case "string": { if (k(I)) return _; const N = A[I]; return void 0 === N ? function(A) { switch (typeof A) { case "number": case "symbol": return !1; case "string": return A.includes(".") || A.includes("[") || A.includes("]"); } }(I) ? Z(A, j(I), _) : _ : N; } case "number": case "symbol": { "number" == typeof I && (I = F(I)); const N = A[I]; return void 0 === N ? _ : N; } default: { if (Array.isArray(I)) return function(A, I, _) { if (0 === I.length) return _; let N = A; for (let A = 0; A < I.length; A++) { if (null == N) return _; if (k(I[A])) return _; N = N[I[A]]; } return void 0 === N ? _ : N; }(A, I, _); if (k(I = Object.is(I?.valueOf(), -0) ? "-0" : String(I))) return _; const N = A[I]; return void 0 === N ? _ : N; } } } function W(A) { return null !== A && ("object" == typeof A || "function" == typeof A); } function w(A) { return null == A || "object" != typeof A && "function" != typeof A; } function V(A) { return ArrayBuffer.isView(A) && !(A instanceof DataView); } function J(A, I, _, N = /* @__PURE__ */ new Map(), E = void 0) { const S = E?.(A, I, _, N); if (void 0 !== S) return S; if (w(A)) return A; if (N.has(A)) return N.get(A); if (Array.isArray(A)) { const I = new Array(A.length); N.set(A, I); for (let S = 0; S < A.length; S++) I[S] = J(A[S], S, _, N, E); return Object.hasOwn(A, "index") && (I.index = A.index), Object.hasOwn(A, "input") && (I.input = A.input), I; } if (A instanceof Date) return new Date(A.getTime()); if (A instanceof RegExp) { const I = new RegExp(A.source, A.flags); return I.lastIndex = A.lastIndex, I; } if (A instanceof Map) { const I = /* @__PURE__ */ new Map(); N.set(A, I); for (const [S, e] of A) I.set(S, J(e, S, _, N, E)); return I; } if (A instanceof Set) { const I = /* @__PURE__ */ new Set(); N.set(A, I); for (const S of A) I.add(J(S, void 0, _, N, E)); return I; } if (b(A)) return A.subarray(); if (V(A)) { const I = new (Object.getPrototypeOf(A)).constructor(A.length); N.set(A, I); for (let S = 0; S < A.length; S++) I[S] = J(A[S], S, _, N, E); return I; } if (A instanceof ArrayBuffer || "undefined" != typeof SharedArrayBuffer && A instanceof SharedArrayBuffer) return A.slice(0); if (A instanceof DataView) { const I = new DataView(A.buffer.slice(0), A.byteOffset, A.byteLength); return N.set(A, I), v(I, A, _, N, E), I; } if ("undefined" != typeof File && A instanceof File) { const I = new File([A], A.name, { type: A.type }); return N.set(A, I), v(I, A, _, N, E), I; } if ("undefined" != typeof Blob && A instanceof Blob) { const I = new Blob([A], { type: A.type }); return N.set(A, I), v(I, A, _, N, E), I; } if (A instanceof Error) { const I = structuredClone(A); return N.set(A, I), I.message = A.message, I.name = A.name, I.stack = A.stack, I.cause = A.cause, I.constructor = A.constructor, v(I, A, _, N, E), I; } if (A instanceof Boolean) { const I = new Boolean(A.valueOf()); return N.set(A, I), v(I, A, _, N, E), I; } if (A instanceof Number) { const I = new Number(A.valueOf()); return N.set(A, I), v(I, A, _, N, E), I; } if (A instanceof String) { const I = new String(A.valueOf()); return N.set(A, I), v(I, A, _, N, E), I; } if ("object" == typeof A && function(A) { switch (L(A)) { case H: case i: case c: case D: case T: case U: case y: case Y: case f: case P: case p: case o: case O: case M: case a: case G: case s: case C: case B: case u: case l: case K: return !0; default: return !1; } }(A)) { const I = Object.create(Object.getPrototypeOf(A)); return N.set(A, I), v(I, A, _, N, E), I; } return A; } function v(A, I, _ = A, N, E) { const S = [...Object.keys(I), ...r(I)]; for (let e = 0; e < S.length; e++) { const R = S[e], t = Object.getOwnPropertyDescriptor(A, R); (null == t || t.writable) && (A[R] = J(I[R], R, _, N, E)); } } function z(A, I) { return function(A, I) { return J(A, void 0, A, /* @__PURE__ */ new Map(), I); }(A, (_, N, E, S) => { const e = I?.(_, N, E, S); if (void 0 !== e) return e; if ("object" == typeof A) { if ("[object Object]" === L(A) && "function" != typeof A.constructor) { const I = {}; return S.set(A, I), v(I, A, E, S), I; } switch (Object.prototype.toString.call(A)) { case O: case s: case T: { const I = new A.constructor(A?.valueOf()); return v(I, A), I; } case H: { const I = {}; return v(I, A), I.length = A.length, I[Symbol.iterator] = A[Symbol.iterator], I; } default: return; } } }); } function x(A) { return z(A); } function $(A) { return null !== A && "object" == typeof A && "[object Arguments]" === L(A); } var Q = /^(?:0|[1-9]\d*)$/; function q(A, I = Number.MAX_SAFE_INTEGER) { switch (typeof A) { case "number": return Number.isInteger(A) && A >= 0 && A < I; case "symbol": return !1; case "string": return Q.test(A); } } function X(A) { return "object" == typeof A && null !== A; } function AA(A) { return X(A) && g(A); } var IA = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, _A = /^\w*$/; function NA(A, I) { return !Array.isArray(A) && (!("number" != typeof A && "boolean" != typeof A && null != A && !function(A) { return "symbol" == typeof A || A instanceof Symbol; }(A)) || "string" == typeof A && (_A.test(A) || !IA.test(A)) || null != I && Object.hasOwn(I, A)); } var EA = (A, I, _) => { const N = A[I]; Object.hasOwn(A, I) && function(A, I) { return A === I || Number.isNaN(A) && Number.isNaN(I); }(N, _) && (void 0 !== _ || I in A) || (A[I] = _); }; function SA(A) { return V(A); } function eA(A, I, _, N) { if (w(A) && (A = Object(A)), null == I || "object" != typeof I) return A; if (N.has(I)) return function(A) { if (w(A)) return A; if (Array.isArray(A) || V(A) || A instanceof ArrayBuffer || "undefined" != typeof SharedArrayBuffer && A instanceof SharedArrayBuffer) return A.slice(0); const I = Object.getPrototypeOf(A); if (null == I) return Object.assign(Object.create(I), A); const _ = I.constructor; if (A instanceof Date || A instanceof Map || A instanceof Set) return new _(A); if (A instanceof RegExp) { const I = new _(A); return I.lastIndex = A.lastIndex, I; } if (A instanceof DataView) return new _(A.buffer.slice(0)); if (A instanceof Error) { let I; return I = A instanceof AggregateError ? new _(A.errors, A.message, { cause: A.cause }) : new _(A.message, { cause: A.cause }), I.stack = A.stack, Object.assign(I, A), I; } return "undefined" != typeof File && A instanceof File ? new _([A], A.name, { type: A.type, lastModified: A.lastModified }) : "object" == typeof A ? Object.assign(Object.create(I), A) : A; }(N.get(I)); if (N.set(I, A), Array.isArray(I)) { I = I.slice(); for (let A = 0; A < I.length; A++) I[A] = I[A] ?? void 0; } const E = [...Object.keys(I), ...r(I)]; for (let S = 0; S < E.length; S++) { const e = E[S]; if (k(e)) continue; let R = I[e], n = A[e]; if ($(R) && (R = { ...R }), $(n) && (n = { ...n }), b(R) && (R = x(R)), Array.isArray(R)) if (Array.isArray(n)) { const A = [], I = Reflect.ownKeys(n); for (let _ = 0; _ < I.length; _++) { const N = I[_]; A[N] = n[N]; } n = A; } else if (AA(n)) { const A = []; for (let I = 0; I < n.length; I++) A[I] = n[I]; n = A; } else n = []; const r = _(n, R, e, A, I, N); void 0 !== r ? A[e] = r : Array.isArray(R) || X(n) && X(R) && (t(n) || t(R) || SA(n) || SA(R)) ? A[e] = eA(n, R, _, N) : null == n && t(R) ? A[e] = eA({}, R, _, N) : null == n && SA(R) ? A[e] = x(R) : void 0 !== n && void 0 === R || (A[e] = R); } return A; } function RA(A, ...I) { return function(A, ...I) { const _ = I.slice(0, -1), N = I[I.length - 1]; let E = A; for (let A = 0; A < _.length; A++) E = eA(E, _[A], N, /* @__PURE__ */ new Map()); return E; }(A, ...I, n); } function tA(A, I, _, N) { let E; return E = "function" == typeof N ? N : () => {}, function(A, I, _, N) { if (null == A && !W(A)) return A; let E; E = NA(I, A) ? [I] : Array.isArray(I) ? I : j(I); const S = _(Z(A, E)); let e = A; for (let I = 0; I < E.length && null != e; I++) { const _ = F(E[I]); if (k(_)) continue; let R; if (I === E.length - 1) R = S; else { const S = e[_], t = N?.(S, _, A); R = void 0 !== t ? t : W(S) ? S : q(E[I + 1]) ? [] : {}; } EA(e, _, R), e = e[_]; } return A; }(A, I, () => _, E); } var nA, rA = class A { static CHUNK_LIMIT = 99e3; static slice(I) { return d(A.sliceByValue(I), A.CHUNK_LIMIT).map((I) => A.mergeChunkValues(I)); } static sliceByValue(I, _ = []) { return Object.entries(I).reduce((I, [N, E]) => (t(E) && !N.startsWith("@meta:") ? I.push(...A.sliceByValue(E, [..._, N])) : _.length > 1 ? I.push(tA({}, [..._, N].join("."), E, Object)) : void 0 !== _[0] && I.push({ [_[0]]: { [N]: E } }), I), []); } static mergeChunkValues(A) { return RA(...A); } }, LA = class extends A { async json(I, _) { const { project: N, json: E } = I, S = A.getId(N, "project"), t = e(I, rA.slice(E)), { result: n } = await this.api.client.post(`/projects/${S}/import`, t, _); return await R(), this.getImportedFile(N, t, n); } async getProgress(I, _) { const { project: N, importBatch: E } = I, S = A.getId(N, "project"); return await this.api.client.get(`/projects/${S}/import/${E}`, _); } async getImportedFile(A, I, _) { return { ...(await this.api.files.list({ project: A })).find((A) => I.files.some((I) => A.name === (I.name || "content.json") && A.path === I.path)), importBatch: _ }; } }, aA = class extends A { async update(I, _) { const { project: N, key: E, ...S } = I, e = A.getId(N, "project"), R = A.getId(E, "key"); await this.api.client.put(`/projects/${e}/keys/${R}`, S, _); } async delete(I, _) { const { project: N, key: E } = I, S = A.getId(N, "project"), e = A.getId(E, "key"); await this.api.client.delete(`/projects/${S}/keys/${e}`, _); } async deprecate(I, _) { const { project: N, phrases: E } = I, S = E.map((A) => "object" == typeof A && "id" in A ? A.id : A), e = A.getId(N, "project"); await this.api.client.post(`/projects/${e}/keys/deprecate`, { phrases: S }, _); } }, sA = class extends A { async list(A, I) { return await this.api.client.get("/projects", { ...I, params: A }); } async first(A, I) { const _ = await this.list(A, I); if (void 0 !== _[0]) return _[0]; throw new Error("Project not found."); } }, OA = class extends A { async list(I, _) { const { project: N } = I, E = A.getId(N, "project"); return await this.api.client.get(`/projects/${E}/screenshots`, _); } async listTags(I, _) { const { project: N } = I, E = A.getId(N, "project"); return await this.api.client.get(`/projects/${E}/screenshots/tags`, _); } async create(I, _) { const { project: N } = I, E = A.getId(N, "project"); return (await this.api.client.post(`/projects/${E}/screenshots`, I.encodedData, _)).id; } async updateImageData(I, _) { const { project: N, screenshot: E } = I, S = A.getId(N, "project"), e = A.getId(E, "screenshot"); await this.api.client.post(`/projects/${S}/screenshots/${e}`, I.encodedData, _); } async update(I, _) { const { project: N, screenshot: E, ...S } = I, e = A.getId(N, "project"), R = A.getId(E, "screenshot"); await this.api.client.put(`/projects/${e}/screenshots/${R}`, S, _); } async delete(I, _) { const { project: N, screenshot: E } = I, S = A.getId(N, "project"), e = A.getId(E, "screenshot"); await this.api.client.delete(`/projects/${S}/screenshots/${e}`, _); } }, TA = class extends A { async list(I, _) { const { project: N } = I, E = A.getId(N, "project"); return (await this.api.client.get(`/projects/${E}/webhooks`, _)).items; } async update(I, _) { const { project: N, ...E } = I, S = A.getId(N, "project"); await this.api.client.post(`/projects/${S}/webhooks`, E, _); } async getSecret(I, _) { const { project: N } = I, E = A.getId(N, "project"); return (await this.api.client.get(`/projects/${E}/webhooks/secret`, _)).secret; } }, HA = class { apiUrl; authToken; constructor(A) { this.apiUrl = A.apiUrl || "https://api.localazy.com", this.authToken = A.authToken; } async get(A, I) { return this.makeRequest("GET", A, I); } async post(A, I, _) { return this.makeRequest("POST", A, _, I); } async put(A, I, _) { return this.makeRequest("PUT", A, _, I); } async delete(A, I) { return this.makeRequest("DELETE", A, I); } urlFactory(A) { return `${this.apiUrl}${A}`; } configFactory(A, I, _) { const N = { method: A, headers: { ...I?.headers || {}, Authorization: `Bearer ${this.authToken}`, Accept: "application/json", "Content-Type": "application/json" } }; return _ && (N.body = JSON.stringify(_)), N; } async makeRequest(A, I, _, N) { let E = this.urlFactory(I); if ("GET" === A && _?.params) E += `?${new URLSearchParams(_.params).toString()}`; const S = await fetch(E, this.configFactory(A, _, N)), e = S.headers.get("content-type"), R = "blob" === _?.responseType || !1, t = e?.startsWith("application/json") || !1; let n; if (n = R ? await S.blob() : t ? await S.json() : await S.text(), S.status >= 400) { const A = t && n.error ? n.error : S.statusText; throw new Error(`Request failed with status code ${S.status.toString()}: ${A}`); } return n; } }, CA = class { client; ai; projects; import; export; formats; files; keys; glossary; webhooks; screenshots; constructor(A) { this.client = new HA(A), this.ai = new I(this), this.projects = new sA(this), this.import = new LA(this), this.export = new _(this), this.formats = new E(this), this.files = new N(this), this.keys = new aA(this), this.glossary = new S(this), this.webhooks = new TA(this), this.screenshots = new OA(this); } }, UA = function(A) { return A.NONE = "none", A.FILE = "file", A.PROJECT = "project", A; }({}), oA = function(A) { return A.NOT_SPECIFIED = "not_specified", A.FORMAL = "formal", A.INFORMAL = "informal", A; }({}), GA = function(A) { return A.PUBLIC = "public", A.PRIVATE = "private", A.RESTRICTED = "restricted", A; }({}), iA = function(A) { return A.NOT_FOUND = "not_found", A.SCHEDULED = "scheduled", A.IN_PROGRESS = "in_progress", A.DONE = "done", A.INVALID_ID = "invalid_id", A.ERROR = "error", A; }({}), cA = function(A) { return A.NONE = "none", A.TRANSLATOR = "translator", A.TRUSTED_TRANSLATOR = "trusted_translator", A.REVIEWER = "reviewer", A.MANAGER = "manager", A.OWNER = "owner", A.DEVELOPER = "developer", A; }({}), MA = function(A) { return A.PROJECT_PUBLISHED = "project_published", A.IMPORT_FINISHED = "import_finished", A.IMPORT_FINISHED_EMPTY = "import_finished_empty", A.COMMENT_ADDED = "comment_added", A.TAG_PROMOTED = "tag_promoted", A; }({}); (function(A) { A.LATIN_AMERICAN_SPANISH = "es_419", A.SIMPLIFIED_CHINESE = "zh#Hans", A.AFAR = "aa", A.AFAR_DJIBOUTI = "aa_DJ", A.AFAR_ETHIOPIA = "aa_ET", A.ABKHAZIAN = "ab", A.ABKHAZIAN_GEORGIA = "ab_GE", A.ACHINESE = "ace", A.ACHINESE_INDONESIA = "ace_ID", A.ACOLI = "ach", A.ACOLI_UGANDA = "ach_UG", A.ADANGME = "ada", A.ADYGHE = "ady", A.ADYGHE_RUSSIA = "ady_RU", A.AVESTAN = "ae", A.TUNISIAN_ARABIC = "aeb", A.TUNISIAN_ARABIC_TUNISIA = "aeb_TN", A.AFRIKAANS = "af", A.AFRIKAANS_NAMIBIA = "af_NA", A.AFRIKAANS_SOUTH_AFRICA = "af_ZA", A.AGHEM = "agq", A.AINU = "ain", A.AINU_LATIN = "ain#Latn", A.AKAN = "ak", A.AKAN_GHANA = "ak_GH", A.AKKADIAN = "akk", A.ALABAMA = "akz", A.ALEUT = "ale", A.GHEG_ALBANIAN = "aln", A.GHEG_ALBANIAN_KOSOVO = "aln_XK", A.SOUTHERN_ALTAI = "alt", A.AMHARIC = "am", A.AMHARIC_ETHIOPIA = "am_ET", A.ARAGONESE = "an", A.OLD_ENGLISH = "ang", A.ANGIKA = "anp", A.ARABIC = "ar", A.ARABIC_UNITED_ARAB_EMIRATES = "ar_AE", A.ARABIC_BAHRAIN = "ar_BH", A.ARABIC_DJIBOUTI = "ar_DJ", A.ARABIC_ALGERIA = "ar_DZ", A.ARABIC_EGYPT = "ar_EG", A.ARABIC_WESTERN_SAHARA = "ar_EH", A.ARABIC_ERITREA = "ar_ER", A.ARABIC_ISRAEL = "ar_IL", A.ARABIC_IRAQ = "ar_IQ", A.ARABIC_JORDAN = "ar_JO", A.ARABIC_COMOROS = "ar_KM", A.ARABIC_KUWAIT = "ar_KW", A.ARABIC_LEBANON = "ar_LB", A.ARABIC_LIBYA = "ar_LY", A.ARABIC_MOROCCO = "ar_MA", A.ARABIC_MAURITANIA = "ar_MR", A.ARABIC_OMAN = "ar_OM", A.ARABIC_PALESTINIAN_TERRITORIES = "ar_PS", A.ARABIC_QATAR = "ar_QA", A.ARABIC_SAUDI_ARABIA = "ar_SA", A.ARABIC_SUDAN = "ar_SD", A.ARABIC_SOMALIA = "ar_SO", A.ARABIC_SYRIA = "ar_SY", A.CZECH = "cs", A.CZECH_CZECHIA = "cs_CZ", A.ARABIC_CHAD = "ar_TD", A.ARABIC_TUNISIA = "ar_TN", A.ARABIC_YEMEN = "ar_YE", A.ARABIC_IRAN = "ar_IR", A.ARABIC_SOUTH_SUDAN = "ar_SS", A.ARABIC_UNITED_ARAB_EMIRATES_SYRIAC = "ar_AE#Syrc", A.ARABIC_BAHRAIN_SYRIAC = "ar_BH#Syrc", A.ARABIC_DJIBOUTI_SYRIAC = "ar_DJ#Syrc", A.ARABIC_ALGERIA_SYRIAC = "ar_DZ#Syrc", A.ARABIC_EGYPT_SYRIAC = "ar_EG#Syrc", A.ARABIC_WESTERN_SAHARA_SYRIAC = "ar_EH#Syrc", A.ARABIC_ERITREA_SYRIAC = "ar_ER#Syrc", A.ARABIC_ISRAEL_SYRIAC = "ar_IL#Syrc", A.ARABIC_IRAQ_SYRIAC = "ar_IQ#Syrc", A.ARABIC_JORDAN_SYRIAC = "ar_JO#Syrc", A.ARABIC_COMOROS_SYRIAC = "ar_KM#Syrc", A.ARABIC_KUWAIT_SYRIAC = "ar_KW#Syrc", A.ARABIC_LEBANON_SYRIAC = "ar_LB#Syrc", A.ARABIC_LIBYA_SYRIAC = "ar_LY#Syrc", A.ARABIC_MOROCCO_SYRIAC = "ar_MA#Syrc", A.ARABIC_MAURITANIA_SYRIAC = "ar_MR#Syrc", A.ARABIC_OMAN_SYRIAC = "ar_OM#Syrc", A.ARABIC_PALESTINIAN_TERRITORIES_SYRIAC = "ar_PS#Syrc", A.ENGLISH = "en", A.ARABIC_QATAR_SYRIAC = "ar_QA#Syrc", A.ARABIC_SAUDI_ARABIA_SYRIAC = "ar_SA#Syrc", A.ARABIC_SUDAN_SYRIAC = "ar_SD#Syrc", A.ARABIC_SOMALIA_SYRIAC = "ar_SO#Syrc", A.ARABIC_SYRIA_SYRIAC = "ar_SY#Syrc", A.ARABIC_CHAD_SYRIAC = "ar_TD#Syrc", A.ARABIC_TUNISIA_SYRIAC = "ar_TN#Syrc", A.ARABIC_YEMEN_SYRIAC = "ar_YE#Syrc", A.ARABIC_IRAN_SYRIAC = "ar_IR#Syrc", A.ARABIC_SOUTH_SUDAN_SYRIAC = "ar_SS#Syrc", A.ARAMAIC = "arc", A.MAPUCHE = "arn", A.ARAONA = "aro", A.ARAPAHO = "arp", A.ALGERIAN_ARABIC = "arq", A.ALGERIAN_ARABIC_ALGERIA = "arq_DZ", A.NAJDI_ARABIC = "ars", A.ARAWAK = "arw", A.MOROCCAN_ARABIC = "ary", A.MOROCCAN_ARABIC_MOROCCO = "ary_MA", A.EGYPTIAN_ARABIC = "arz", A.EGYPTIAN_ARABIC_EGYPT = "arz_EG", A.ASSAMESE = "as", A.ASSAMESE_INDIA = "as_IN", A.ASU = "asa", A.ASTURIAN = "ast", A.ASTURIAN_SPAIN = "ast_ES", A.AVARIC = "av", A.AVARIC_RUSSIA = "av_RU", A.KOTAVA = "avk", A.AWADHI = "awa", A.AWADHI_INDIA = "awa_IN", A.AYMARA = "ay", A.AYMARA_BOLIVIA = "ay_BO", A.AZERBAIJANI_AZERBAIJAN_ARABIC = "az_AZ#Arab", A.AZERBAIJANI_IRAQ = "az_IQ", A.AZERBAIJANI_IRAN = "az_IR", A.AZERBAIJANI_RUSSIA_ARABIC = "az_RU#Arab", A.AZERBAIJANI_ARABIC = "az#Arab", A.AZERBAIJANI_AZERBAIJAN_CYRILLIC = "az_AZ#Cyrl", A.AZERBAIJANI_IRAQ_CYRILLIC = "az_IQ#Cyrl", A.AZERBAIJANI_IRAN_CYRILLIC = "az_IR#Cyrl", A.AZERBAIJANI_RUSSIA = "az_RU", A.AZERBAIJANI_CYRILLIC = "az#Cyrl", A.AZERBAIJANI_IRAQ_LATIN = "az_IQ#Latn", A.AZERBAIJANI_IRAN_LATIN = "az_IR#Latn", A.AZERBAIJANI_RUSSIA_LATIN = "az_RU#Latn", A.AZERBAIJANI = "az", A.BASHKIR = "ba", A.BASHKIR_RUSSIA = "ba_RU", A.BALUCHI = "bal", A.BALUCHI_AFGHANISTAN = "bal_AF", A.BALUCHI_IRAN = "bal_IR", A.BALUCHI_PAKISTAN = "bal_PK", A.BALUCHI_AFGHANISTAN_LATIN = "bal_AF#Latn", A.BALUCHI_IRAN_LATIN = "bal_IR#Latn", A.BALUCHI_PAKISTAN_LATIN = "bal_PK#Latn", A.BALINESE = "ban", A.BALINESE_INDONESIA = "ban_ID", A.BAVARIAN = "bar", A.BAVARIAN_AUSTRIA = "bar_AT", A.BAVARIAN_GERMANY = "bar_DE", A.BASAA = "bas", A.BAMUN = "bax", A.BATAK_TOBA = "bbc", A.BATAK_TOBA_INDONESIA = "bbc_ID", A.GHOMALA = "bbj", A.BELARUSIAN = "be", A.BELARUSIAN_BELARUS = "be_BY", A.BEJA = "bej", A.BEJA_SUDAN = "bej_SD", A.BEMBA = "bem", A.BEMBA_ZAMBIA = "bem_ZM", A.BETAWI = "bew", A.BETAWI_INDONESIA = "bew_ID", A.BENA = "bez", A.BAFUT = "bfd", A.BADAGA = "bfq", A.BULGARIAN = "bg", A.BULGARIAN_BULGARIA = "bg_BG", A.WESTERN_BALOCHI = "bgn", A.WESTERN_BALOCHI_PAKISTAN = "bgn_PK", A.BHOJPURI = "bho", A.BHOJPURI_INDIA = "bho_IN", A.BHOJPURI_MAURITIUS = "bho_MU", A.BHOJPURI_NEPAL = "bho_NP", A.BISLAMA = "bi", A.BISLAMA_VANUATU = "bi_VU", A.BIKOL = "bik", A.BIKOL_PHILIPPINES = "bik_PH", A.BINI = "bin", A.BINI_NIGERIA = "bin_NG", A.BANJAR = "bjn", A.BANJAR_INDONESIA = "bjn_ID", A.KOM = "bkm", A.SIKSIKA = "bla", A.BAMBARA_MALI = "bm_ML", A.BAMBARA = "bm", A.BAMBARA_MALI_N_KO = "bm_ML#Nkoo", A.BAMBARA_N_KO = "bm#Nkoo", A.BANGLA = "bn", A.BANGLA_BANGLADESH = "bn_BD", A.BANGLA_INDIA = "bn_IN", A.TIBETAN = "bo", A.TIBETAN_CHINA = "bo_CN", A.BISHNUPRIYA = "bpy", A.BAKHTIARI = "bqi", A.BAKHTIARI_IRAN = "bqi_IR", A.BRETON = "br", A.BRAJ = "bra", A.BRAHUI = "brh", A.BRAHUI_PAKISTAN = "brh_PK", A.BRAHUI_PAKISTAN_LATIN = "brh_PK#Latn", A.BODO = "brx", A.BODO_INDIA = "brx_IN", A.BOSNIAN_BOSNIA_AND_HERZEGOVINA_CYRILLIC = "bs_BA#Cyrl", A.BOSNIAN_CYRILLIC = "bs#Cyrl", A.BOSNIAN = "bs", A.AKOOSE = "bss", A.BURIAT = "bua", A.BUGINESE = "bug", A.BUGINESE_INDONESIA = "bug_ID", A.BULU = "bum", A.BULU_CAMEROON = "bum_CM", A.BLIN = "byn", A.MEDUMBA = "byv", A.CATALAN = "ca", A.CATALAN_ANDORRA = "ca_AD", A.CATALAN_SPAIN = "ca_ES", A.CADDO = "cad", A.CARIB = "car", A.CAYUGA = "cay", A.ATSAM = "cch", A.CHAKMA_BANGLA = "ccp#Beng", A.CHAKMA = "ccp", A.CHECHEN = "ce", A.CHECHEN_RUSSIA = "ce_RU", A.CEBUANO = "ceb", A.CEBUANO_PHILIPPINES = "ceb_PH", A.CHIGA = "cgg", A.CHIGA_UGANDA = "cgg_UG", A.CHAMORRO = "ch", A.CHAMORRO_GUAM = "ch_GU", A.CHUUKESE = "chk", A.CHUUKESE_MICRONESIA = "chk_FM", A.MARI = "chm", A.CHINOOK_JARGON = "chn", A.CHOCTAW = "cho", A.CHIPEWYAN = "chp", A.CHIPEWYAN_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = "chp#Cans", A.CHEROKEE = "chr", A.CHEYENNE = "chy", A.CHICKASAW = "cic", A.CENTRAL_KURDISH = "ckb", A.CENTRAL_KURDISH_IRAQ = "ckb_IQ", A.CENTRAL_KURDISH_IRAN = "ckb_IR", A.CORSICAN = "co", A.COPTIC_ARABIC = "cop#Arab", A.COPTIC_GREEK = "cop#Grek", A.CAPIZNON = "cps", A.CREE = "cr", A.CREE_LATIN = "cr#Latn", A.CRIMEAN_TURKISH = "crh", A.SESELWA_CREOLE_FRENCH = "crs", A.SESELWA_CREOLE_FRENCH_SEYCHELLES = "crs_SC", A.CZECH_SLOVAKIA = "cs_SK", A.KASHUBIAN = "csb", A.KASHUBIAN_POLAND = "csb_PL", A.CHURCH_SLAVIC = "cu", A.CHUVASH = "cv", A.CHUVASH_RUSSIA = "cv_RU", A.WELSH = "cy", A.WELSH_UNITED_KINGDOM = "cy_GB", A.DANISH = "da", A.DANISH_DENMARK = "da_DK", A.DANISH_GERMANY = "da_DE", A.DAKOTA = "dak", A.DARGWA = "dar", A.TAITA = "dav", A.GERMAN = "de", A.AUSTRIAN_GERMAN = "de_AT", A.GERMAN_BELGIUM = "de_BE", A.SWISS_HIGH_GERMAN = "de_CH", A.GERMAN_GERMANY = "de_DE", A.GERMAN_LIECHTENSTEIN = "de_LI", A.GERMAN_LUXEMBOURG = "de_LU", A.GERMAN_BRAZIL = "de_BR", A.GERMAN_CZECHIA = "de_CZ", A.GERMAN_DENMARK = "de_DK", A.GERMAN_FRANCE = "de_FR", A.GERMAN_UNITED_KINGDOM = "de_GB", A.GERMAN_HUNGARY = "de_HU", A.GERMAN_KAZAKHSTAN = "de_KZ", A.GERMAN_NETHERLANDS = "de_NL", A.GERMAN_POLAND = "de_PL", A.GERMAN_SLOVENIA = "de_SI", A.GERMAN_SLOVAKIA = "de_SK", A.GERMAN_UNITED_STATES = "de_US", A.DELAWARE = "del", A.SLAVE = "den", A.SLAVE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = "den#Cans", A.DOGRIB = "dgr", A.DINKA = "din", A.ZARMA = "dje", A.ZARMA_NIGER = "dje_NE", A.DOGRI = "doi", A.DOGRI_INDIA = "doi_IN", A.LOWER_SORBIAN = "dsb", A.CENTRAL_DUSUN = "dtp", A.DUALA = "dua", A.MIDDLE_DUTCH = "dum", A.DIVEHI = "dv", A.DIVEHI_MALDIVES = "dv_MV", A.JOLA_FONYI = "dyo", A.JOLA_FONYI_SENEGAL = "dyo_SN", A.JOLA_FONYI_SENEGAL_ARABIC = "dyo_SN#Arab", A.DYULA = "dyu", A.DYULA_BURKINA_FASO = "dyu_BF", A.DZONGKHA = "dz", A.DZONGKHA_BHUTAN = "dz_BT", A.EMBU = "ebu", A.EWE = "ee", A.EWE_GHANA = "ee_GH", A.EWE_TOGO = "ee_TG", A.EFIK = "efi", A.EFIK_NIGERIA = "efi_NG", A.EMILIAN = "egl", A.ANCIENT_EGYPTIAN = "egy", A.EKAJUK = "eka", A.GREEK = "el", A.GREEK_CYPRUS = "el_CY", A.GREEK_GREECE = "el_GR", A.ENGLISH_ANTIGUA_AND_BARBUDA = "en_AG", A.ENGLISH_ANGUILLA = "en_AI", A.ENGLISH_AMERICAN_SAMOA = "en_AS", A.AUSTRALIAN_ENGLISH = "en_AU", A.ENGLISH_BARBADOS = "en_BB", A.ENGLISH_BURUNDI = "en_BI", A.ENGLISH_BERMUDA = "en_BM", A.ENGLISH_BAHAMAS = "en_BS", A.ENGLISH_BOTSWANA = "en_BW", A.ENGLISH_BELIZE = "en_BZ", A.CANADIAN_ENGLISH = "en_CA", A.ENGLISH_COCOS_KEELING_ISLANDS = "en_CC", A.ENGLISH_COOK_ISLANDS = "en_CK", A.ENGLISH_CAMEROON = "en_CM", A.ENGLISH_CHRISTMAS_ISLAND = "en_CX", A.ENGLISH_DIEGO_GARCIA = "en_DG", A.ENGLISH_DOMINICA = "en_DM", A.ENGLISH_ERITREA = "en_ER", A.ENGLISH_FIJI = "en_FJ", A.ENGLISH_FALKLAND_ISLANDS = "en_FK", A.ENGLISH_MICRONESIA = "en_FM", A.BRITISH_ENGLISH = "en_GB", A.ENGLISH_GRENADA = "en_GD", A.ENGLISH_GUERNSEY = "en_GG", A.ENGLISH_GHANA = "en_GH", A.ENGLISH_GIBRALTAR = "en_GI", A.ENGLISH_GAMBIA = "en_GM", A.ENGLISH_GUAM = "en_GU", A.ENGLISH_GUYANA = "en_GY", A.ENGLISH_HONG_KONG_SAR_CHINA = "en_HK", A.ENGLISH_IRELAND = "en_IE", A.ENGLISH_ISLE_OF_MAN = "en_IM", A.ENGLISH_INDIA = "en_IN", A.ENGLISH_BRITISH_INDIAN_OCEAN_TERRITORY = "en_IO", A.ENGLISH_JERSEY = "en_JE", A.ENGLISH_JAMAICA = "en_JM", A.ENGLISH_KENYA = "en_KE", A.ENGLISH_KIRIBATI = "en_KI", A.ENGLISH_ST_KITTS_AND_NEVIS = "en_KN", A.ENGLISH_CAYMAN_ISLANDS = "en_KY", A.ENGLISH_ST_LUCIA = "en_LC", A.ENGLISH_LIBERIA = "en_LR", A.ENGLISH_LESOTHO = "en_LS", A.ENGLISH_MADAGASCAR = "en_MG", A.ENGLISH_MARSHALL_ISLANDS = "en_MH", A.ENGLISH_NORTHERN_MARIANA_ISLANDS = "en_MP", A.ENGLISH_MONTSERRAT = "en_MS", A.ENGLISH_MALTA = "en_MT", A.ENGLISH_MAURITIUS = "en_MU", A.ENGLISH_MALAWI = "en_MW", A.ENGLISH_NAMIBIA = "en_NA", A.ENGLISH_NORFOLK_ISLAND = "en_NF", A.ENGLISH_NIGERIA = "en_NG", A.ENGLISH_NAURU = "en_NR", A.ENGLISH_NIUE = "en_NU", A.ENGLISH_NEW_ZEALAND = "en_NZ", A.ENGLISH_PAPUA_NEW_GUINEA = "en_PG", A.ENGLISH_PHILIPPINES = "en_PH", A.ENGLISH_PAKISTAN = "en_PK", A.ENGLISH_PITCAIRN_ISLANDS = "en_PN", A.ENGLISH_PUERTO_RICO = "en_PR", A.ENGLISH_PALAU = "en_PW", A.ENGLISH_RWANDA = "en_RW", A.ENGLISH_SOLOMON_ISLANDS = "en_SB", A.ENGLISH_SEYCHELLES = "en_SC", A.ENGLISH_SUDAN = "en_SD", A.ENGLISH_SINGAPORE = "en_SG", A.ENGLISH_ST_HELENA = "en_SH", A.ENGLISH_SIERRA_LEONE = "en_SL", A.ENGLISH_SOUTH_SUDAN = "en_SS", A.ENGLISH_SINT_MAARTEN = "en_SX", A.ENGLISH_ESWATINI = "en_SZ", A.ENGLISH_TURKS_AND_CAICOS_ISLANDS = "en_TC", A.ENGLISH_TOKELAU = "en_TK", A.ENGLISH_TONGA = "en_TO", A.ENGLISH_TRINIDAD_AND_TOBAGO = "en_TT", A.ENGLISH_TUVALU = "en_TV", A.ENGLISH_TANZANIA = "en_TZ", A.ENGLISH_UGANDA = "en_UG", A.ENGLISH_US_OUTLYING_ISLANDS = "en_UM", A.AMERICAN_ENGLISH = "en_US", A.ENGLISH_ST_VINCENT_AND_GRENADINES = "en_VC", A.ENGLISH_BRITISH_VIRGIN_ISLANDS = "en_VG", A.ENGLISH_US_VIRGIN_ISLANDS = "en_VI", A.ENGLISH_VANUATU = "en_VU", A.ENGLISH_SAMOA = "en_WS", A.ENGLISH_SOUTH_AFRICA = "en_ZA", A.ENGLISH_ZAMBIA = "en_ZM", A.ENGLISH_ZIMBABWE = "en_ZW", A.ENGLISH_ASCENSION_ISLAND = "en_AC", A.ENGLISH_UNITED_ARAB_EMIRATES = "en_AE", A.ENGLISH_ARGENTINA = "en_AR", A.ENGLISH_AUSTRIA = "en_AT", A.ENGLISH_BOSNIA_AND_HERZEGOVINA = "en_BA", A.ENGLISH_BANGLADESH = "en_BD", A.ENGLISH_BELGIUM = "en_BE", A.ENGLISH_BULGARIA = "en_BG", A.ENGLISH_BRAZIL = "en_BR", A.ENGLISH_SWITZERLAND = "en_CH", A.ENGLISH_CHILE = "en_CL", A.ENGLISH_CYPRUS = "en_CY", A.ENGLISH_CZECHIA = "en_CZ", A.ENGLISH_GERMANY = "en_DE", A.ENGLISH_DENMARK = "en_DK", A.ENGLISH_ALGERIA = "en_DZ", A.ENGLISH_ESTONIA = "en_EE", A.ENGLISH_EGYPT = "en_EG", A.ENGLISH_SPAIN = "en_ES", A.ENGLISH_ETHIOPIA = "en_ET", A.ENGLISH_FINLAND = "en_FI", A.ENGLISH_FRANCE = "en_FR", A.ENGLISH_GREECE = "en_GR", A.ENGLISH_CROATIA = "en_HR", A.ENGLISH_HUNGARY = "en_HU", A.ENGLISH_ISRAEL = "en_IL", A.ENGLISH_IRAQ = "en_IQ", A.ENGLISH_ITALY = "en_IT", A.ENGLISH_JORDAN = "en_JO", A.ENGLISH_KAZAKHSTAN = "en_KZ", A.ENGLISH_LEBANON = "en_LB", A.ENGLISH_SRI_LANKA = "en_LK", A.ENGLISH_LITHUANIA = "en_LT", A.ENGLISH_LUXEMBOURG = "en_LU", A.ENGLISH_LATVIA = "en_LV", A.ENGLISH_MOROCCO = "en_MA", A.ENGLISH_MEXICO = "en_MX", A.ENGLISH_MALAYSIA = "en_MY", A.ENGLISH_NETHERLANDS = "en_NL", A.ENGLISH_POLAND = "en_PL", A.ENGLISH_PORTUGAL = "en_PT", A.ENGLISH_ROMANIA = "en_RO", A.ENGLISH_SWEDEN = "en_SE", A.ENGLISH_SLOVENIA = "en_SI", A.ENGLISH_SLOVAKIA = "en_SK", A.ENGLISH_TRISTAN_DA_CUNHA = "en_TA", A.ENGLISH_THAILAND = "en_TH", A.ENGLISH_TURKEY = "en_TR", A.ENGLISH_YEMEN = "en_YE", A.MIDDLE_ENGLISH = "enm", A.ESPERANTO = "eo", A.SPANISH = "es", A.SPANISH_ARGENTINA = "es_AR", A.SPANISH_BOLIVIA = "es_BO", A.SPANISH_CHILE = "es_CL", A.SPANISH_COLOMBIA = "es_CO", A.SPANISH_COSTA_RICA = "es_CR", A.SPANISH_CUBA = "es_CU", A.SPANISH_DOMINICAN_REPUBLIC = "es_DO", A.SPANISH_CEUTA_AND_MELILLA = "es_EA", A.SPANISH_ECUADOR = "es_EC", A.EUROPEAN_SPANISH = "es_ES", A.SPANISH_EQUATORIAL_GUINEA = "es_GQ", A.SPANISH_GUATEMALA = "es_GT", A.SPANISH_HONDURAS = "es_HN", A.SPANISH_CANARY_ISLANDS = "es_IC", A.MEXICAN_SPANISH = "es_MX", A.SPANISH_NICARAGUA = "es_NI", A.SPANISH_PANAMA = "es_PA", A.SPANISH_PERU = "es_PE", A.SPANISH_PUERTO_RICO = "es_PR", A.SPANISH_PARAGUAY = "es_PY", A.SPANISH_EL_SALVADOR = "es_SV", A.SPANISH_URUGUAY = "es_UY", A.SPANISH_VENEZUELA = "es_VE", A.SPANISH_ANDORRA = "es_AD", A.SPANISH_BELIZE = "es_BZ", A.SPANISH_GERMANY = "es_DE", A.SPANISH_FRANCE = "es_FR", A.SPANISH_GIBRALTAR = "es_GI", A.SPANISH_PHILIPPINES = "es_PH", A.SPANISH_PORTUGAL = "es_PT", A.SPANISH_ROMANIA = "es_RO", A.SPANISH_UNITED_STATES = "es_US", A.CENTRAL_YUPIK = "esu", A.ESTONIAN = "et", A.ESTONIAN_ESTONIA = "et_EE", A.BASQUE = "eu", A.BASQUE_SPAIN = "eu_ES", A.EWONDO = "ewo", A.EXTREMADURAN = "ext", A.PERSIAN = "fa", A.DARI = "fa_AF", A.PERSIAN_IRAN = "fa_IR", A.PERSIAN_PAKISTAN = "fa_PK", A.FANG = "fan", A.FANG_EQUATORIAL_GUINEA = "fan_GQ", A.FULAH = "ff", A.FULAH_GUINEA = "ff_GN", A.FULAH_SENEGAL = "ff_SN", A.FINNISH = "fi", A.FINNISH_FINLAND = "fi_FI", A.FINNISH_ESTONIA = "fi_EE", A.FINNISH_SWEDEN = "fi_SE", A.FILIPINO = "fil", A.FILIPINO_PHILIPPINES = "fil_PH", A.FILIPINO_UNITED_STATES = "fil_US", A.TORNEDALEN_FINNISH = "fit", A.FIJIAN = "fj", A.FIJIAN_FIJI = "fj_FJ", A.FAROESE = "fo", A.FAROESE_FAROE_ISLANDS = "fo_FO", A.FON = "fon", A.FON_BENIN = "fon_BJ", A.FRENCH = "fr", A.FRENCH_BELGIUM = "fr_BE", A.FRENCH_BURKINA_FASO = "fr_BF", A.FRENCH_BURUNDI = "fr_BI", A.FRENCH_BENIN = "fr_BJ", A["FRENCH_ST_BARTHÉLEMY"] = "fr_BL", A.CANADIAN_FRENCH = "fr_CA", A.FRENCH_CONGO___KINSHASA = "fr_CD", A.FRENCH_CENTRAL_AFRICAN_REPUBLIC = "fr_CF", A.FRENCH_CONGO___BRAZZAVILLE = "fr_CG", A.SWISS_FRENCH = "fr_CH", A["FRENCH_CÔTE_D_IVOIRE"] = "fr_CI", A.FRENCH_CAMEROON = "fr_CM", A.FRENCH_DJIBOUTI = "fr_DJ", A.FRENCH_ALGERIA = "fr_DZ", A.FRENCH_FRANCE = "fr_FR", A.FRENCH_GABON = "fr_GA", A.FRENCH_FRENCH_GUIANA = "fr_GF", A.FRENCH_GUINEA = "fr_GN", A.FRENCH_GUADELOUPE = "fr_GP", A.FRENCH_EQUATORIAL_GUINEA = "fr_GQ", A.FRENCH_HAITI = "fr_HT", A.FRENCH_COMOROS = "fr_KM", A.FRENCH_LUXEMBOURG = "fr_LU", A.FRENCH_MOROCCO = "fr_MA", A.FRENCH_MONACO = "fr_MC", A.FRENCH_ST_MARTIN = "fr_MF", A.FRENCH_MADAGASCAR = "fr_MG", A.FRENCH_MALI = "fr_ML", A.FRENCH_MARTINIQUE = "fr_MQ", A.FRENCH_MAURITIUS = "fr_MU", A.FRENCH_NEW_CALEDONIA = "fr_NC", A.FRENCH_NIGER = "fr_NE", A.FRENCH_FRENCH_POLYNESIA = "fr_PF", A.FRENCH_ST_PIERRE_AND_MIQUELON = "fr_PM", A["FRENCH_RÉUNION"] = "fr_RE", A.FRENCH_RWANDA = "fr_RW", A.FRENCH_SEYCHELLES = "fr_SC", A.FRENCH_SENEGAL = "fr_SN", A.FRENCH_SYRIA = "fr_SY", A.FRENCH_CHAD = "fr_TD", A.FRENCH_TOGO = "fr_TG", A.FRENCH_TUNISIA = "fr_TN", A.FRENCH_VANUATU = "fr_VU", A.FRENCH_WALLIS_AND_FUTUNA = "fr_WF", A.FRENCH_MAYOTTE = "fr_YT", A.FRENCH_GERMANY = "fr_DE", A.FRENCH_UNITED_KINGDOM = "fr_GB", A.FRENCH_ITALY = "fr_IT", A.FRENCH_NETHERLANDS = "fr_NL", A.FRENCH_PORTUGAL = "fr_PT", A.FRENCH_ROMANIA = "fr_RO", A.FRENCH_FRENCH_SOUTHERN_TERRITORIES = "fr_TF", A.FRENCH_UNITED_STATES = "fr_US", A.CAJUN_FRENCH = "frc", A.MIDDLE_FRENCH = "frm", A.OLD_FRENCH = "fro", A.ARPITAN = "frp", A.NORTHERN_FRISIAN = "frr", A.EASTERN_FRISIAN = "frs", A.FRIULIAN = "fur", A.WESTERN_FRISIAN = "fy", A.WESTERN_FRISIAN_NETHERLANDS = "fy_NL", A.IRISH = "ga", A.IRISH_IRELAND = "ga_IE", A.IRISH_UNITED_KINGDOM = "ga_GB", A.GA = "gaa", A.GA_GHANA = "gaa_GH", A.GAGAUZ = "gag", A.GAGAUZ_CYRILLIC = "gag#Cyrl", A.GAN_CHINESE = "gan", A.GAN_CHINESE_CHINA = "gan_CN", A.GAYO = "gay", A.GBAYA = "gba", A.ZOROASTRIAN_DARI = "gbz", A.SCOTTISH_GAELIC = "gd", A.SCOTTISH_GAELIC_UNITED_KINGDOM = "gd_GB", A.GEEZ = "gez", A.GILBERTESE = "gil", A.GILBERTESE_KIRIBATI = "gil_KI", A.GALICIAN = "gl", A.GALICIAN_SPAIN = "gl_ES", A.GILAKI = "glk", A.GILAKI_IRAN = "glk_IR", A.MIDDLE_HIGH_GERMAN = "gmh", A.GUARANI = "gn", A.GUARANI_PARAGUAY = "gn_PY", A.OLD_HIGH_GERMAN = "goh", A.GOAN_KONKANI = "gom", A.GOAN_KONKANI_INDIA = "gom_IN", A.GONDI_INDIA_DEVANAGARI = "gon_IN#Deva", A.GONDI_DEVANAGARI = "gon#Deva", A.GONDI_INDIA = "gon_IN", A.GONDI = "gon", A.GORONTALO = "gor", A.GORONTALO_INDONESIA = "gor_ID", A.GOTHIC = "got", A.GREBO = "grb", A.ANCIENT_GREEK = "grc", A.SWISS_GERMAN = "gsw", A.SWISS_GERMAN_SWITZERLAND = "gsw_CH", A.SWISS_GERMAN_LIECHTENSTEIN = "gsw_LI", A.SWISS_GERMAN_GERMANY = "gsw_DE", A.GUJARATI = "gu", A.GUJARATI_INDIA = "gu_IN", A.WAYUU = "guc", A.FRAFRA = "gur", A.GUSII = "guz", A.GUSII_KENYA = "guz_KE", A.MANX = "gv", A.MANX_ISLE_OF_MAN = "gv_IM", A["GWICHʼIN"] = "gwi", A.HAUSA_NIGER_ARABIC = "ha_NE#Arab", A.HAUSA_NIGERIA_ARABIC = "ha_NG#Arab", A.HAUSA_ARABIC = "ha#Arab", A.HAUSA_NIGER = "ha_NE", A.HAUSA_NIGERIA = "ha_NG", A.HAUSA = "ha", A.HAIDA = "hai", A.HAKKA_CHINESE = "hak", A.HAKKA_CHINESE_CHINA = "hak_CN", A.HAWAIIAN = "haw", A.HAWAIIAN_UNITED_STATES = "haw_US", A.HEBREW = "he", A.HEBREW_ISRAEL = "he_IL", A.HINDI = "hi", A.HINDI_INDIA = "hi_IN", A.HINDI_FIJI = "hi_FJ", A.HINDI_SOUTH_AFRICA = "hi_ZA", A.FIJI_HINDI_FIJI_DEVANAGARI = "hif_FJ#Deva", A.FIJI_HINDI_DEVANAGARI = "hif#Deva", A.FIJI_HINDI_FIJI = "hif_FJ", A.FIJI_HINDI = "hif", A.HILIGAYNON = "hil", A.HILIGAYNON_PHILIPPINES = "hil_PH", A.HITTITE = "hit", A.HMONG = "hmn", A.HIRI_MOTU = "ho", A.HIRI_MOTU_PAPUA_NEW_GUINEA = "ho_PG", A.CROATIAN = "hr", A.CROATIAN_BOSNIA_AND_HERZEGOVINA = "hr_BA", A.CROATIAN_CROATIA = "hr_HR", A.CROATIAN_AUSTRIA = "hr_AT", A.CROATIAN_SERBIA = "hr_RS", A.CROATIAN_SLOVENIA = "hr_SI", A.UPPER_SORBIAN = "hsb", A.XIANG_CHINESE = "hsn", A.XIANG_CHINESE_CHINA = "hsn_CN", A.HAITIAN_CREOLE = "ht", A.HAITIAN_CREOLE_HAITI = "ht_HT", A.HUNGARIAN = "hu", A.HUNGARIAN_HUNGARY = "hu_HU", A.HUNGARIAN_AUSTRIA = "hu_AT", A.HUNGARIAN_ROMANIA = "hu_RO", A.HUNGARIAN_SERBIA = "hu_RS", A.HUPA = "hup", A.ARMENIAN = "hy", A.ARMENIAN_ARMENIA = "hy_AM", A.ARMENIAN_RUSSIA = "hy_RU", A.HERERO = "hz", A.INTERLINGUA = "ia", A.IBAN = "iba", A.IBIBIO = "ibb", A.IBIBIO_NIGERIA = "ibb_NG", A.INDONESIAN = "id", A.INDONESIAN_INDONESIA = "id_ID", A.INDONESIAN_INDONESIA_ARABIC = "id_ID#Arab", A.IGBO = "ig", A.IGBO_NIGERIA = "ig_NG", A.SICHUAN_YI = "ii", A.SICHUAN_YI_CHINA = "ii_CN", A.SICHUAN_YI_CHINA_LATIN = "ii_CN#Latn", A.INUPIAQ = "ik", A.ILOKO = "ilo", A.ILOKO_PHILIPPINES = "ilo_PH", A.INGUSH = "inh", A.INGUSH_RUSSIA = "inh_RU", A.INGUSH_RUSSIA_ARABIC = "inh_RU#Arab", A.INGUSH_RUSSIA_LATIN = "inh_RU#Latn", A.ICELANDIC = "is", A.ICELANDIC_ICELAND = "is_IS", A.ITALIAN = "it", A.ITALIAN_SWITZERLAND = "it_CH", A.ITALIAN_ITALY = "it_IT", A.ITALIAN_SAN_MARINO = "it_SM", A.ITALIAN_VATICAN_CITY = "it_VA", A.ITALIAN_GERMANY = "it_DE", A.ITALIAN_FRANCE = "it_FR", A.ITALIAN_CROATIA = "it_HR", A.ITALIAN_MALTA = "it_MT", A.ITALIAN_UNITED_STATES = "it_US", A.INUKTITUT_CANADA = "iu_CA", A.INUKTITUT = "iu", A.INUKTITUT_CANADA_LATIN = "iu_CA#Latn", A.INUKTITUT_LATIN = "iu#Latn", A.INGRIAN = "izh", A.JAPANESE = "ja", A.JAPANESE_JAPAN = "ja_JP", A.JAMAICAN_CREOLE_ENGLISH = "jam", A.JAMAICAN_CREOLE_ENGLISH_JAMAICA = "jam_JM", A.NGOMBA = "jgo", A.MACHAME = "jmc", A.JUDEO_PERSIAN = "jpr", A.JUDEO_ARABIC = "jrb", A.JUTISH = "jut", A.JAVANESE = "jv", A.JAVANESE_INDONESIA = "jv_ID", A.JAVANESE_INDONESIA_JAVANESE = "jv_ID#Java", A.GEORGIAN = "ka", A.GEORGIAN_GEORGIA = "ka_GE", A.KARA_KALPAK = "kaa", A.KABYLE = "kab", A.KABYLE_ALGERIA = "kab_DZ", A.KACHIN = "kac", A.JJU = "kaj", A.KAMBA = "kam", A.KAMBA_KENYA = "kam_KE", A.KABARDIAN = "kbd", A.KABARDIAN_RUSSIA = "kbd_RU", A.TYAP = "kcg", A.MAKONDE = "kde", A.MAKONDE_TANZANIA = "kde_TZ", A.KABUVERDIANU = "kea", A.KABUVERDIANU_CAPE_VERDE = "kea_CV", A.KORO = "kfo", A.KONGO = "kg", A.KONGO_CONGO___KINSHASA = "kg_CD", A.KAINGANG = "kgp", A.KHASI = "kha", A.KHASI_INDIA = "kha_IN", A.KHASI_INDIA_BANGLA = "kha_IN#Beng", A.KOYRA_CHIINI = "khq", A.KHOWAR = "khw", A.KIKUYU = "ki", A.KIKUYU_KENYA = "ki_KE", A.KIRMANJKI = "kiu", A.KUANYAMA = "kj", A.KUANYAMA_NAMIBIA = "kj_NA", A.KAZAKH_KAZAKHSTAN_ARABIC = "kk_KZ#Arab", A.KAZAKH_CHINA = "kk_CN", A.KAZAKH_ARABIC = "kk#Arab", A.KAZAKH_KAZAKHSTAN = "kk_KZ", A.KAZAKH_CHINA_CYRILLIC = "kk_CN#Cyrl", A.KAZAKH = "kk", A.KAKO = "kkj", A.KALAALLISUT = "kl", A.KALAALLISUT_GREENLAND = "kl_GL", A.KALAALLISUT_DENMARK = "kl_DK", A.KALENJIN = "kln", A.KALENJIN_KENYA = "kln_KE", A.KHMER = "km", A.KHMER_CAMBODIA = "km_KH", A.KIMBUNDU = "kmb", A.KIMBUNDU_ANGOLA = "kmb_AO", A.KANNADA = "kn", A.KANNADA_INDIA = "kn_IN", A.KOREAN = "ko", A.KOREAN_NORTH_KOREA = "ko_KP", A.KOREAN_SOUTH_KOREA = "ko_KR", A.KOREAN_CHINA = "ko_CN", A.KOREAN_UNITED_STATES = "ko_US", A.KOMI_PERMYAK = "koi", A.KOMI_PERMYAK_RUSSIA = "koi_RU", A.KONKANI = "kok", A.KONKANI_INDIA = "kok_IN", A.KOSRAEAN = "kos", A.KPELLE = "kpe", A.KANURI = "kr", A.KARACHAY_BALKAR = "krc", A.KARACHAY_BALKAR_RUSSIA = "krc_RU", A.KRIO = "kri", A.KRIO_SIERRA_LEONE = "kri_SL", A.KINARAY_A = "krj", A.KARELIAN = "krl", A.KURUKH = "kru", A.KURUKH_INDIA = "kru_IN", A.KASHMIRI_INDIA = "ks_IN", A.KASHMIRI = "ks", A.KASHMIRI_INDIA_DEVANAGARI = "ks_IN#Deva"; A.KASHMIRI_DEVANAGARI = "ks#Deva", A.SHAMBALA = "ksb", A.BAFIA = "ksf", A.COLOGNIAN = "ksh", A.KURDISH_SYRIA = "ku_SY", A.KURDISH_TURKEY_ARABIC = "ku_TR#Arab", A.KURDISH_ARABIC = "ku#Arab", A.KURDISH_SYRIA_CYRILLIC = "ku_SY#Cyrl", A.KURDISH_TURKEY_CYRILLIC = "ku_TR#Cyrl", A.KURDISH_CYRILLIC = "ku#Cyrl", A.KURDISH_SYRIA_LATIN = "ku_SY#Latn", A.KURDISH_TURKEY = "ku_TR", A.KURDISH = "ku", A.KUMYK = "kum", A.KUMYK_RUSSIA = "kum_RU", A.KUTENAI = "kut", A.KOMI = "kv", A.KOMI_RUSSIA = "kv_RU", A.CORNISH = "kw", A.KYRGYZ_KYRGYZSTAN_ARABIC = "ky_KG#Arab", A.KYRGYZ_ARABIC = "ky#Arab", A.KYRGYZ_KYRGYZSTAN = "ky_KG", A.KYRGYZ = "ky", A.KYRGYZ_KYRGYZSTAN_LATIN = "ky_KG#Latn", A.KYRGYZ_LATIN = "ky#Latn", A.LATIN = "la", A.LATIN_VATICAN_CITY = "la_VA", A.LADINO = "lad", A.LANGI = "lag", A.LAHNDA = "lah", A.LAHNDA_PAKISTAN = "lah_PK", A.LAMBA = "lam", A.LUXEMBOURGISH = "lb", A.LUXEMBOURGISH_LUXEMBOURG = "lb_LU", A.LEZGHIAN = "lez", A.LEZGHIAN_RUSSIA = "lez_RU", A.LINGUA_FRANCA_NOVA_CYRILLIC = "lfn#Cyrl", A.LINGUA_FRANCA_NOVA = "lfn", A.GANDA = "lg", A.GANDA_UGANDA = "lg_UG", A.LIMBURGISH = "li", A.LIGURIAN = "lij", A.LIVONIAN = "liv", A.LAKOTA = "lkt", A.LOMBARD = "lmo", A.LINGALA = "ln", A.LINGALA_CONGO___KINSHASA = "ln_CD", A.LAO = "lo", A.LAO_LAOS = "lo_LA", A.MONGO = "lol", A.LOZI = "loz", A.NORTHERN_LURI = "lrc", A.NORTHERN_LURI_IRAN = "lrc_IR", A.LITHUANIAN = "lt", A.LITHUANIAN_LITHUANIA = "lt_LT", A.LITHUANIAN_POLAND = "lt_PL", A.LATGALIAN = "ltg", A.LUBA_KATANGA = "lu", A.LUBA_KATANGA_CONGO___KINSHASA = "lu_CD", A.LUBA_LULUA = "lua", A.LUBA_LULUA_CONGO___KINSHASA = "lua_CD", A.LUISENO = "lui", A.LUNDA = "lun", A.LUO = "luo", A.LUO_KENYA = "luo_KE", A.MIZO = "lus", A.LUYIA = "luy", A.LUYIA_KENYA = "luy_KE", A.LATVIAN = "lv", A.LATVIAN_LATVIA = "lv_LV", A.LITERARY_CHINESE = "lzh", A.LAZ_GEORGIAN = "lzz#Geor", A.LAZ = "lzz", A.MADURESE = "mad", A.MADURESE_INDONESIA = "mad_ID", A.MAFA = "maf", A.MAGAHI = "mag", A.MAGAHI_INDIA = "mag_IN", A.MAITHILI = "mai", A.MAITHILI_INDIA = "mai_IN", A.MAITHILI_NEPAL = "mai_NP", A.MAKASAR = "mak", A.MAKASAR_INDONESIA = "mak_ID", A.MANDINGO_GAMBIA = "man_GM", A.MANDINGO_GUINEA_LATIN = "man_GN#Latn", A.MANDINGO = "man", A.MANDINGO_GAMBIA_N_KO = "man_GM#Nkoo", A.MANDINGO_GUINEA = "man_GN", A.MANDINGO_N_KO = "man#Nkoo", A.MASAI = "mas", A.MOKSHA = "mdf", A.MOKSHA_RUSSIA = "mdf_RU", A.MANDAR = "mdr", A.MENDE = "men", A.MENDE_SIERRA_LEONE = "men_SL", A.MERU = "mer", A.MERU_KENYA = "mer_KE", A.MORISYEN = "mfe", A.MORISYEN_MAURITIUS = "mfe_MU", A.MALAGASY = "mg", A.MALAGASY_MADAGASCAR = "mg_MG", A.MAKHUWA_MEETTO = "mgh", A.MAKHUWA_MEETTO_MOZAMBIQUE = "mgh_MZ", A["METAʼ"] = "mgo", A.MARSHALLESE = "mh", A.MARSHALLESE_MARSHALL_ISLANDS = "mh_MH", A.MAORI = "mi", A.MAORI_NEW_ZEALAND = "mi_NZ", A.MI_KMAQ = "mic", A.MINANGKABAU = "min", A.MINANGKABAU_INDONESIA = "min_ID", A.MACEDONIAN = "mk", A.MACEDONIAN_NORTH_MACEDONIA = "mk_MK", A.MALAYALAM = "ml", A.MALAYALAM_INDIA = "ml_IN", A.MONGOLIAN = "mn", A.MONGOLIAN_MONGOLIA = "mn_MN", A.MONGOLIAN_CHINA = "mn_CN", A.MANCHU = "mnc", A.MANIPURI = "mni", A.MANIPURI_INDIA = "mni_IN", A.MANIPURI_INDIA_MEITEI_MAYEK = "mni_IN#Mtei", A.MOHAWK = "moh", A.MOSSI = "mos", A.MOSSI_BURKINA_FASO = "mos_BF", A.MARATHI = "mr", A.MARATHI_INDIA = "mr_IN", A.WESTERN_MARI = "mrj", A.MALAY_BRUNEI_ARABIC = "ms_BN#Arab", A.MALAY_MALAYSIA_ARABIC = "ms_MY#Arab", A.MALAY_SINGAPORE_ARABIC = "ms_SG#Arab", A.MALAY_COCOS_KEELING_ISLANDS = "ms_CC", A.MALAY_INDONESIA = "ms_ID", A.MALAY_ARABIC = "ms#Arab", A.MALAY_BRUNEI = "ms_BN", A.MALAY_MALAYSIA = "ms_MY", A.MALAY_SINGAPORE = "ms_SG", A.MALAY_COCOS_KEELING_ISLANDS_LATIN = "ms_CC#Latn", A.MALAY_INDONESIA_LATIN = "ms_ID#Latn", A.MALAY = "ms", A.MALTESE = "mt", A.MALTESE_MALTA = "mt_MT", A.MUNDANG = "mua", A.MUSCOGEE = "mus", A.MIRANDESE = "mwl", A.MARWARI = "mwr", A.MARWARI_INDIA = "mwr_IN", A.MENTAWAI = "mwv", A.BURMESE = "my", A.BURMESE_MYANMAR_BURMA = "my_MM", A.ERZYA = "myv", A.ERZYA_RUSSIA = "myv_RU", A.MAZANDERANI = "mzn", A.MAZANDERANI_IRAN = "mzn_IR", A.NAURU = "na", A.NAURU_NAURU = "na_NR", A.MIN_NAN_CHINESE = "nan", A.MIN_NAN_CHINESE_CHINA = "nan_CN", A.NEAPOLITAN = "nap", A.NAMA = "naq", A["NORWEGIAN_BOKMÅL"] = "nb", A["NORWEGIAN_BOKMÅL_NORWAY"] = "nb_NO", A["NORWEGIAN_BOKMÅL_SVALBARD_AND_JAN_MAYEN"] = "nb_SJ", A.NORTH_NDEBELE = "nd", A.NORTH_NDEBELE_ZIMBABWE = "nd_ZW", A.LOW_GERMAN = "nds", A.LOW_GERMAN_GERMANY = "nds_DE", A.LOW_SAXON = "nds_NL", A.NEPALI = "ne", A.NEPALI_NEPAL = "ne_NP", A.NEPALI_INDIA = "ne_IN", A.NEWARI = "new", A.NDONGA = "ng", A.NDONGA_NAMIBIA = "ng_NA", A.NIAS = "nia", A.NIUEAN = "niu", A.NIUEAN_NIUE = "niu_NU", A.AO_NAGA = "njo", A.DUTCH = "nl", A.DUTCH_ARUBA = "nl_AW", A.FLEMISH = "nl_BE", A.DUTCH_CARIBBEAN_NETHERLANDS = "nl_BQ", A["DUTCH_CURAÇAO"] = "nl_CW", A.DUTCH_NETHERLANDS = "nl_NL", A.DUTCH_SURINAME = "nl_SR", A.DUTCH_SINT_MAARTEN = "nl_SX", A.DUTCH_GERMANY = "nl_DE", A.KWASIO = "nmg", A.NORWEGIAN_NYNORSK = "nn", A.NORWEGIAN_NYNORSK_NORWAY = "nn_NO", A.NGIEMBOON = "nnh", A.NOGAI = "nog", A.OLD_NORSE = "non", A.NOVIAL = "nov", A.N_KO = "nqo", A.SOUTH_NDEBELE = "nr", A.SOUTH_NDEBELE_SOUTH_AFRICA = "nr_ZA", A.NORTHERN_SOTHO = "nso", A.NORTHERN_SOTHO_SOUTH_AFRICA = "nso_ZA", A.NUER = "nus", A.NAVAJO = "nv", A.NYANJA = "ny", A.NYANJA_MALAWI = "ny_MW", A.NYANJA_ZAMBIA = "ny_ZM", A.NYAMWEZI = "nym", A.NYAMWEZI_TANZANIA = "nym_TZ", A.NYANKOLE = "nyn", A.NYANKOLE_UGANDA = "nyn_UG", A.NYORO = "nyo", A.NZIMA = "nzi", A.OCCITAN = "oc", A.OCCITAN_FRANCE = "oc_FR", A.OJIBWA = "oj", A.OJIBWA_LATIN = "oj#Latn", A.OROMO = "om", A.OROMO_ETHIOPIA = "om_ET", A.OROMO_ETHIOPIA_ETHIOPIC = "om_ET#Ethi", A.ODIA = "or", A.ODIA_INDIA = "or_IN", A.OSSETIC = "os