# Fall Back to a Related Language's Translations

> Uses translations from a closely related language when the visitor's exact locale has none, for example German (Germany) files on a Swiss German site or Spanish (Spain) on a Mexican Spanish site, instead of falling back to English.

- Type: PHP
- Runs: Run everywhere
- Category: [Multilingual](https://wpide.com/library/category/multilingual/)
- Tags: translations, locale, fallback
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/i18n-locale-translation-fallback/

## Code

```php
$wpide_fallbacks = array( // Locale => fallback locale.
    'de_CH'          => 'de_DE',
    'de_CH_informal' => 'de_DE',
    'es_MX'          => 'es_ES',
    'fr_CA'          => 'fr_FR',
    'pt_PT'          => 'pt_BR',
);

add_filter( 'load_textdomain_mofile', function ( $mofile ) use ( $wpide_fallbacks ) {
    if ( is_readable( $mofile ) || is_readable( preg_replace( '/\.mo$/', '.l10n.php', $mofile ) ) ) {
        return $mofile;
    }

    foreach ( $wpide_fallbacks as $locale => $fallback ) {
        $suffix = $locale . '.mo';
        if ( substr( $mofile, -strlen( $suffix ) ) === $suffix ) {
            $candidate = substr( $mofile, 0, -strlen( $suffix ) ) . $fallback . '.mo';
            if ( is_readable( $candidate ) || is_readable( preg_replace( '/\.mo$/', '.l10n.php', $candidate ) ) ) {
                return $candidate;
            }
        }
    }

    return $mofile;
} );
```

## Notes

Map each locale to its fallback in $wpide_fallbacks. The fallback language pack must be installed (Settings > General, then switch back).

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Fall Back to a Related Language's Translations" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
