Page 1 of 1

Translation language

Posted: Thu Nov 07, 2019 10:25 am
by Silvio.Falconi
Php use a function php_e() to translate strings and the html use easy _e()

I use it on wordpress

sample

Code: Select all

<?php _e( 'Some text to translate and display.', 'textdomain' ); ?>

these function use .pot /.mo files, you can edit these files with Pedit application


But someone can convert to our language simply by converting this function
the source of this function is

function _e( $text, $domain = 'default' ) {
echo translate( $text, $domain );
}

sample
_e( string $text, string $domain = 'default' )


In this function,the “$domain” is used to locate the multilingual file.(The file which is the translation of your theme.)
In wp-include there is a function related to this var

Code: Select all

function load_theme_textdomain( $domain, $path = false ) {
$locale = apply_filters( 'theme_locale', get_locale(), $domain );
  
if ( ! $path )
$path = get_template_directory();
  
// Load the textdomain from the Theme provided location, or theme directory first
$mofile = "{$path}/{$locale}.mo";
if ( $loaded = load_textdomain($domain, $mofile) )
return $loaded;
  
// Else, load textdomain from the Language directory
$mofile = WP_LANG_DIR . "/themes/{$domain}-{$locale}.mo";
return load_textdomain($domain, $mofile);
}
You can see $domain is used in this file.Actually it’s used to locate the .mo file.So you must may sure it share the same name with your theme folder name

function translate source

Code: Select all

function translate( $text, $domain = 'default' ) {
    $translations = get_translations_for_domain( $domain );
    $translation  = $translations->translate( $text );
 
    /**
     * Filters text with its translation.
     *
     * @since 2.0.11
     *
     * @param string $translation  Translated text.
     * @param string $text         Text to translate.
     * @param string $domain       Text domain. Unique identifier for retrieving translated strings.
     */
    return apply_filters( 'gettext', $translation, $text, $domain );
}

 
function apply_filters source

Code: Select all

function apply_filters( $tag, $value ) {
    global $wp_filter, $wp_current_filter;
 
    $args = array();
 
    // Do 'all' actions first.
    if ( isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $tag;
        $args                = func_get_args();
        _wp_call_all_hook( $args );
    }
 
    if ( ! isset( $wp_filter[ $tag ] ) ) {
        if ( isset( $wp_filter['all'] ) ) {
            array_pop( $wp_current_filter );
        }
        return $value;
    }
 
    if ( ! isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $tag;
    }
 
    if ( empty( $args ) ) {
        $args = func_get_args();
    }
 
    // don't pass the tag name to WP_Hook
    array_shift( $args );
 
    $filtered = $wp_filter[ $tag ]->apply_filters( $value, $args );
 
    array_pop( $wp_current_filter );
 
    return $filtered;
}

 
of course these functions run on wordpress but I think you can convert them to mod_harbour but I don't like how you do it