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.
Opens WPIDE on
Code
$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 add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.