WordPress.org

Make WordPress Core

Ticket #28197: fallback-languages-2.diff

File fallback-languages-2.diff, 1.3 KB (added by downstairsdev, 8 years ago)

Fallback languages (generic) patch.

  • wp-includes/l10n.php

     
    454454         */
    455455        $mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );
    456456
    457         if ( !is_readable( $mofile ) ) return false;
     457        if ( !is_readable( $mofile ) ) {
     458                $mofile = get_fallback_translation( $mofile, $domain );
     459                if ( false === $mofile ) {
     460                        return false;
     461                }
     462        }
    458463
    459464        $mo = new MO();
    460465        if ( !$mo->import_from_file( $mofile ) ) return false;
     
    468473}
    469474
    470475/**
     476 * Looks for a fallback translation file to use if locale is not available.
     477 *
     478 * @since 4.0.0
     479 *
     480 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     481 * @param string $mofile Path to the .mo file.
     482 * @return false or string $mofile Path
     483 */
     484function get_fallback_translation( $mofile, $domain ) {
     485
     486        $fallback = strtok( get_locale(), '_' );
     487
     488        $fallback_mofile = dirname( $mofile ) . '/' . $domain . '-' . $fallback . '.mo';
     489
     490        $mofile = apply_filters( 'load_textdomain_mofile', $fallback_mofile, $domain );
     491        if ( is_readable( $mofile ) ) {
     492                return $mofile;
     493        }
     494        return false;
     495}
     496
     497/**
    471498 * Unload translations for a text domain.
    472499 *
    473500 * @since 3.0.0