• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 27622545666 / 2
81%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dependabot/github_actions/actions-deps-2d1112a488
DEFAULT BRANCH: master
Ran 16 Jun 2026 01:58PM UTC
Files 911
Run time 56s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Jun 2026 01:52PM UTC coverage: 51.907% (-7.5%) from 59.399%
27622545666.2

push

github

web-flow
feat(nlp): ensure maximum language support with per-language STT routing and GLOBAL/EU toggle DEV-2277 (#7154)

### 📣 Summary
Extends the Google ASR/MT location handling from
[kpi#7128](https://github.com/kobotoolbox/kpi/pull/7128) to support
every language Google offers. Instead of a fixed `us`/`eu` endpoint for
all languages, the code now routes each language to whichever Google
endpoint hosts its best available model. A new `GLOBAL`/`EU` Constance
toggle replaces the old `US`/`EU` toggle: `GLOBAL` (default) uses
per-language routing for maximum coverage; `EU` restricts all processing
to EU-hosted endpoints for data residency compliance.

### 📖 Description
[kpi#7128](https://github.com/kobotoolbox/kpi/pull/7128) re-implemented
the server-wide Google ASR/MT region setting (`ASR_MT_GOOGLE_REGION`)
and simplified routing to use a single fixed location: `us` for all
languages on non-EU servers and `eu` on EU servers.

However, this caused 24 languages to lose ASR support, languages like
Irish, Belarusian, Bosnian, and Somali that only have `chirp_2` model
support in specific Google sub-regions (`us-central1`, `europe-west4`)
and no model at all in the `us`/`eu` multi-region endpoints.

Because we cannot lose support for these 24 languages, we decided to
implement the following approach instead:
1. Global mode (default): Support every language that Google supports by
routing each language to the endpoint that provides the best available
model.
2. EU mode: Use the best available model within EU-hosted endpoints
only. Languages that are not available in any EU endpoint are considered
unsupported on EU servers.

In `GLOBAL` mode, the code reads `location_code` per language from the
database (populated by the language spreadsheet, which stores the
correct global location for each model). In EU mode, the code overrides
the DB location at runtime using the table above via
`EU_LOCATION_BY_MODEL` in `locations.py`.
---------

Co-authored-by: Olivier Léger <olivi... (continued)

4710 of 12337 branches covered (38.18%)

19296 of 37174 relevant lines covered (51.91%)

0.52 hits per line

Source Files on job 27622545666.2
  • Tree
  • List 911
  • Changed 142
  • Source Changed 0
  • Coverage Changed 142
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 27622545666
  • e6800204 on github
  • Prev Job for on release/2.026.21 (#27415076380.6)
  • Next Job for on release/2.026.21 (#27635283588.5)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc