翻译 function.php 中的字符串 (Polylang)
Translate strings in function.php (Polylang)
谁能教我如何翻译子主题 function.php 中自定义代码中的字符串?
我想让字符串 'Gift Receiver:' 和 'Contact No:' 可以在 Polylang 'Strings Translation' Tab.
中翻译
此致
function gift_receiver( $cart_item, $cart_item_key ) {
$greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
printf(
'<div><label>Gift Receiver:</label> <textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$greceiver
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );
function gift_sender( $cart_item, $cart_item_key ) {
$gsender = isset( $cart_item['gsender'] ) ? $cart_item['gsender'] : '';
printf(
'<div><label>Contact No:</label> <textarea class="%s" id="cart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$gsender
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_sender', 10, 2 );
您需要主题的文本域才能使其正常工作。当我使用 "your_textdomain".
时插入你的文本域
您需要像这样将字符串放入您的插件中:
<?php echo pll_e('Your String'); ?>
所以你的代码是这样的:
... printf('<div><label>'.pll_e('Gift Receiver').':</label> <textarea ....
然后您可以将此字符串添加到主题文件夹中的 functions.php 文件中:
/** TRANSLATIONS **/
add_action('init', function() {
pll_register_string('your_textdomain', 'Your String');
pll_register_string('your_textdomain', 'Gift Receiver');
});
之后,你就可以在polylang插件的字符串翻译中找到这个字符串了。使用主题的文本域,您可以使用字符串翻译选项卡的 select 字段轻松找到它们。
这是我为 Polylang 字符串翻译所做的设置,所以我仍然可以拥有标准的 __ 和 _e 翻译功能。
if ( !is_admin() ) {
add_filter( 'gettext', 'my_translate_string', 10, 3 );
}
function my_translate_string( $translated_text, $text, $domain ) {
if ( $domain <> 'mytheme' || !function_exists( 'pll__' ) ) {
return $translated_text;
}
return pll__( $text );
}
add_action( 'after_setup_theme', 'my_register_polylang_strings' );
function my_register_polylang_strings() {
if ( function_exists( 'pll_register_string' ) ) {
// template-parts/misc/breadcrumbs.php
pll_register_string( 'my-search-results', 'Search Results', 'mytheme', false );
pll_register_string( 'my-home', 'Home', 'mytheme', false );
// template-parts/loop/post.php
pll_register_string( 'my-read-more', 'Read More', 'mytheme', false );
// in your example would be
pll_register_string( 'my-gift-receiver', 'Gift Receiver', 'mytheme', false );
}
}
然后你就可以在你的主题文件中使用了
_e( 'Gift Receiver', 'mytheme' );
__( 'Gift Receiver', 'mytheme' );
所以在你的情况下是:
function gift_receiver( $cart_item, $cart_item_key ) {
$greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
printf(
'<div><label>'.__('Gift Receiver','mytheme').':</label> <textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$greceiver
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );
'mytheme' 是您的主题域。
谁能教我如何翻译子主题 function.php 中自定义代码中的字符串?
我想让字符串 'Gift Receiver:' 和 'Contact No:' 可以在 Polylang 'Strings Translation' Tab.
中翻译此致
function gift_receiver( $cart_item, $cart_item_key ) {
$greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
printf(
'<div><label>Gift Receiver:</label> <textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$greceiver
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );
function gift_sender( $cart_item, $cart_item_key ) {
$gsender = isset( $cart_item['gsender'] ) ? $cart_item['gsender'] : '';
printf(
'<div><label>Contact No:</label> <textarea class="%s" id="cart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$gsender
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_sender', 10, 2 );
您需要主题的文本域才能使其正常工作。当我使用 "your_textdomain".
时插入你的文本域您需要像这样将字符串放入您的插件中:
<?php echo pll_e('Your String'); ?>
所以你的代码是这样的:
... printf('<div><label>'.pll_e('Gift Receiver').':</label> <textarea ....
然后您可以将此字符串添加到主题文件夹中的 functions.php 文件中:
/** TRANSLATIONS **/
add_action('init', function() {
pll_register_string('your_textdomain', 'Your String');
pll_register_string('your_textdomain', 'Gift Receiver');
});
之后,你就可以在polylang插件的字符串翻译中找到这个字符串了。使用主题的文本域,您可以使用字符串翻译选项卡的 select 字段轻松找到它们。
这是我为 Polylang 字符串翻译所做的设置,所以我仍然可以拥有标准的 __ 和 _e 翻译功能。
if ( !is_admin() ) {
add_filter( 'gettext', 'my_translate_string', 10, 3 );
}
function my_translate_string( $translated_text, $text, $domain ) {
if ( $domain <> 'mytheme' || !function_exists( 'pll__' ) ) {
return $translated_text;
}
return pll__( $text );
}
add_action( 'after_setup_theme', 'my_register_polylang_strings' );
function my_register_polylang_strings() {
if ( function_exists( 'pll_register_string' ) ) {
// template-parts/misc/breadcrumbs.php
pll_register_string( 'my-search-results', 'Search Results', 'mytheme', false );
pll_register_string( 'my-home', 'Home', 'mytheme', false );
// template-parts/loop/post.php
pll_register_string( 'my-read-more', 'Read More', 'mytheme', false );
// in your example would be
pll_register_string( 'my-gift-receiver', 'Gift Receiver', 'mytheme', false );
}
}
然后你就可以在你的主题文件中使用了
_e( 'Gift Receiver', 'mytheme' );
__( 'Gift Receiver', 'mytheme' );
所以在你的情况下是:
function gift_receiver( $cart_item, $cart_item_key ) {
$greceiver = isset( $cart_item['greceiver'] ) ? $cart_item['greceiver'] : '';
printf(
'<div><label>'.__('Gift Receiver','mytheme').':</label> <textarea class="%s" id="rcart_notes_%s" data-cart-id="%s">%s</textarea></div>',
'prefix-cart-notes',
$cart_item_key,
$cart_item_key,
$greceiver
);
}
add_action( 'woocommerce_after_cart_item_name', 'gift_receiver', 10, 2 );
'mytheme' 是您的主题域。