Language Plugins

March 12, 2026 · View on GitHub

Translation entry point: opm.lang.translate Detection entry point: opm.lang.detect Template: ovos_plugin_manager.templates.language Factory: ovos_plugin_manager.language


LanguageTranslator base class

from ovos_plugin_manager.templates.language import LanguageTranslator

Constructor

LanguageTranslator(
    internal_language: Optional[str] = None,
    config: Optional[dict] = None,
)
AttributeDescription
default_languageThe translator's primary working language (BCP-47).
configPlugin-specific config.

Abstract method (must implement)

translate(text: str, target: Optional[str] = None, source: Optional[str] = None) -> str

Translate text from source language to target language. Both default to self.default_language if omitted.

Provided methods

detect(text: str) -> str

Detect the language of text. Default implementation raises NotImplementedError.


LanguageDetector base class

from ovos_plugin_manager.templates.language import LanguageDetector

Abstract method (must implement)

detect(text: str) -> str

Return the BCP-47 language code detected in text.

detect_proba(text: str) -> dict

Return {lang: probability} for all detected languages.


Factory classes (ovos_plugin_manager.language)

OVOSLangTranslationFactory

from ovos_plugin_manager.language import OVOSLangTranslationFactory

translator = OVOSLangTranslationFactory.create()
translated = translator.translate("Hallo Welt", target="en", source="de")

OVOSLangDetectionFactory

from ovos_plugin_manager.language import OVOSLangDetectionFactory

detector = OVOSLangDetectionFactory.create()
lang = detector.detect("Hello world")  # "en"

Configuration

{
  "language": {
    "detection_module": "ovos-lang-detect-plugin-fastlangid",
    "translation_module": "ovos-translate-plugin-nllb",
    "ovos-translate-plugin-nllb": {
      "model": "facebook/nllb-200-distilled-600M"
    }
  }
}