openapi: 3.0.3
info:
  title: BYO Engine API
  version: 1.0.6
  description: |
    This file can be viewed online in the [Swagger Editor](https://editor.swagger.io/).
    
    A minimal BYO Engine machine translation API specification.
    It supports the following operations and features:
    - supported languages
    - engine status
    - synchronous and asynchronous multi-segment translation operations
    - ad-hoc glossaries
    - custom metadata (request and segment level)
    
    For authentication you can use either the [OAuth client credentials flow](https://auth0.com/docs/get-started/authentication-and-authorization-flow/client-credentials-flow) or an API token.
    
    For the asynchronous endpoints please ensure thread safety and proper concurrency handling so that multiple request do not accidentally overwrite each other's data.
    
    For your reference, you can check out this simple [demo implementation](https://github.com/phrase/custom.adapter).
    
    ---

servers:
  - url: https://api.mtengine.example.com
    description: Sample base URL for an external MT engine

# Top-level requirement (applies to all operations unless overridden)
# Global requirement: either OAuth2 OR ApiKey header
security:
  - OAuth2: []
  - ApiKeyAuth: []

paths:
  /languages:
    post:
      summary: Get supported language pairs
      operationId: getLanguages
      tags:
        - Supported languages
      security:
        - OAuth2:
            - languages:read
        - ApiKeyAuth: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LanguagesRequest'
      responses:
        '200':
          description: List of supported source-target language pairs (Phrase locale codes)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LanguagesResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

  /status:
    post:
      summary: Get engine status
      operationId: getStatus
      tags:
        - Engine status
      security:
        - OAuth2:
            - status:read
        - ApiKeyAuth: []
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusRequest'
      responses:
        '200':
          description: Engine status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

  /translate:
    post:
      summary: Translate multiple segments
      operationId: translateTexts
      tags:
        - Synchronous translation
      security:
        - OAuth2:
            - translate:write
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranslateRequest'
      responses:
        '200':
          description: Translated segments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslateResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

  /translateAsync:
    post:
      summary: Translate multiple segments asynchronously
      operationId: translateAsync
      tags:
        - Asynchronous translation
      security:
        - OAuth2:
            - translateAsync:write
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranslateRequest'
      responses:
        '200':
          description: Translation job ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslateAsyncResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

  /translateAsyncStatus/{id}:
    get:
      summary: Translate multiple segments asynchronously - status polling
      operationId: translateAsyncStatus
      tags:
        - Asynchronous translation
      security:
        - OAuth2:
            - translateAsyncStatus:read
        - ApiKeyAuth: []
      parameters:
        - name: id
          in: path
          required: true
          description: Unique identifier of the translation job
          schema:
            type: string
      responses:
        '200':
          description: Translate multiple segments asynchronously - status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslateAsyncStatusResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

  /translateAsyncResult/{id}:
    get:
      summary: Translate multiple segments asynchronously - get translated segments
      operationId: translateAsyncResult
      tags:
        - Asynchronous translation
      security:
        - OAuth2:
            - translateAsyncResult:read
        - ApiKeyAuth: []
      parameters:
        - name: id
          in: path
          required: true
          description: Unique identifier of the translation job
          schema:
            type: string
      responses:
        '200':
          description: Translated segments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslateResponse'
        '429':
          $ref: '#/components/responses/Backoff'
        default:
          $ref: '#/components/responses/Error'

#############################################################################

components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: |
        OAuth 2.0 for accessing the MT API.
        Supports client credentials (service-to-service).
      flows:
        clientCredentials:
          tokenUrl: https://auth.example.com/oauth/token
          scopes:
            languages:read: Read supported languages
            status:read: Read engine status
            translate:write: Submit translation request
            translateAsync:write: Submit asynchronous translation request
            translateAsyncStatus:read: Read asynchronous translation status
            translateAsyncResult:read: Read asynchronous translation result
            
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Token # <-- custom header name
  
  responses:
    Error:
      description: Default response in case of any error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Backoff:
      description: Too many requests
      headers:
        Retry-After:
          description: Time in seconds before the client may retry the request
          schema:
            type: integer            

  schemas:
    Error:
      type: object
      required: [error]
      properties:
        error:
          type: string
          example: Unauthorized, Invalid token

    Locale:
      type: string
      description: Phrase language codes
      enum: [
        aa,                 # Afar
        ab,                 # Abkhaz
        ace,                # Acehnese
        ace_arab,           # Acehnese (Arabic)
        ace_latn,           # Acehnese (Latin)
        ach,                # Acholi
        acq,                # Ta'izzi-Adeni Arabic
        acq_ye,             # Ta'izzi-Adeni Arabic (Yemen)
        af,                 # Afrikaans
        af_na,              # Afrikaans (Namibia)
        af_za,              # Afrikaans (South Africa)
        afb,                # Gulf Arabic
        afb_sa,             # Gulf Arabic (Saudi Arabia)
        agr,                # Aguaruna
        ak,                 # Akan
        ak_gh,              # Akan (Ghana)
        an,                 # Aragonese
        am,                 # Amharic
        am_et,              # Amharic (Ethiopia)
        apc,                # Arabic North Levantine
        ar,                 # Arabic
        ar_001,             # Arabic (World)
        ar_145,             # Arabic (Western Asia)
        ar_ae,              # Arabic (United Arab Emirates)
        ar_arabizi,         # Arabic (Arabizi)
        ar_bh,              # Arabic (Bahrain)
        ar_dj,              # Arabic (Djibouti)
        ar_dz,              # Arabic (Algeria)
        ar_eg,              # Arabic (Egypt)
        ar_eh,              # Arabic (Western Sahara)
        ar_er,              # Arabic (Eritrea)
        ar_il,              # Arabic (Israel)
        ar_iq,              # Arabic (Iraq)
        ar_jo,              # Arabic (Jordan)
        ar_km,              # Arabic (Comoros)
        ar_kw,              # Arabic (Kuwait)
        ar_latn,            # Arabic (Latin)
        ar_lb,              # Arabic (Lebanon)
        ar_ly,              # Arabic (Libya)
        ar_ma,              # Arabic (Morocco)
        ar_mod,             # Arabic (Modern)
        ar_mr,              # Arabic (Mauritania)
        ar_om,              # Arabic (Oman)
        ar_ps,              # Arabic (Palestine, State of)
        ar_qa,              # Arabic (Qatar)
        ar_sa,              # Arabic (Saudi Arabia)
        ar_sd,              # Arabic (Sudan)
        ar_sn,              # Arabic (Senegal)
        ar_so,              # Arabic (Somalia)
        ar_ss,              # Arabic (South Sudan)
        ar_sy,              # Arabic (Syria)
        ar_tn,              # Arabic (Tunisia)
        ar_ye,              # Arabic (Yemen)
        arc,                # Aramaic
        ars,                # Najdi Arabic
        ars_sa,             # Najdi Arabic (Saudi Arabia)
        as,                 # Assamese
        as_in,              # Assamese (India)
        as_latn,            # Assamese (Latin)
        ast,                # Asturian
        av,                 # Avaric
        ay,                 # Aymara
        ayh,                # Hadrami Arabic
        ayh_ye,             # Hadrami Arabic (Yemen)
        ayn,                # Sanaani Arabic
        ayn_ye,             # Sanaani Arabic (Yemen)
        az,                 # Azeri (Latin)
        az_az,              # Azerbaijani (Azerbaijan)
        az_arab,            # Azerbaijani (Arabic)
        az_arab_ir,         # Azerbaijani (Arabic, Iran)
        az_cyrl,            # Azerbaijani (Cyrillic)
        az_cyrl_az,         # Azerbaijani (Cyrillic, Azerbaijan)
        az_latn,            # Azerbaijani (Latin)
        az_latn_az,         # Azerbaijani (Latin, Azerbaijan)
        ba,                 # Bashkir
        ba_ru,              # Bashkir (Russia)
        bal,                # Balochi
        ban,                # Balinese
        bci,                # Baoulé
        be,                 # Belarusian
        be_by,              # Belarusian (Belarus)
        bem,                # Bemba
        bfa,                # Bari
        bg,                 # Bulgarian
        bg_bg,              # Bulgarian (Bulgaria)
        bg_latn,            # Bulgarian (Latin)
        bg_latn_bg,         # Bulgarian (Latin, Bulgaria)
        bh,                 # Bihari
        bho,                # Bhojpuri
        bi,                 # Bislama
        bik,                # Bikol
        bin,                # Edo
        bin_ng,             # Edo (Nigeria)
        bjn,                # Banjar
        bjn_arab,           # Banjar (Arabic)
        bjn_latn,           # Banjar (Latin)
        bm,                 # Bambara
        bm_latn_ml,         # Bambara (Latin, Mali)
        bn,                 # Bengali
        bng,                # Benga
        bng_latn,           # Benga (Latin)
        bn_bd,              # Bengali (Bangladesh)
        bn_in,              # Bengali (India)
        bn_latn,            # Bengali (Latin)
        bo,                 # Tibetan
        br,                 # Breton
        bs,                 # Bosnian
        bs_ba,              # Bosnian (Bosnia and Herzegovina)
        bs_cyrl,            # Bosnian (Cyrillic)
        bs_cyrl_ba,         # Bosnian (Cyrillic, Bosnia and Herzegovina)
        bs_latn,            # Bosnian (Latin)
        bs_latn_ba,         # Bosnian (Latin, Bosnia and Herzegovina)
        bsq,                # Bassa (Latin)
        bua,                # Buryat
        byn,                # Blin
        byn_er,             # Blin (Eritrea)
        bwr,                # Bura-Pabir
        ca,                 # Catalan
        ca_ad,              # Catalan (Andorra)
        ca_es,              # Catalan (Spain)
        ca_es_valencia,     # Catalan (Spain, Valencia)
        cak,                # Kaqchikel
        cbk,                # Chavacano
        cdo,                # Min Dong Chinese
        ce,                 # Chechen
        ce_ru,              # Chechen (Russia)
        ceb,                # Cebuano
        ceb_ph,             # Cebuano (Philippines)
        cfm,                # Falam Chin
        ch,                 # Chamorro
        chk,                # Chuukese
        chr,                # Cherokee
        cja,                # Western Cham
        cja_kh,             # Western Cham (Cambodia)
        cjk,                # Chokwe
        cjk_ao,             # Chokwe (Angola)
        ckb,                # Central Kurdish
        ckl,                # Cibak
        cld,                # Chaldean
        cmn,                # Mandarin Chinese
        cmn_my,             # Mandarin Chinese (Malaysia)
        cnh,                # Haka Chin
        cnr,                # Montenegrin
        cnr_cyrl,           # Montenegrin (Cyrillic)
        cnr_latn,           # Montenegrin (Latin)
        co,                 # Corsican
        co_fr,              # Corsican (France)
        cor,                # Cornish
        cr,                 # Cree
        crh,                # Crimean Tatar
        crh_latn,           # Crimean Tatar (Latin)
        crh_cyrl,           # Crimean Tatar (Cyrillic)
        crp,                # Creoles and pidgins
        crs,                # Seselwa Creole French
        cs,                 # Czech
        cs_cz,              # Czech (Czech Republic)
        ctd,                # Tedim Chin
        ctg,                # Chittagonian
        ctg_bd,             # Chittagonian (Bangladesh)
        cv,                 # Chuvash
        cy,                 # Welsh
        cy_gb,              # Welsh (United Kingdom)
        da,                 # Danish
        da_dk,              # Danish (Denmark)
        da_fo,              # Danish (Faroe Islands)
        da_gl,              # Danish (Greenland)
        dag,                # Dagbani
        daw,                # Davawenyo
        de,                 # German
        de_at,              # German (Austria)
        de_be,              # German (Belgium)
        de_ch,              # German (Switzerland)
        de_de,              # German (Germany)
        de_dk,              # German (Denmark)
        de_it,              # German (Italy)
        de_li,              # German (Liechtenstein)
        de_lu,              # German (Luxembourg)
        de_nl,              # German (Netherlands)
        din,                # Dinka
        din_ss,             # Dinka (South Sudan)
        dje,                # Zarma
        doi,                # Dogri
        dsb,                # Lower Sorbian
        dtk,                # Tene Kan Dogon
        dv,                 # Divehi
        dv_mv,              # Dhivehi (Maldives)
        dyu,                # Dyula
        dyu_ci,             # Dyula (Ivory Coast)
        dz,                 # Dzongkha
        ee,                 # Ewe
        ee_gh,              # Ewe (Ghana)
        efi,                # Efik
        eky,                # Eastern Kayah
        el,                 # Greek
        el_cy,              # Greek (Cyprus)
        el_gr,              # Greek (Greece)
        el_latn,            # Greek (Latin)
        el_latn_gr,         # Greek (Latin, Greece)
        emk,                # Eastern Maninkakan
        en,                 # English
        en_001,             # English (World)
        en_029,             # English (Caribbean)
        en_039,             # English (Southern Europe)
        en_150,             # English (Europe)
        en_151,             # English (Eastern Europe)
        en_154,             # English (Northern Europe)
        en_155,             # English (Western Europe)
        en_ae,              # English (United Arab Emirates)
        en_af,              # English (Afghanistan)
        en_ag,              # English (Antigua and Barbuda)
        en_ai,              # English (Anguilla)
        en_al,              # English (Albania)
        en_am,              # English (Armenia)
        en_aq,              # English (Antarctica)
        en_as,              # English (American Samoa)
        en_au,              # English (Australia)
        en_ar,              # English (Argentina)
        en_aw,              # English (Aruba)
        en_ax,              # English (Åland Islands)
        en_az,              # English (Azerbaijan)
        en_ba,              # English (Bosnia and Herzegovina)
        en_bb,              # English (Barbados)
        en_bd,              # English (Bangladesh)
        en_be,              # English (Belgium)
        en_bh,              # English (Bahrain)
        en_bl,              # English (Saint Barthélemy)
        en_bm,              # English (Bermuda)
        en_bn,              # English (Brunei)
        en_bq,              # English (Bonaire, Sint Eustatius and Saba)
        en_br,              # English (Brazil)
        en_bs,              # English (Bahamas)
        en_bt,              # English (Bhutan)
        en_bw,              # English (Botswana)
        en_bz,              # English (Belize)
        en_ca,              # English (Canada)
        en_cc,              # English (Cocos (Keeling) Islands)
        en_cl,              # English (Chile)
        en_ch,              # English (Switzerland)
        en_ck,              # English (Cook Islands)
        en_cn,              # English (China)
        en_co,              # English (Colombia)
        en_cw,              # English (Curaçao)
        en_cx,              # English (Christmas Island)
        en_cy,              # English (Cyprus)
        en_cz,              # English (Czech Republic)
        en_de,              # English (Germany)
        en_dk,              # English (Denmark)
        en_dm,              # English (Dominica)
        en_dz,              # English (Algeria)
        en_eg,              # English (Egypt)
        en_er,              # English (Eritrea)
        en_es,              # English (Spain)
        en_et,              # English (Ethiopia)
        en_fi,              # English (Finland)
        en_fj,              # English (Fiji)
        en_fk,              # English (Falkland Islands (Malvinas))
        en_fm,              # English (Micronesia (Federated States Of))
        en_fo,              # English (Faroe Islands)
        en_fr,              # English (France)
        en_gb,              # English (United Kingdom)
        en_gd,              # English (Grenada)
        en_ge,              # English (Georgia)
        en_gf,              # English (French Guiana)
        en_gg,              # English (Guernsey)
        en_gh,              # English (Ghana)
        en_gi,              # English (Gibraltar)
        en_gl,              # English (Greenland)
        en_gm,              # English (Gambia)
        en_gp,              # English (Guadeloupe)
        en_gq,              # English (Equatorial Guinea)
        en_gr,              # English (Greece)
        en_gs,              # English (South Georgia and the South Sandwich Islands)
        en_gu,              # English (Guam)
        en_gw,              # English (Guinea-Bissau)
        en_gy,              # English (Guyana)
        en_hk,              # English (Hong Kong)
        en_hm,              # English (Heard Island and McDonald Islands)
        en_ht,              # English (Haiti)
        en_hu,              # English (Hungary)
        en_id,              # English (Indonesia)
        en_ie,              # English (Ireland)
        en_il,              # English (Israel)
        en_im,              # English (Isle of Man)
        en_in,              # English (India)
        en_io,              # English (British Indian Ocean Territory)
        en_iq,              # English (Iraq)
        en_is,              # English (Iceland)
        en_it,              # English (Italy)
        en_ja,              # English (Japan)
        en_je,              # English (Jersey)
        en_jm,              # English (Jamaica)
        en_jo,              # English (Jordan)
        en_jp,              # English (Japan)
        en_ke,              # English (Kenya)
        en_kh,              # English (Cambodia)
        en_ki,              # English (Kiribati)
        en_km,              # English (Khmer)
        en_kn,              # English (Saint Kitts and Nevis)
        en_kr,              # English (South Korea)
        en_kw,              # English (Kuwait)
        en_ky,              # English (Cayman Islands)
        en_kz,              # English (Kazakhstan)
        en_la,              # English (Lao People's Democratic Republic)
        en_lb,              # English (Lebanon)
        en_lc,              # English (Saint Lucia)
        en_lk,              # English (Sri Lanka)
        en_lr,              # English (Liberia)
        en_ls,              # English (Lesotho)
        en_ly,              # English (Libya)
        en_ma,              # English (Morocco)
        en_me,              # English (Montenegro)
        en_mg,              # English (Madagascar)
        en_mh,              # English (Marshall Islands)
        en_mk,              # English (North Macedonia)
        en_mm,              # English (Myanmar)
        en_mn,              # English (Mongolia)
        en_mo,              # English (Macau SAR)
        en_mp,              # English (Northern Mariana Islands)
        en_mq,              # English (Martinique)
        en_ms,              # English (Montserrat)
        en_mt,              # English (Malta)
        en_mu,              # English (Mauritius)
        en_mv,              # English (Maldives)
        en_mw,              # English (Malawi)
        en_mx,              # English (Mexico)
        en_my,              # English (Malaysia)
        en_mz,              # English (Mozambique)
        en_na,              # English (Namibia)
        en_nf,              # English (Norfolk Island)
        en_ng,              # English (Nigeria)
        en_nl,              # English (Netherlands)
        en_no,              # English (Norway)
        en_np,              # English (Nepal)
        en_nr,              # English (Nauru)
        en_nu,              # English (Niue)
        en_nz,              # English (New Zealand)
        en_om,              # English (Oman)
        en_pe,              # English (Peru)
        en_pg,              # English (Papua New Guinea)
        en_ph,              # English (Philippines)
        en_pk,              # English (Pakistan)
        en_pm,              # English (Saint Pierre And Miquelon)
        en_pn,              # English (Pitcairn)
        en_pr,              # English (Puerto Rico)
        en_pt,              # English (Portugal)
        en_pw,              # English (Palau)
        en_qa,              # English (Qatar)
        en_rs,              # English (Serbia)
        en_ru,              # English (Russia)
        en_rw,              # English (Rwanda)
        en_sa,              # English (Saudi Arabia)
        en_sb,              # English (Solomon Islands)
        en_sc,              # English (Seychelles)
        en_sd,              # English (Sudan)
        en_se,              # English (Sweden)
        en_sg,              # English (Singapore)
        en_sh,              # English (Saint Helena)
        en_si,              # English (Slovenia)
        en_sk,              # English (Slovakia)
        en_sl,              # English (Sierra Leone)
        en_so,              # English (Somalia)
        en_sr,              # English (Suriname)
        en_ss,              # English (South Sudan)
        en_sx,              # English (Sint Maarten)
        en_sy,              # English (Syria)
        en_sz,              # English (Swaziland)
        en_tc,              # English (Turks and Caicos Islands)
        en_th,              # English (Thailand)
        en_tk,              # English (Tokelau)
        en_tl,              # English (Timor-Leste)
        en_tm,              # English (Turkmenistan)
        en_tn,              # English (Tunisia)
        en_to,              # English (Tonga)
        en_tr,              # English (Turkey)
        en_tt,              # English (Trinidad)
        en_tv,              # English (Tuvalu)
        en_tw,              # English (Taiwan)
        en_tz,              # English (Tanzania)
        en_ug,              # English (Uganda)
        en_um,              # English (United States Minor Outlying Islands)
        en_us,              # English (United States)
        en_vc,              # English (Saint Vincent and the Grenadines)
        en_vg,              # English (Virgin Islands, British)
        en_vi,              # English (Virgin Islands, U.S.)
        en_vn,              # English (Vietnam)
        en_vu,              # English (Vanuatu)
        en_wf,              # English (Wallis and Futuna)
        en_ws,              # English (Samoa)
        en_ye,              # English (Yemen)
        en_za,              # English (South Africa)
        en_zm,              # English (Zambia)
        en_zw,              # English (Zimbabwe)
        eo,                 # Esperanto
        es,                 # Spanish
        es_001,             # Spanish (World)
        es_419,             # Spanish (Latin America)
        es_ad,              # Spanish (Andorra)
        es_ar,              # Spanish (Argentina)
        es_aw,              # Spanish (Aruba)
        es_bb,              # Spanish (Barbados)
        es_bo,              # Spanish (Bolivia)
        es_bz,              # Spanish (Belize)
        es_cl,              # Spanish (Chile)
        es_co,              # Spanish (Colombia)
        es_cr,              # Spanish (Costa Rica)
        es_cu,              # Spanish (Cuba)
        es_do,              # Spanish (Dominican Republic)
        es_ec,              # Spanish (Ecuador)
        es_es,              # Spanish (Spain)
        es_gq,              # Spanish (Equatorial Guinea)
        es_gt,              # Spanish (Guatemala)
        es_hn,              # Spanish (Honduras)
        es_jm,              # Spanish (Jamaica)
        es_mx,              # Spanish (Mexico)
        es_ni,              # Spanish (Nicaragua)
        es_pa,              # Spanish (Panama)
        es_pe,              # Spanish (Peru)
        es_pr,              # Spanish (Puerto Rico)
        es_py,              # Spanish (Paraguay)
        es_sv,              # Spanish (El Salvador)
        es_tt,              # Spanish (Trinidad and Tobago)
        es_us,              # Spanish (United States)
        es_uy,              # Spanish (Uruguay)
        es_ve,              # Spanish (Venezuela)
        et,                 # Estonian
        et_ee,              # Estonian (Estonia)
        eu,                 # Basque
        eu_es,              # Basque (Spain)
        ewo,                # Ewondo
        ewo_cm,             # Ewondo (Cameroon)
        fa,                 # Farsi
        fa_af,              # Farsi (Afghanistan)
        fa_ir,              # Farsi (Iran)
        fa_latn,            # Farsi (Latin)
        fa_latn_ir,         # Farsi (Latin, Iran)
        fan,                # Fang
        fat,                # Fante
        ff,                 # Fulah
        ff_latn_gm,         # Fulah (Latin, Gambia)
        ff_latn_gn,         # Fulah (Latin, Guinea)
        ff_latn_gw,         # Fulah (Latin, Guinea-Bissau)
        fi,                 # Finnish
        fi_fi,              # Finnish (Finland)
        fia,                # Nobiin
        fia_arab,           # Nobiin (Arabic)
        fia_arab_eg,        # Nobiin (Arabic, Egypt)
        fia_latn,           # Nobiin (Latin)
        fil,                # Filipino
        fil_ph,             # Filipino (Philippines)
        fj,                 # Fijian
        fj_fj,              # Fijian (Fiji)
        fkv,                # Kven Finnish
        fo,                 # Faroese
        fo_fo,              # Faroese (Faroe Islands)
        fon,                # Fon
        fr,                 # French
        fr_001,             # French (World)
        fr_015,             # French (Northern Africa)
        fr_ad,              # French (Andorra)
        fr_be,              # French (Belgium)
        fr_bf,              # French (Burkina Faso)
        fr_bi,              # French (Burundi)
        fr_bj,              # French (Benin)
        fr_bl,              # French (Saint Barthélemy)
        fr_ca,              # French (Canada)
        fr_cd,              # French (DR Congo)
        fr_cf,              # French (Central African Republic)
        fr_cg,              # French (Congo)
        fr_ch,              # French (Switzerland)
        fr_ci,              # French (Ivory Coast)
        fr_cm,              # French (Cameroon)
        fr_dj,              # French (Djibouti)
        fr_dz,              # French (Algeria)
        fr_fr,              # French (France)
        fr_ga,              # French (Gabon)
        fr_gf,              # French (French Guiana)
        fr_gn,              # French (Guinea)
        fr_gp,              # French (Guadeloupe)
        fr_gq,              # French (Equatorial Guinea)
        fr_ht,              # French (Haiti)
        fr_km,              # French (Comoros)
        fr_lb,              # French (Lebanon)
        fr_lu,              # French (Luxembourg)
        fr_ma,              # French (Morocco)
        fr_mc,              # French (Monaco)
        fr_mf,              # French (Saint Martin (French part))
        fr_mg,              # French (Madagascar)
        fr_ml,              # French (Mali)
        fr_mq,              # French (Martinique)
        fr_mr,              # French (Mauritania)
        fr_mu,              # French (Mauritius)
        fr_nc,              # French (New Caledonia)
        fr_ne,              # French (Niger)
        fr_pf,              # French (French Polynesia)
        fr_pm,              # French (Saint Pierre And Miquelon)
        fr_re,              # French (Réunion)
        fr_rw,              # French (Rwanda)
        fr_sc,              # French (Seychelles)
        fr_sn,              # French (Senegal)
        fr_td,              # French (Chad)
        fr_tf,              # French (French Southern Territories)
        fr_tg,              # French (Togo)
        fr_tn,              # French (Tunisia)
        fr_wf,              # French (Wallis and Futuna)
        fr_yt,              # French (Mayotte)
        fit,                # Tornedalen Finnish
        fub,                # Adamawa Fulfulde
        fuc,                # Pulaar
        fur,                # Friulian
        fvr,                # Fur
        fy,                 # Western Frisian
        ga,                 # Irish
        ga_ie,              # Irish (Ireland)
        gag,                # Gagauz
        gan,                # Gan Chinese
        gd,                 # Scottish Gaelic
        gd_gb,              # Scottish Gaelic (United Kingdom)
        gd_ie,              # Scottish Gaelic (Ireland)
        gil,                # Gilbertese
        gl,                 # Galician
        gl_es,              # Galician (Spain)
        glw,                # Glavda
        gn,                 # Guarani
        gom,                # Goan Konkani
        gu,                 # Gujarati
        gu_in,              # Gujarati (India)
        gur,                # Farefare
        gur_gh,             # Farefare (Ghana)
        guw,                # Gun
        gux,                # Gourmanchéma
        guz,                # Gusii
        guz_ke,             # Gusii (Kenya)
        ha,                 # Hausa
        ha_latn_ne,         # Hausa (Latin, Niger)
        ha_latn_ng,         # Hausa (Latin, Nigeria)
        hak,                # Hakka Chinese
        haw,                # Hawaiian
        haz,                # Hazaragi
        hbs,                # Serbo-Croatian
        he,                 # Hebrew
        he_il,              # Hebrew (Israel)
        he_ru,              # Hebrew (Russia)
        hi,                 # Hindi
        hi_fj,              # Hindi (Fiji)
        hi_in,              # Hindi (India)
        hi_latn,            # Hindi (Latin)
        hia,                # Lamang
        hig,                # Kamwe
        hil,                # Ilonggo
        hil_ph,             # Ilonggo (Philippines)
        hlt,                # Matu Chin
        hmn,                # Hmong
        hnj,                # Hmong Njua
        hr,                 # Croatian
        hr_ba,              # Croatian (Bosnia and Herzegovina)
        hr_hr,              # Croatian (Croatia)
        hsb,                # Upper Sorbian
        ht,                 # Haitian Creole
        ht_ht,              # Haitian Creole (Haiti)
        hu,                 # Hungarian
        hu_hu,              # Hungarian (Hungary)
        hup,                # Hupa
        hy,                 # Armenian
        hy_am,              # Armenian (Armenia)
        hy_latn,            # Armenian (Latin)
        hy_latn_am,         # Armenian (Latin, Armenia)
        hz,                 # Herero
        ia,                 # Interlingua
        ibb,                # Ibibio
        id,                 # Indonesian
        id_id,              # Indonesian (Indonesia)
        ig,                 # Igbo
        ig_ng,              # Igbo (Nigeria)
        ii,                 # Nuosu
        ike,                # Inuktitut (Eastern Canadian)
        ikt,                # Inuktitut (Western Canadian)
        ilo,                # Ilocano
        ilo_ph,             # Ilocano (Philippines)
        in,                 # Indonesian
        in_id,              # Indonesian (Indonesia)
        inh,                # Ingush
        is,                 # Icelandic
        is_is,              # Icelandic (Iceland)
        iso,                # Isoko
        it,                 # Italian
        it_ch,              # Italian (Switzerland)
        it_it,              # Italian (Italy)
        it_sm,              # Italian (San Marino)
        it_va,              # Italian (Vatican City)
        iu,                 # Inuktitut
        iu_ca,              # Inuktitut (Canada)
        iu_cans,            # Inuktitut (Syllabics)
        iu_cans_ca,         # Inuktitut (Syllabics, Canada)
        iu_latn,            # Inuktitut (Latin)
        ium,                # Iu Mien
        iw,                 # Hebrew
        iw_il,              # Hebrew (Israel)
        ja,                 # Japanese
        ja_jp,              # Japanese (Japan)
        ja_jp_jp,           # Japanese (Japan, JP)
        ja_us,              # Japanese (United States)
        jam,                # Jamaican Creole English
        ji,                 # Yiddish
        jra,                # Jarai
        jv,                 # Javanese
        ka,                 # Georgian
        ka_ge,              # Georgian (Georgia)
        kaa,                # Karakalpak
        kab,                # Kabyle
        kab_latn_dz,        # Kabyle (Latin, Algeria)
        kac,                # Kachin
        kac_mm,             # Kachin (Myanmar)
        kam,                # Kamba
        kam_ke,             # Kamba (Kenya)
        kar,                # Karen
        kbd,                # Kabardian
        kea,                # Kabuverdianu
        kea_cv,             # Kabuverdianu (Cabo Verde)
        kek,                # Qʼeqchiʼ
        kg,                 # Kongo
        kg_ao,              # Kongo (Angola)
        kha,                # Khasi
        khq,                # Koyra Chiini Songhay
        khq_ml,             # Koyra Chiini Songhay (Mali)
        ki,                 # Kikuyu
        kj,                 # Kwanyama
        kl,                 # Greenlandic
        kl_gl,              # Greenlandic (Greenland)
        kln,                # Kalenjin
        kln_ke,             # Kalenjin (Kenya)
        kk,                 # Kazakh
        kk_latn,            # Kazakh (Latin)
        kk_kz,              # Kazakh (Kazakhstan)
        kk_cyrl_kz,         # Kazakh (Cyrillic, Kazakhstan)
        km,                 # Khmer
        km_kh,              # Khmer (Cambodia)
        km_vn,              # Khmer (Vietnam)
        kmb,                # Kimbundu
        kmb_ao,             # Kimbundu (Angola)
        kmr,                # Northern Kurdish
        kmr_sy,             # Northern Kurdish (Syria)
        kmr_tr,             # Northern Kurdish (Turkey)
        kn,                 # Kannada
        kn_in,              # Kannada (India)
        ko,                 # Korean
        ko_kp,              # Korean (Korea, Democratic People's Republic Of)
        ko_kr,              # Korean (South Korea)
        ko_us,              # Korean (United States)
        kok,                # Konkani
        kok_in,             # Konkani (India)
        kos,                # Kosraean
        kpe,                # Kpelle
        kr,                 # Kanuri
        kr_latn,            # Kanuri (Latin)
        kri,                # Krio
        krl,                # Karelian
        ks,                 # Kashmiri
        ks_arab,            # Kashmiri (Arabic)
        ks_deva,            # Kashmiri (Devanagari)
        ktu,                # Kituba
        ku,                 # Kurdish
        ku_arab,            # Kurdish (Arabic)
        ku_arab_iq,         # Central Kurdish (Iraq)
        kun,                # Kunama
        kv,                 # Komi
        ky,                 # Kyrgyz
        ky_kg,              # Kyrgyz (Kyrgyzstan)
        kyu,                # Western Kayah
        kz,                 # Kyrgyz
        la,                 # Latin
        lb,                 # Luxembourgish
        lb_lu,              # Luxembourgish (Luxembourg)
        lg,                 # Ganda
        lg_ug,              # Ganda (Uganda)
        li,                 # Limburgish
        lif,                # Limbu
        lij,                # Ligurian
        lir,                # Liberian English
        lmo,                # Lombard
        ln,                 # Lingala
        ln_ao,              # Lingala (Angola)
        ln_cd,              # Lingala (Congo DRC)
        ln_cf,              # Lingala (Central African Republic)
        ln_cg,              # Lingala (Congo)
        lo,                 # Lao
        lo_la,              # Lao (Lao People's Democratic Republic)
        lol,                # Mongo
        lt,                 # Lithuanian
        lt_lt,              # Lithuanian (Lithuania)
        lt_lv,              # Lithuanian (Latvia)
        lt_ru,              # Lithuanian (Russia)
        ltg,                # Latgalian
        lu,                 # Luba-Katanga
        lua,                # Luba-Lulua
        luo,                # Luo
        luo_ke,             # Luo (Kenya)
        lus,                # Mizo
        lv,                 # Latvian
        lv_lv,              # Latvian (Latvia)
        lv_ru,              # Latvian (Russia)
        mad,                # Madurese
        mai,                # Maithili
        man,                # Mandingo
        mam,                # Mam
        mdh,                # Maguindanao
        mer,                # Meru
        mfe,                # Mauritian Creole
        mfi,                # Wandala
        mfi_cm,             # Wandala (Cameroon)
        mfi_ng,             # Gamargu (Nigeria)
        mg,                 # Malagasy
        mg_mg,              # Malagasy (Madagascar)
        mh,                 # Marshallese
        mhr,                # Eastern Mari
        mi,                 # Maori
        mi_nz,              # Maori (New Zealand)
        mi_in,              # Maori (India)
        min,                # Minangkabau
        min_arab,           # Minangkabau (Arabic)
        min_latn,           # Minangkabau (Latin)
        mk,                 # Macedonian
        mk_mk,              # Macedonian (North Macedonia)
        ml,                 # Malayalam
        ml_in,              # Malayalam (India)
        mn,                 # Mongolian (Cyrillic)
        mn_mn,              # Mongolian (Cyrillic, Mongolia)
        mn_mong,            # Mongolian (Mongolian)
        mn_mong_cn,         # Mongolian (Mongolian, China)
        mni,                # Manipuri
        mni_mtei,           # Manipuri (Meitei Mayek)
        mnk,                # Mandinka
        mnw,                # Mon
        moh,                # Mohawk
        mos,                # Mossi
        mr,                 # Marathi
        mr_in,              # Marathi (India)
        mrl,                # Mortlockese
        mrw,                # Maranao
        mrt,                # Marghi Central
        ms,                 # Malay
        ms_arab,            # Malay (Arabic)
        ms_arab_my,         # Malay (Arabic, Malaysia)
        ms_bn,              # Malay (Brunei)
        ms_latn_my,         # Malay (Latin, Malaysia)
        ms_latn_sg,         # Malay (Latin, Singapore)
        ms_my,              # Malay (Malaysia)
        ms_sg,              # Malay (Singapore)
        mt,                 # Maltese
        mt_mt,              # Maltese (Malta)
        mul,                # Language Neutral (Latin)
        mww,                # Hmong Daw
        mxt,                # Mixtec, Jamiltepec
        my,                 # Burmese
        my_mm,              # Burmese (Myanmar)
        myx,                # Masaaba
        nan,                # Southern Min
        nan_tw,             # Southern Min (Taiwan)
        nb,                 # Norwegian Bokmal
        nb_no,              # Norwegian Bokmal (Norway)
        nd,                 # Northern Ndebele
        nd_zw,              # Northern Ndebele (Zimbabwe)
        ndc,                # Ndau
        nds,                # Low German
        ne,                 # Nepali (India)
        ne_np,              # Nepali (Nepal)
        new,                # Newari
        ngc,                # Ngombe
        nl,                 # Dutch
        nl_001,             # Dutch (World)
        nl_be,              # Dutch (Belgium)
        nl_cw,              # Dutch (Curaçao)
        nl_nl,              # Dutch (Netherlands)
        nl_sr,              # Dutch (Suriname)
        nn,                 # Norwegian Nynorsk
        nn_no,              # Norwegian Nynorsk (Norway)
        nnb,                # Nande
        no,                 # Norwegian
        no_no,              # Norwegian (Norway)
        no_no_ny,           # Norwegian (Norway, Nynorsk)
        nr,                 # Southern Ndebele
        nso,                # Northern Sotho
        nso_za,             # Northern Sotho (South Africa)
        nuj,                # Nyole
        nus,                # Nuer
        nv,                 # Navajo
        ny,                 # Chewa
        ny_mw,              # Chewa (Malawi)
        ny_zm,              # Chewa (Zambia)
        nyn,                # Nyankole
        oc,                 # Occitan
        oj,                 # Ojibwa
        ojb,                # Northwestern Ojibwa
        ojc,                # Central Ojibwa
        ojg,                # Eastern Ojibwa
        ojs,                # Severn Ojibwa
        ojw,                # Western Ojibwa
        om,                 # Oromo
        om_et,              # Oromo (Ethiopia)
        om_ke,              # Oromo (Kenya)
        or,                 # Oriya
        or_in,              # Oriya (India)
        or_latn,            # Oriya (Latin)
        or_latn_in,         # Oriya (Latin, India)
        os,                 # Ossetian
        otq,                # Querétaro Otomi
        pa,                 # Punjabi
        pa_arab,            # Punjabi (Arabic)
        pa_arab_pk,         # Punjabi (Arabic, Pakistan)
        pa_guru,            # Punjabi (Gurmukhi)
        pa_guru_in,         # Punjabi (Gurmukhi, India)
        pa_guru_pk,         # Punjabi (Gurmukhi, Pakistan)
        pa_ca,              # Punjabi (Canada)
        pa_in,              # Punjabi (India)
        pa_pk,              # Punjabi (Pakistan)
        pag,                # Pangasinan
        pam,                # Kapampangan
        pap,                # Papiamento
        pau,                # Palauan
        pcd,                # Picard
        pcm,                # Nigerian Pidgin
        pdc,                # Pennsylvania German
        pga,                # Arabic Juba
        pga_latn,           # Arabic Juba (Latin)
        pis,                # Pijin
        pl,                 # Polish
        pl_pl,              # Polish (Poland)
        pon,                # Pohnpeian
        prs,                # Dari
        prs_af,             # Dari (Afghanistan)
        ps,                 # Pashto
        ps_af,              # Pashto (Afghanistan)
        pt,                 # Portuguese
        pt_001,             # Portuguese (World)
        pt_ao,              # Portuguese (Angola)
        pt_br,              # Portuguese (Brazil)
        pt_cv,              # Portuguese (Cabo Verde)
        pt_gw,              # Portuguese (Guinea-Bissau)
        pt_mz,              # Portuguese (Mozambique)
        pt_pt,              # Portuguese (Portugal)
        pt_st,              # Portuguese (Sao Tome and Principe)
        pt_tl,              # Portuguese (Timor-Leste)
        pt_us,              # Portuguese (United States)
        qu,                 # Quechua
        qu_bo,              # Quechua (Bolivia)
        qu_ec,              # Quechua (Ecuador)
        qu_gt,              # Quechua (Guatemala)
        qu_pe,              # Quechua (Peru)
        quc,                # K'iche
        quy,                # Ayacucho Quechua
        quz,                # Cusco Quechua
        quz_pe,             # Cusco Quechua (Peru)
        raj,                # Rajasthani
        rcf,                # Réunion Creole
        rhg,                # Rohingya
        rhg_latn,           # Rohingyalish
        rhg_rohg,           # Rohingya (Hanifi)
        rhg_beng,           # Rohingya (Bangla)
        rhl,                # Rohingyalish
        rm,                 # Rhaeto-Romanic
        rm_ch,              # Romansh (Switzerland)
        rmc,                # Carpathian Romani
        rmc_cyrl,           # Carpathian Romani (Cyrillic)
        rmc_latn,           # Carpathian Romani (Latin)
        rmy,                # Vlax Romani
        rmy_cyrl,           # Vlax Romani (Cyrillic)
        rmy_latn,           # Vlax Romani (Latin)
        rn,                 # Kirundi
        rn_bi,              # Kirundi (Buriundi)
        ro,                 # Romanian
        ro_md,              # Romanian (Moldova)
        ro_ro,              # Romanian (Romania)
        rom,                # Romani
        ru,                 # Russian
        ru_by,              # Russian (Belarus)
        ru_ee,              # Russian (Estonia)
        ru_il,              # Russian (Israel)
        ru_kg,              # Russian (Kyrgyzstan)
        ru_kz,              # Russian (Kazakhstan)
        ru_latn,            # Russian (Latin)
        ru_latn_ru,         # Russian (Latin, Russia)
        ru_lt,              # Russian (Lithuania)
        ru_lv,              # Russian (Latvia)
        ru_md,              # Russian (Moldova)
        ru_ru,              # Russian (Russia)
        ru_tj,              # Russian (Tajikistan)
        ru_tm,              # Russian (Turkmenistan)
        ru_ua,              # Russian (Ukraine)
        ru_uz,              # Russian (Uzbek)
        rue,                # Rusyn
        rup,                # Aromanian
        rw,                 # Kinyarwanda
        rw_rw,              # Kinyarwanda (Rwanda)
        sa,                 # Sanskrit
        sat,                # Santali
        sb,                 # Sorbian
        sc,                 # Sardinian
        sc_it,              # Sardinian (Italy)
        scn,                # Sicilian
        sd,                 # Sindhi
        sd_arab,            # Sindhi (Arabic)
        sd_arab_pk,         # Sindhi (Arabic, Pakistan)
        sd_deva,            # Sindhi (Devanagari)
        sd_deva_pk,         # Sindhi (Devanagari, Pakistan)
        sdh,                # Southern Kurdish
        sdh_arab,           # Southern Kurdish (Arabic)
        se,                 # Northern Sami
        se_fi,              # Northern Sami (Finland)
        se_no,              # Northern Sami (Norway)
        se_se,              # Northern Sami (Sweden)
        seh,                # Sena
        ses,                # Koyraboro Senni Songhai
        sg,                 # Sango
        sg_cf,              # Sango (Central African Republic)
        sgc,                # Kipsigis
        shn,                # Shan
        shn_mm,             # Shan (Myanmar)
        shr,                # Shi
        shu,                # Chadian Arabic
        shu_latn,           # Chadian Arabic (Latin)
        shu_latn_ng,        # Chadian Arabic (Latin, Nigeria)
        shu_td,             # Chadian Arabic (Chad)
        si,                 # Sinhala
        sid,                # Sidamo
        si_lk,              # Sinhala (Sri Lanka)
        sk,                 # Slovak
        sk_sk,              # Slovak (Slovakia)
        sl,                 # Slovenian
        sl_sl,              # Slovenian (Sierra Leone)
        sl_si,              # Slovenian (Slovenia)
        sm,                 # Samoan
        sm_ws,              # Samoan (Samoa)
        sma,                # Southern Sami
        sma_no,             # Southern Sami (Norway)
        sma_se,             # Southern Sami (Sweden)
        smj,                # Lule Sami
        smj_no,             # Lule Sami (Norway)
        smj_se,             # Lule Sami (Sweden)
        smn,                # Inari Sami
        smn_fi,             # Inari Sami (Finland)
        sms,                # Skolt Sami
        sms_fi,             # Skolt Sami (Finland)
        sn,                 # Shona
        snk,                # Soninke
        so,                 # Somali
        so_dj,              # Somali (Djibouti)
        so_et,              # Somali (Ethiopia)
        so_ke,              # Somali (Kenya)
        so_latn_so,         # Somali (Latin, Somalia)
        so_so,              # Somali (Somalia)
        sq,                 # Albanian
        sq_al,              # Albanian (Albania)
        sq_mk,              # Albanian (North Macedonia)
        sq_xk,              # Albanian (Kosovo)
        sr,                 # Serbian
        sr_ba,              # Serbian (Bosnia and Herzegovina)
        sr_cs,              # Serbian (Serbia and Montenegro)
        sr_me,              # Serbian (Montenegro)
        sr_rs,              # Serbian (Serbia)
        sr_cyrl,            # Serbian (Cyrillic)
        sr_cyrl_ba,         # Serbian (Cyrillic, Bosnia and Herzegovina)
        sr_cyrl_me,         # Serbian (Cyrillic, Montenegro)
        sr_cyrl_rs,         # Serbian (Cyrillic, Serbia)
        sr_latn,            # Serbian (Latin)
        sr_latn_ba,         # Serbian (Latin, Bosnia and Herzegovina)
        sr_latn_cs,         # Serbian (Latin, Serbia and Montenegro)
        sr_latn_me,         # Serbian (Latin, Montenegro)
        sr_latn_rs,         # Serbian (Latin, Serbia)
        ss,                 # Swati
        ss_sz,              # Swati (Swaziland)
        st,                 # Southern Sotho
        st_ls,              # Southern Sotho (Lesotho)
        st_za,              # Southern Sotho (South Africa)
        su,                 # Sundanese
        sv,                 # Swedish
        sv_ax,              # Swedish (Åland Islands)
        sv_fi,              # Swedish (Finland)
        sv_se,              # Swedish (Sweden)
        sv_sk,              # Swedish (Slovakia)
        sw,                 # Swahili
        sw_cd,              # Swahili (Congo DRC)
        sw_ke,              # Swahili (Kenya)
        sw_tz,              # Swahili (Tanzania)
        sw_ug,              # Swahili (Uganda)
        syl,                # Sylheti
        syr,                # Syriac
        syr_sy,             # Syriac (Syria)
        szl,                # Silesian
        szl_pl,             # Silesian (Poland)
        ta,                 # Tamil
        ta_in,              # Tamil (India)
        ta_latn,            # Tamil (Latin)
        ta_latn_in,         # Tamil (Latin, India)
        ta_lk,              # Tamil (Sri Lanka)
        ta_my,              # Tamil (Malaysia)
        ta_sg,              # Tamil (Singapore)
        taq,                # Tamasheq
        taq_ml,             # Tamasheq (Mali)
        tbf,                # Mandara
        tcs,                # Torres Strait Creole
        tcy,                # Tulu
        te,                 # Telugu
        te_in,              # Telugu (India)
        te_latn,            # Telugu (Latin)
        te_latn_in,         # Telugu (Latin, India)
        teo,                # Teso
        teo_ug,             # Teso (Uganda)
        tet,                # Tetum
        tg,                 # Tajik
        tg_tj,              # Tajik (Tajikistan)
        tg_cyrl,            # Tajik (Cyrillic)
        tg_cyrl_tj,         # Tajik (Cyrillic, Tajikistan)
        th,                 # Thai
        th_th,              # Thai (Thailand)
        th_th_th,           # Thai (Thailand, TH)
        ti,                 # Tigrinya
        ti_et,              # Tigrinya (Ethiopia)
        ti_er,              # Tigrinya (Eritrea)
        tig,                # Tigre
        tig_er,             # Tigre (Eritrea)
        tk,                 # Turkmen
        tk_iq,              # Turkmen (Iraq)
        tk_tm,              # Turkmen (Turkmenistan)
        tl,                 # Tagalog
        tl_ph,              # Tagalog (Philippines)
        tlh,                # Klingon
        tlh_latn,           # Klingon (Latin)
        tlh_piqd,           # Klingon (pIqaD)
        tn,                 # Tswana
        tn_bw,              # Tswana (Botswana)
        tn_za,              # Tswana (South Africa)
        to,                 # Tongan
        to_nz,              # Tongan (New Zealand)
        to_to,              # Tongan (Tonga)
        tob,                # Toba
        tpi,                # Tok Pisin
        tr,                 # Turkish
        tr_tr,              # Turkish (Turkey)
        ts,                 # Tsonga
        ts_za,              # Tsonga (South Africa)
        tsg,                # Tausug
        tsg_ph,             # Tausug (Philippines)
        tt,                 # Tatar
        tt_ru,              # Tatar (Russia)
        tum,                # Tumbuka
        tum_latn,           # Tumbuka (Latin)
        tuq,                # Tedaga
        tw,                 # Twi
        ty,                 # Tahitian
        tzm,                # Tamazight
        ug,                 # Uighur
        ug_arab,            # Uighur (Arabic)
        ug_cn,              # Uighur (China)
        uk,                 # Ukrainian
        uk_latn,            # Ukrainian (Latin)
        uk_latn_ua,         # Ukrainian (Latin, Ukraine)
        uk_pl,              # Ukrainian (Poland)
        uk_ua,              # Ukrainian (Ukraine)
        umb,                # Umbundu
        umb_ao,             # Umbundu (Angola)
        ur,                 # Urdu
        ur_bd,              # Urdu (Bangladesh)
        ur_in,              # Urdu (India)
        ur_latn,            # Urdu (Latin)
        ur_lk,              # Urdu (Sri Lanka)
        ur_pk,              # Urdu (Pakistan)
        uz,                 # Uzbek
        uz_cyrl,            # Uzbek (Cyrillic)
        uz_cyrl_uz,         # Uzbek (Cyrillic, Uzbekistan)
        uz_latn,            # Uzbek (Latin)
        uz_latn_uz,         # Uzbek (Latin, Uzbekistan)
        uz_uz,              # Uzbek (Uzbekistan)
        ve,                 # Venda
        ve_za,              # Venda (South Africa)
        vec,                # Venetian
        vi,                 # Vietnamese
        vi_us,              # Vietnamese (United States)
        vi_vn,              # Vietnamese (Vietnam)
        vls,                # West Flemish
        wa,                 # Walloon
        war,                # Waray
        wen,                # Sorbian
        wes,                # Pidgin
        wes_cm,             # Pidgin (Cameroon)
        wes_ng,             # Pidgin (Nigeria)
        wo,                 # Wolof
        wo_sn,              # Wolof (Senegal)
        xh,                 # Xhosa
        xh_za,              # Xhosa (South Africa)
        xsm,                # Kasem
        xsm_gh,             # Kasem (Ghana)
        yao,                # Yao
        yap,                # Yapese
        yi,                 # Yiddish
        ymm,                # Maay
        yo,                 # Yoruba
        yo_ng,              # Yoruba (Nigeria)
        ypk,                # Yupik
        yua,                # Yucatec Maya
        yue,                # Cantonese (Traditional)
        za,                 # Zhuang
        zgh,                # Standard Moroccan Tamazight
        zgh_dz,             # Standard Moroccan Tamazight (Algeria)
        zh,                 # Chinese
        zh_cn,              # Chinese (China)
        zh_hans,            # Chinese (Simplified Han)
        zh_hans_cn,         # Chinese (Simplified Han, China)
        zh_hans_hk,         # Chinese (Simplified Han, Hong Kong)
        zh_hans_kr,         # Chinese (Simplified Han, Korea)
        zh_hans_my,         # Chinese (Simplified Han, Malaysia)
        zh_hans_sg,         # Chinese (Simplified Han, Singapore)
        zh_hans_us,         # Chinese (Simplified Han, United States)
        zh_hant,            # Chinese (Traditional Han)
        zh_hant_cn,         # Chinese (Traditional Han, China)
        zh_hant_hk,         # Chinese (Traditional Han, Hong Kong)
        zh_hant_tw,         # Chinese (Traditional Han, Taiwan)
        zh_hk,              # Chinese (Hong Kong)
        zh_my,              # Chinese (Malaysia)
        zh_mo,              # Chinese (Macau SAR)
        zh_sg,              # Chinese (Singapore)
        zh_tw,              # Chinese (Taiwan)
        ziw,                # Zigula
        zne,                # Zande
        zom,                # Zou
        zu,                 # Zulu
        zu_za,              # Zulu (South Africa)
        zyp,                # Zyphe
        zza,                # Zaza
      ]
    
    Status:
      type: string
      description: Engine status codes, 'ok' for fully operational, 'not_ok' for others (e.g. warm-up...)
      enum: [ok, not_ok]

    Metadata:
      type: object
      description: |
        Any custom data in form of key/value pairs.

        Phrase automatically resolves the following placeholders in request-level metadata values:

        - `{project_uid}` — TMS project UID
        - `{job_uid}` — TMS job UID
        - `{idm_organization_uid}` — Phrase organization UID
      example:
        formality: informal
        model: model123
        domain: legal
        project_uid: "{project_uid}"
        job_uid: "{job_uid}"
        idm_organization_uid: "{idm_organization_uid}"
      additionalProperties:
        type: string
    
    LanguagePair:
      type: object
      required: [sourceLanguage, targetLanguage]
      example:
        sourceLanguage: en
        targetLanguage: es
      properties:
        sourceLanguage:
          $ref: '#/components/schemas/Locale'
        targetLanguage:
          $ref: '#/components/schemas/Locale'

    LanguagesRequest:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'
    
    LanguagesResponse:
      type: object
      required: [languagePairs]
      properties:
        languagePairs:
          type: array
          items:
            $ref: '#/components/schemas/LanguagePair'

    StatusRequest:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/Metadata'

    StatusResponse:
      type: object
      required: [status]
      properties:
        status:
          $ref: '#/components/schemas/Status'

    SegmentBase:
      type: object
      required: [text]
      properties:
        idx:
          type: string
          description: Internal Phrase segment identification. Should not be altered by the system.
          example: 'fff'
        text:
          type: string
          description: The text to be translated/returned
          example: 'Hello World!'
        metadata:
          allOf:
            - $ref: '#/components/schemas/Metadata'
          example:
            context: 'surrounding text'
            customKey: 'customValue'
          description: Placeholder for future use

    Segment:
      allOf:
        - $ref: '#/components/schemas/SegmentBase'
    
    GlossaryEntry:
      type: object
      required: [translation, term]
      properties:
        translation:
          type: string
          description: Translation of the term
          example: 'hola'
          minLength: 1
          maxLength: 50
        term:
          type: string
          description: Term to be taken into consideration while translating
          example: 'hello'
          minLength: 1
          maxLength: 50

    TranslatedSegment:
      allOf:
        - $ref: '#/components/schemas/SegmentBase'
        - type: object
          required: [translatedText]
          properties:
            translatedText:
              type: string
              description: The translated text
              example: '¡Hola Mundo!'
    
    TranslateRequest:
      type: object
      required: [sourceLanguage, targetLanguage, segments]
      properties:
        sourceLanguage:
          allOf:
            - $ref: '#/components/schemas/Locale'
          example: en
        targetLanguage:
          allOf:
            - $ref: '#/components/schemas/Locale'
          example: es
        segments:
          type: array
          minItems: 1
          maxItems: 500
          items:
            $ref: '#/components/schemas/Segment'
        glossary:
          type: array
          minItems: 0
          maxItems: 500
          description: List of glossary entries to apply during translation
          items:
            $ref: '#/components/schemas/GlossaryEntry'
        metadata:
          $ref: '#/components/schemas/Metadata'

    TranslateResponse:
      type: object
      required: [sourceLanguage, targetLanguage, segments]
      properties:
        sourceLanguage:
          allOf:
            - $ref: '#/components/schemas/Locale'
          example: en
        targetLanguage:
          allOf:
            - $ref: '#/components/schemas/Locale'
          example: es
        segments:
          type: array
          items:
            $ref: '#/components/schemas/TranslatedSegment'
        metadata:
          $ref: '#/components/schemas/Metadata'
    
    TranslateAsyncResponse:
      type: object
      required: [id]
      properties:
        id:
          description: Unique identifier of the translation job
          type: string
          example: 'ffffffff-ffff-ffff-ffff-ffffffffffff'

    TranslateAsyncStatusResponse:
      type: object
      required: [status]
      properties:
        status:
          type: string
          enum: [running, done, failed]
        detail:
          type: string
          example: Description of translation failure




