string_translation_fallback
Configure per-language fallback chains for interface string translations. When a t() string has no translation in the current language, this module lets you control which language is tried next — instead of always falling back to the site's default language.
Features
- Per-language fallback configuration: For each language on your site, define a list of fallback languages for interface string translations.
- Prioritized fallback chain: Configure multiple fallback priorities. The module tries each language in order until a translation is found.
- Admin UI integration: Settings are added directly to the existing language edit form.
- Complements Entity Language Fallback: While the https://www.drupal.org/project/entity_language_fallback module handles content/entity translation fallback, this module covers the other half: interface string translations.
Post-Installation
1. Go to Administration → Configuration → Regional and language → Languages.
2. Click Edit on the language you want to configure.
3. Find the "String translation fallback language" fieldset on the edit form.
4. Select your preferred fallback languages in priority order (Priority 1 is tried first, Priority 2 second, etc.).
5. Save the language configuration.
The module works immediately — no additional setup, content types, or text format changes are needed. When Drupal looks up an interface string translation and doesn't find one in the current language, it will now try your configured fallback languages in order.
Additional Requirements
This module requires two Drupal core modules:
- Language (`drupal:language`) — provides the multilingual framework and language configuration entities.
- Locale (`drupal:locale`) — provides the interface translation system that this module extends.
No external libraries or APIs are required.
Recommended modules/libraries
- https://www.drupal.org/project/entity_language_fallback provides the same per-language fallback concept but for entity/content translations. Using both modules together gives you full control over fallback behavior for both content and interface strings.