How to translate custom plugin by creating .po and .mo file - php

Basically my requirement is to translate my custom plugin in dutch language for WPML. So when I change the language from english to dutch, It has to automatically change all the text of my plugin in admin panel. I am creating .po file from poedit software. It generates two files .po and .mo file. I put them in the plugin folder;
../wp-content/plugins/cleaner/languages/nl_NL.po
../wp-content/plugins/cleaner/languages/nl_NL.mo
Now I put this code in root file of the plugin.
add_action('init', 'cleaner_load_textdomain');
function cleaner_load_textdomain() {
load_plugin_textdomain(
'cleaner'
, false
, basename(dirname(__FILE__)) . '/languages'
);
}
But it is not doing anything. Any suggetions. Thanks in advance.

Related

WordPress theme - Translations from .PO & .MO files are not working

I've been trying to translate a WordPress theme for days with no success, no matter what I try, the _e translate function doesn't work and the strings just stay the same as they are in the .POT file.
What I've done so far:
Loaded the text domain from the languages folder from inside the theme inside functions.php
function theme_setup() {
load_theme_textdomain( 'domain', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'theme_setup' );
Wrapped the strings I want to translate in the _e() function, including the text domain.
<?php _e( 'Află mai multe', "domain" ); ?>
The languages folder includes a .POT file generated with EazyPo that includes all strings that are inside _e() functions together with an English translation of my strings with .PO and .MO files called en.PO and en.MO respectively.
Switched the language of the website in WordPress General Settings to English.
What I see from your code is that you action is calling the wrong function.
You should change this: add_action( 'after_setup_theme', 'optimrent_setup' );
To this: add_action( 'after_setup_theme', 'theme_setup' );
Because the second parameter to add_action is to what function the callback should be. So in that code you have above, should display some sort of error if you don't have the function optimrent_setup

I can not translate the theme created for WordPress?

I need to translate my wordpress theme.
I did:
load_theme_textdomain( 'text_domain', get_template_directory().'/language' );
in to function.php.
through the functions__("string","text_domain") and poedit I have generated files po and mo , but nothing translation.
what is the problem?
i have
also tried with _e() esc_html_e() esc_html__() nothing.The problem is that I'm working in local?

WPML String translation for Custom theme not working

I am developing a custom wordpress theme and the client requirement is that the site should be on two languages (i.e English and Chinese).
I am facing using translating theme options. I have installed all the plugins required like CMS, String translation and Translation Management but yet the translation is not working.
I have created the XML file as well and stored it on the theme root folder.
After all, this the error is displayed as:
[theme_switched: 0] shineway_footer_partnertwo: http://yelkolab.com/projects/shineway/wp-content/uploads/2015/10/e.png
string not registered
I have using following code snippet to display theme option values on site:
<?php echo stripslashes(get_option('shineway_footer_partnertwo'));?>
You need to use _e instead of echo:
<?php _e( stripslashes(get_option('shineway_footer_partnertwo')), 'your-text-domain' ); ?>
Afterwards rescan your theme with String Translation and add the translation.

Woocommerce Multilingual issue, How to add and edit string.

I am working on an multilingual e-Shop using Woocommerce. I downloaded the woocommerce .po and .mo, they work fine.
However, I added some custom content into some .php files.
And there are some string that I want to translate.
E.g. I found the code in "templates/content-product.php" and the code is at line 64:
I get into the .po file.
And added:
#: templates/content-product.php:64
msgid "View Product"
msgstr "查看產品"
But it doesn't work.
How to check the exact line of code to make it works?
You should copy template files into your theme's WooCommerce folder. And then if you modify strings, use the gettext() functions with a custom text domain.
For example:
_e( 'Some sample text', 'my-text-domain' );
Then you will be able to generate mo/po files for the 'my-text-domain'.
Developer's Handbook on internationalizing plugins
Codex: i18n for WordPress Developers

Translate WordPress plugin header

How can I translate WordPress plug-in header?
I have translate all strings in my plug-in using:
__() and _e() functions
.po files
Text Domain
WordPress function to load language file
load_plugin_textdomain('mnbaa-seo', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
I want to translate this section
<?php
/*
Plugin Name: Mnbaa SEO
Plugin URI: http://www.mnbaa.com
Description: WP blugin fom make SEO and Social SEO.
Author: Mnbaa CO
Author URI: http://www.mnbaa.com
Version: 1.0
Text Domian:mnbaa-seo
Domain Path: /languages/
*/
?>
You have to use WordPress' i18n tools to get the plugin's description translatable. i18n tools' makepot.php lets you auto-generate a .pot file, which then can be used to create the .mo/.po pair (with the free PoEdit for example).
The easiest way would be:
Download the zip from https://github.com/wp-mirrors/wp-i18n-tools.
Extract its content into the wp-includes folder.
Command line one-liner from within WP root: $ php wp-includes/makepot.php wp-plugin wp-content/plugins/MYPLUGIN/ wp-content/plugins/MYPLUGIN/MYLANGFOLDER/MYPLUGIN.pot
Then you take this resulting .pot file as source for PoEdit.
Finally ensure to name the .mo/.po like your plugin plus language code, for example: MYPLUGIN-de_DE.mo/MYPLUGIN-de_DE.po.
More (but not quite up-to-date) info can be found at WPO: https://codex.wordpress.org/I18n_for_WordPress_Developers#Translating_Plugins_and_Themes
I wonder if maybe PoEdit Pro can do that without us calling on the command line... Maybe someone who knows can drop a comment below.
Add somewhere inside your plugin code a dummy translation for the description and plugin name:
$dummy_name = __( 'Mnbaa SEO', 'mnbaa-seo' );
$dummy_desc = __( 'WP blugin fom make SEO and Social SEO.', 'mnbaa-seo' );
Then re-generate the .po/.mo pair.
I use only /languages for Domain Path, no trailing slash.
Check this answer for I18n support by plugins.

Categories