Home » Documentation » Developers Information » Troubleshooting String Localization

Troubleshooting String Localization

WPML’s String Translation mechanism allows to translate texts in the theme or plugins without having to go through .po and .mo files.

First, have a look at how to localize theme texts. If you entered translations, indicated that they’re complete and still seeing the original language in the site, check for one of these problems:

1) WPML Localization is set and language locale set

Go to WPML->Theme and plugin localization and make sure that it’s set to translate with WPML.

If you’ve chosen to either translate with a .mo file or not translate at all. It’s not going to work.

Then, make sure that all languages have their locale set correctly. This is crucial so that any existing translations that come from .mo files from other places (like your many plugins), still work.

2) TextDomain argument is set and its value correct

GetText calls look like this:

_e('Leave a reply','gogotheme');

In this example, the text for translation is ‘Leave a reply’. The second argument is called the text-domain. A text-domain says what the text belongs to.

A blank text-domain means that it belongs to WordPress core.

There are no reserved values for the text-domain. If you’re using an existing theme, find out what the theme’s text-domain is and keep using it. If you’re creating your own theme, just make up a text-domain and use it. Be consistent.

That text-domain argument needs to be a simple string. Not an expression and not a function. Just a string.

3) Texts in widgets needs to go through ‘apply_filters’

If you’re writing your own code for widgets, make sure that the texts go through filters. WPML acts as a translation filter, so if filters are not applied, translations will not show.

For example, this is how the standard WP widgets work:

function widget( $args, $instance ) {
  extract($args);
  $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
  $text = apply_filters( 'widget_text', $instance['text'], $instance );
}

As we can see, both the title and text go through filters.

2 Responses to “Troubleshooting String Localization”

  1. Darren says:

    Hi
    i wanted to post on your forum, but on your forum for the life of me i could find no button saying “create new post” ! :-( I looked on your site to try to find some support email address to email,couldn;t :-(

    I like this plugin, but, if I cant get bits working I will have to ask for the refund, which would be a shame.

    anyway, i have theme widgets, i have checked the code and its wrapped in apply_filters:

    $title = apply_filters(‘widget_title’, $instance['title'] );
    $content = apply_filters(‘widget_content’, $instance['content'] );

    now doing a scan using your plugin for strings finders the TITLE but, does not find the widget_content. I have rescanned and rescanned and rescanned, yet it never finds it :-(

    Help, please! thanks
    Darren

Leave a Reply

Please leave here comments about this page only.
For technical support and feature suggestions, head to our forum. We are waiting there!

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>