Wordpress Plugin Localization

2019-02-16 19:17发布

问题:

i've just built my first plugin for wp, and even if it's not a great "code poetry" ;) it works as it should. It's a plugin that transform the default wp gallery using the GalleryView 3.0 jquery plugin (http://spaceforaname.com/galleryview).

The only thing i'm not able to do is localization. Localization for this plugin in means translating the admin interface, where someone can configure the jquery plugin options to change the aspect of the resulting gallery.

I've tried to follow the millions of tutorials present on the web, read a lot of posts about this issue on forums and followed the guidelinees of codex... but still with no luck.

this is what i've done:

  1. every text line is inside a gettext function ( __ and _e )
  2. using poedit i created the .po and .mo file scanning the plugin directory (everythig went ok), then i added translations on that file.
  3. i named the .po file like that NAME-OF-THE-PLUGIN-it_IT.po (the .mo file was generated with the same name)
  4. i've put the translations files inside the plugin folder/languages (name of the folder is the same of the plugin and of the translations files)
  5. then i've tried to add the load_plugin_textdomain function inside the main plugin file. I've tried because there's no way to get it working.

The only thing on wich i'm not sure is the fact that the plugin i've created is not under a class+constructor funcions... just because i'm still not so good in coding.

But i've put the load_plugin_textdomain inside an init add_action, like this:

add_action('init', 'gw_load_translation_file');

function gw_load_translation_file() {
// relative path to WP_PLUGIN_DIR where the translation files will sit:
$plugin_path = dirname(plugin_basename( __FILE__ ) .'/languages' );
load_plugin_textdomain( 'gallery-view-for-wordpress', false, $plugin_path );
}

the lines above are not inside a logic, they are just in the main plugin file, like that.

this is an example of my use of gettext functions:

<h3><?php _e('Panel Options','gallery-view-for-wordpress') ?></h3>

what did i not understand?

回答1:

My mistake was on language files path declaration.

this fixed:

$plugin_path = dirname( plugin_basename( __FILE__ ) ) . '/languages/';

this was wrong:

$plugin_path = dirname(plugin_basename( __FILE__ ) .'/languages' );

I was answered on Wordpress Stack Exchange



回答2:

Contrary to my previous statement, I've succeeded using this filename: gallery-view-for-wp-it_IT.mo

Strange, though - themes use just it_IT.mo.