Text and video translations
Written languages and sign languages are separate catalogs, so equivalent text and video can coexist without assuming a direct country-language relationship.
Written translations
Written languages are stored in languages. Translatable records use a translations JSON column keyed by language code.
{
"en": { "title": "Resource title", "about": "Description" },
"pt": { "title": "Título do recurso", "about": "Descrição" }
}Each record defines its translatable fields. The administration panel tracks missing content, editing and history; interfaces may fall back to the default language.
Registered written languages
| Code | Language | Default |
|---|---|---|
en | English | Yes |
et | Estonian | No |
fr | French | No |
de | German | No |
hu | Hungarian | No |
pt | Portuguese | No |
es | Spanish | No |
Sign-language video translations
Sign languages are stored separately in sign_languages. sign_translations contains document IDs for videos processed by the document module.
{
"libras": { "about_video_id": "01H-LIBRAS-VIDEO" },
"dgs": { "about_video_id": "01H-DGS-VIDEO" }
}PlayerWithTranslations lists available sign languages, ignores entries without video and loads the document selected by the user.
Important: translations stores written content; sign_translations stores media references. They complement rather than replace each other.
Publishing flow
- The author enters the default written content and main video.
- Written versions are added to translations.
- Other sign-language videos are associated in sign_translations.
- The backend stores documents and metadata.
- The frontend independently selects the appropriate text and video.