我已经为我的短代码创建了Gutenberg块,下面是一些代码:
要加载脚本的init hook中PHP文件中的代码:
wp_register_script(
\'my-blocks-script\', $pluginurl . \'/custom-blocks.js\',
array( \'wp-blocks\', \'wp-components\', \'wp-element\', \'wp-i18n\', \'wp-editor\' ),
filemtime( $plugindir . \'/custom-blocks.js\' )
);
// Script contains translations
if( function_exists(\'wp_set_script_translations\') ) {
wp_set_script_translations( \'my-blocks-script\', \'my-text-domain\' );
}
// Shortcode block
register_block_type( \'custom-block/my-shortcode\', array(
\'editor_script\' => \'my-blocks-script\'
) );
JS代码:文件:自定义块。js公司
( function (blocks, editor, components, i18n, element ) {
// Define common variables
var el = wp.element.createElement;
var registerBlockType = wp.blocks.registerBlockType;
var InnerBlocks = wp.editor.InnerBlocks;
var BlockControls = wp.editor.BlockControls;
var Dashicon = wp.components.Dashicon;
var __ = wp.i18n.__;
// Shortcode
registerBlockType( \'custom-block/my-shortcode\', {
title: __( \'Shortcode Title\', \'my-text-domain\' ),
description: \'\',
icon: Dashicon.cogs,
category: \'common\',
attributes: {
display: {
type: \'boolean\',
default: true
}
},
edit: function() {
return [
el( components.CheckboxControl, {
label: __( \'Display it?\', \'my-text-domain\' ),
checked: props.attributes.myAttr,
onChange: function( val ) {
props.setAttributes({ myAttr: val })
}
} ),
];
},
save: function(props) {
return(
el(\'div\', { className: props.className }, \'[my-shortcode display="\'+props.attributes.display+\'"]\' )
);
}
} );
} ) (
window.wp.blocks,
window.wp.editor,
window.wp.components,
window.wp.i18n,
window.wp.element
);
一切正常,也阻止显示结果。但现在我想翻译“显示它?”文本使用另一种语言(我使用Loco翻译插件),我检查了po文件中的翻译字符串,PHP文件中的翻译字符串也可以正常工作。
在这里,只有JS文件转换不起作用。
SO网友:Sally CJ
只有JS文件翻译不起作用
很可能是因为WordPress找不到您的翻译文件,该文件应为有效的JED 格式,如下所示:
{
"domain": "my-text-domain",
"locale_data": {
"my-text-domain": {
"": {
"domain": "my-text-domain",
"plural-forms": "n != 1",
"lang": "en-us"
},
"Shortcode Title": [
"Shortcode Title translated"
],
"Display it?": [
"Display it? translated"
],
"Another text 1": [
"Translated text - singular",
"Translated text - plural"
],
"Another text 2": [
"Translated text"
// No plural.
]
}
}
}
并使用以下格式的名称保存:
${domain}-${locale}-${handle}.json
. 例如,在您的情况下,它可能是
my-text-domain-en_US-my-blocks-script.json
如果网站的语言为
English (United States)
(请参阅“常规设置”和“站点语言”)。
当你打电话的时候wp_set_script_translations()
, 可以指定第三个参数($path
) 它是指向包含JS/JSON转换文件的目录的完整绝对文件路径。E、 g.:
// $pluginurl was taken from your code
wp_set_script_translations( \'my-blocks-script\', \'my-text-domain\', $pluginurl . \'/languages\' );
此外,您可以使用
po2json 转换采购订单/
.po
将文件转换为与JED兼容的JavaScript对象或JSON字符串。
Notes:
<在上述JS/JSON翻译数据中,语言环境如下所示
"lang": "{locale}"
应该是GlotPress区域设置,如上的表所示
this page. 例如
en-gb
对于
English (UK)
.
在您的JS/JSON翻译文件名中,区域设置如下${domain}-${locale}-${handle}.json
应为WP语言环境,如上表所示this page. 例如en_GB
对于English (UK)
.