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
Related
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?
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.
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.
I have a Wordpress site that has support for other languages using the gettext system.
I am curious if I can call content dynamically, let's say from function the_content():
printf( __( '%s', 'my-theme' ), the_content() );
I'm guessing this is only possible if I provide the entire string in a .po file, which would obviously be in-efficient, not to mention that content would always be changing.
But I CAN do this, correct?
Since the_content() should be the content of a Post or a Page, you can install WordPress plugin like qTranslate, zTranslate or equiv. to provide multi-language contents.
Translation via .po file is only recommend for static contents, like menu items, static links, etc.
I am trying to figure out the translation in the magento.
Ok, so I understand how it works but here is the problem.
For instance this is part of the source code in one of the PHTML files:
<p class="hello"><strong><?php echo $this->__('Hello, %s!', $this->htmlEscape($this->getCustomerName())) ?></strong></p>
How am i supposed to translate the word "Hello," in this case? Theres tons of this type of parsend strings on the page and please dont tell me that i will have to re-write all this examples to get the translator working?
Is there any other way?
Magento will translate the literal string that is placed in the __() function. Meaning, if you place this in your translation file it will translate anything placed with %s:
"Hello, %s!","Bonjour, %s!"
As for actually translating, you can use inline translation (found in System > Configuration > Developer) or adjust your themes custom translation file. If you have caching enabled, don't forget to refresh the Translation cache type in System > Configuration > Cache Management.