翻译我主题的function.php文件中的自定义标签字段

时间:2016-12-25 15:09:46

标签: php wordpress woocommerce translation custom-fields

在社区的帮助下,我成功地创建,保存并将标签及其值打印到单个产品页面。

我还可以使用 Polylang 将输入值翻译成不同的语言,但翻译自定义标签(条件和品牌)非常困难。

那里有人可以帮我解决这些问题吗?

我尝试使用 Polylang Saywhat ...但没有成功!

以下是代码:

// Enabling and Displaying Fields in backend
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
function woo_add_custom_general_fields() {
    global $woocommerce, $post;

    echo '<div class="options_group">';
    woocommerce_wp_text_input( array( // Text Field type
        'id'          => '_conditions', 
        'label'       => __( 'Conditions', 'woocommerce' ), 
        'placeholder' => 'i.e: brand-new; refurbished; defected...',
        'desc_tip'    => 'true',
        'description' => __( 'Enter the conditions of the products here.', 'woocommerce' ) 
    ) );
    woocommerce_wp_text_input( array( // Text Field type
        'id'          => '_brands',
        'label'       => __( 'Brands', 'woocommerce' ), 
        'placeholder' => 'i.e: Lacoste; Hugo Boss...etc',
        'desc_tip'    => 'true',
        'description' => __( 'Enter names of the Brands of the products if any.', 'woocommerce' ) 
    ));
    echo '</div>'; // Closing </div> tag HERE
}

// Save Fields values to database when submitted (Backend)
add_action( 'woocommerce_process_product_meta', 'woo_save_custom_general_fields' );
function woo_save_custom_general_fields( $post_id ){

    // Saving "Conditions" field key/value
    $conditions_field = $_POST['_conditions'];
    if( !empty( $conditions_field ) )
        update_post_meta( $post_id, '_conditions', esc_attr( $conditions_field ) );

    // Saving "Brands" field key/value
    $brands_field = $_POST['_brands'];
    if( !empty( $brands_field ) )
        update_post_meta( $post_id, '_brands', esc_attr( $brands_field ) );
}
add_action('woocommerce_single_product_summary', 'woo_display_custom_general_fields_values', 20);
function woo_display_custom_general_fields_values() {
    global $product;

    echo '<p class="custom-conditions">Conditions: ' . get_post_meta( $product->id, '_conditions', true ) . '</p>';
    echo '<p class="custom-brands">Brands: ' . get_post_meta( $product->id, '_brands', true ) . '</p>';
}

这里有截图:

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:1)

首先,您应该将gettex域名从 'woocommerce' 更改为您主题的域名(或更多自定义域名),因为它不会成为woocommerce代码的一部分,它位于您的活动主题中。

1)免费替代方案:

  

然后,因为您尝试翻译的内容并不真实,但是您的活动子主题(或活动主题)的 function.php 文件中存在一些代码和平,您应该使用专门的免费插件Loco Translate,它将提供WordPress翻译文件的浏览器内编辑。

Loco Translate还为开发人员提供本地化工具,例如提取字符串和生成模板。

Loco Translate功能包括:

  • WordPress管理员内置的翻译编辑器
  • 直接在主题或插件中创建和更新语言文件
  • 从源代码中提取可翻译字符串
  • 本机MO文件编译,无需在系统上使用Gettext
  • 支持PO功能,包括评论,参考和复数形式
  • 带有可点击源代码参考的PO源视图
  • 用于保存自定义翻译的受保护语言目录
  • 可配置的PO文件备份
  • 内置WordPress区域设置代码

2)商业完整方式(与WooCommerce完全兼容):

最完整的商业替代品是WPML插件,它还可以处理多语言网站的WooCommerce自定义本地化和翻译内容。其他免费的可选插件对于WooCommerce来说是不完整的,更难以让它们完全正常工作。

  

因此,如果您计划发布多语言网站,请考虑一下。