m_translate_argos

Translate plain text and HTML with Argos Translate and manage its language packages through a shared local Python worker.

Model API

MethodPathDescription
getis_configuredWhether a Python command is configured.
getpackagesAvailable and installed package information; requires use.mod_admin_config.

For example, templates can read m.translate_argos.is_configured and m.translate_argos.packages. The configuration check does not verify that Python can start, Argos is installed, or the required language packages are available. Unknown paths return {error, enoent}. Translation is an Erlang API, not a model POST endpoint.

The package result contains packages and error. Each package includes its name, source and target language codes and names, available and installed versions, and installed and outdated flags. Some worker errors are returned as an empty package list with error, error_reason, and error_message for display; access and timeout errors remain {error, Reason} results.

Erlang API

translate/4 translates a list of binary plain texts. translate_html/4 segments HTML and restores its structure after translation. translate_tags/4 is the lower-level tagged-text interface used by the HTML helper. All three take source language, target language, texts, and context, and return {ok, TranslatedTexts} or {error, Reason}.

m_translate_argos:translate(en, nl, [<<"Hello">>, <<"Welcome">>], Context).

Both languages are required: missing or sentinel source/target languages return {error, source_language} or {error, target_language}. Codes are lowercased and regional variants reduced to their primary language. Plain and tagged translations are batched, preserving order; the first failed batch ends the call.

packages/1, package/2, install_package/2, and update_packages/1 support package administration. install_python/0 installs dependencies in the shared virtual environment; ensure_python/0 checks imports and installs if needed. Worker startup is lazy and shared by all sites. timeout/1 reads the site's request timeout, with a default of 120000 milliseconds.

Access control

Direct Erlang translation and package functions do not perform ACL checks. Callers must authorize their operation first. The mod_translate_argos translation observer checks use.mod_translate_argos; package model reads and admin postbacks check use.mod_admin_config.