Environment
- Jitsi Meet: 2.0.10888-1
- Jigasi: 1.1.407-g1e3a7ac
- Jicofo: 1.0-1174-1
- Prosody: 13.0.4
- Transcription: Google Cloud Speech-to-Text (latest_long model)
- Translation: Google Cloud Translation API
Expected behavior
In a multilingual meeting:
- Polish speaker talks → other participants see subtitles translated to THEIR language ✅
- English speaker talks → Polish participant sees subtitles translated to Polish ❌
- German speaker talks → Polish participant sees subtitles translated to Polish ❌
Translation should work in ALL directions for ALL participants.
Actual behavior
Translation only works ONE WAY:
- Polish speaker → English participant sees English subtitles ✅
- English speaker → Polish participant sees RAW ENGLISH TEXT (no translation) ❌
When Polish participant selects "Polish" as their subtitle language and the
English speaker talks, Jigasi throws:
UnsupportedOperationException: pl is not a language supported
by the Google Cloud speech-to-text API
This means Jigasi is incorrectly passing translation_language=pl
(the TARGET language for translation) into the STT language validator
validateLanguageTag() instead of passing it only to TranslationManager.
Root cause (suspected)
In GoogleCloudTranscriptionService.java, the validateLanguageTag()
function is called with the value of translation_language presence
property (e.g. "pl", "en") which are short 2-letter codes.
These short codes are NOT in SUPPORTED_LANGUAGE_TAGS (which requires
full BCP-47 codes like "pl-PL", "en-US"), so the exception is thrown.
translation_language should only be passed to TranslationManager
as the TARGET language for translation — it should NEVER be used
as a STT language code.
Config
config.js:
transcription: {
enabled: true,
translationLanguages: ['pl', 'en', 'de', 'uk'],
translationLanguagesHead: ['pl'],
useAppLanguage: false,
preferredLanguage: 'pl-PL',
},
sip-communicator.properties:
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
org.jitsi.jigasi.transcription.customService=...GoogleCloudTranscriptionService
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=true
org.jitsi.jigasi.transcription.translationService=...GoogleCloudTranslationService
Environment
Expected behavior
In a multilingual meeting:
Translation should work in ALL directions for ALL participants.
Actual behavior
Translation only works ONE WAY:
When Polish participant selects "Polish" as their subtitle language and the
English speaker talks, Jigasi throws:
UnsupportedOperationException: pl is not a language supported
by the Google Cloud speech-to-text API
This means Jigasi is incorrectly passing
translation_language=pl(the TARGET language for translation) into the STT language validator
validateLanguageTag()instead of passing it only to TranslationManager.Root cause (suspected)
In GoogleCloudTranscriptionService.java, the
validateLanguageTag()function is called with the value of
translation_languagepresenceproperty (e.g. "pl", "en") which are short 2-letter codes.
These short codes are NOT in SUPPORTED_LANGUAGE_TAGS (which requires
full BCP-47 codes like "pl-PL", "en-US"), so the exception is thrown.
translation_languageshould only be passed to TranslationManageras the TARGET language for translation — it should NEVER be used
as a STT language code.
Config
config.js:
transcription: {
enabled: true,
translationLanguages: ['pl', 'en', 'de', 'uk'],
translationLanguagesHead: ['pl'],
useAppLanguage: false,
preferredLanguage: 'pl-PL',
},
sip-communicator.properties:
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
org.jitsi.jigasi.transcription.customService=...GoogleCloudTranscriptionService
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=true
org.jitsi.jigasi.transcription.translationService=...GoogleCloudTranslationService