有什么方法可以将@WordPress/i18n用于<5.0吗?

时间:2020-11-22 作者:Daniel Simmons

我希望在JS文件中使用翻译字符串,不幸的是,我已经读到了@wordpress/i18n 不起作用<;5.0。是否有任何工具/库可以帮助我做到这一点?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

No. That library requires a newer version of WordPress. 如果您想使用该库,则需要将WordPress的版本更新到最新版本。

SO网友:Ivan Shatsky

尽管上述库带来了高级本地化能力(最重要的是_n 函数),使用wp_localize_script() 自WordPress 2.2以来,该功能已使用多年。以下是本地化的示例Magnific Popup 脚本(source) 从我的一个网站。首先,您应该更改脚本中所有硬编码的消息(这里是jquery.magnific-popup.js 显示如何执行的脚本):

--- jquery.magnific-popup.js
+++ jquery.magnific-popup.js
@@ -895,9 +895,9 @@
 
        closeMarkup: \'<button title="%title%" type="button" class="mfp-close">&#215;</button>\',
 
-       tClose: \'Close (Esc)\',
+       tClose: mfp_msg.close,
 
-       tLoading: \'Loading...\',
+       tLoading: mfp_msg.loading,
 
        autoFocusLast: true
 
@@ -974,7 +974,7 @@
    options: {
        hiddenClass: \'hide\', // will be appended with `mfp-` prefix
        markup: \'\',
-       tNotFound: \'Content not found\'
+       tNotFound: mfp_msg.content_not_found
    },
    proto: {
 
@@ -1047,7 +1047,7 @@
    options: {
        settings: null,
        cursor: \'mfp-ajax-cur\',
-       tError: \'<a href="%url%">The content</a> could not be loaded.\'
+       tError: mfp_msg.content_not_loaded
    },
 
    proto: {
@@ -1144,7 +1144,7 @@
        cursor: \'mfp-zoom-out-cur\',
        titleSrc: \'title\',
        verticalFit: true,
-       tError: \'<a href="%url%">The image</a> could not be loaded.\'
+       tError: mfp_msg.image_not_loaded
    },
 
    proto: {
@@ -1677,9 +1677,9 @@
        navigateByImgClick: true,
        arrows: true,
 
-       tPrev: \'Previous (Left arrow key)\',
-       tNext: \'Next (Right arrow key)\',
-       tCounter: \'%curr% of %total%\'
+       tPrev: mfp_msg.previous,
+       tNext: mfp_msg.next,
+       tCounter: mfp_msg.current
    },
 
    proto: {
接下来,按以下方式使用本地化脚本:

wp_enqueue_script( \'magnific-popup\', get_stylesheet_directory_uri() . \'/assets/lib/magnific-popup/magnific-popup.js\', array( \'jquery\' ) );
$magnific_popup_messages = array(
    \'close\'              => __( \'Close (Esc)\', \'your-text-domain\' ),
    \'loading\'            => __( \'Loading...\', \'your-text-domain\' ),
    \'content_not_found\'  => __( \'Content not found\', \'your-text-domain\' ),
    \'content_not_loaded\' => __( \'<a href="%url%">The content</a> could not be loaded.\', \'your-text-domain\' ),
    \'image_not_loaded\'   => __( \'<a href="%url%">The image</a> could not be loaded.\', \'your-text-domain\' ),
    \'previous\'           => __( \'Previous (Left arrow key)\', \'your-text-domain\' ),
    \'next\'               => __( \'Next (Right arrow key)\', \'your-text-domain\' ),
    \'current\'            => __( \'%curr% of %total%\', \'your-text-domain\' )
);
wp_localize_script( \'magnific-popup\', \'mfp_msg\', $magnific_popup_messages );
当您需要将一些参数传递给排队的javascript时,此函数也很有用(虽然它不是为这个目的而设计的,但这种类型的使用非常流行)。

相关推荐

month name translation

我使用birdtips主题,它将发布日期格式化为$birdtips_posted = date(__(\'Y. F j.\', \'birdtips\'), strtotime(get_the_time(\"Y-m-d\"))); 其中Y.F.j.已经被改写以反映我的语言。据我所知,\\uuuu是翻译功能,但我如何告诉Wordpress我使用匈牙利语,它会自动翻译月份名称,或者我应该在中给出名称。采购订单文件?