Previously I could internationalize javascript with sage 10.0.0-beta.1 and Log1x/acf-composer 2.0:
# app/Blocks/Example.php
<?php
namespace App\Blocks;
use Log1x\AcfComposer\Block;
use Roots\Acorn\Application;
use StoutLogic\AcfBuilder\FieldsBuilder;
use function Roots\asset;
class Example extends Block {
...
/**
* Assets to be enqueued when rendering the block.
*
* @return void
*/
public function enqueue()
{
wp_enqueue_script(
'example',
asset('scripts/example.js')->uri(),
['wp-i18n']
);
wp_set_script_translations(
'example',
'sage',
get_template_directory() . '/resources/lang'
);
}
}
# webpack.mix.js
...
mix
.js('resources/scripts/app.js', 'scripts')
.js('resources/scripts/customizer.js', 'scripts')
.js('resources/scripts/example.js', 'scripts')
.blocks('resources/scripts/editor.js', 'scripts')
.autoload({ jquery: ['$', 'window.jQuery'] })
.extract();
...
# resources/scripts/example.js
import { __ } from '@wordpress/i18n';
document.addEventListener('DOMContentLoaded', function() {
const __ = wp.i18n.__
alert( __( 'Hello!', 'sage' ) )
}
# resources/lang/sage-ja-example.json
{
"translation-revision-date": "2021-07-17 10:34+0800",
"generator": "WP-CLI\/2.4.0",
"source": "resources\/scripts\/example.js",
"domain": "messages",
"locale_data": {
"messages": {
"": {
"domain": "messages",
"lang": "ja",
"plural-forms": "nplurals=1; plural=0;"
},
"Hello!": [
"\u3053\u3093\u306b\u3061\u306f\uff01"
]
}
}
}
I am trying to upgrade to sage 10 v10.8.1, and import modules dynamically using the import() function. However internationalize javascript can’t work:
# app/Blocks/Example.php
<?php
namespace App\Blocks;
use Log1x\AcfComposer\Block;
use Roots\Acorn\Application;
use StoutLogic\AcfBuilder\FieldsBuilder;
use function Roots\asset;
class Example extends Block {
...
/**
* Assets to be enqueued when rendering the block.
*
* @return void
*/
public function enqueue()
{
// wp_enqueue_script(
// 'example',
// asset('scripts/example.js')->uri(),
// ['wp-i18n']
//);
wp_set_script_translations(
'example',
'sage',
get_template_directory() . '/resources/lang'
);
}
}
# bud.config.js
export default async (app) => {
/**
* Application assets & entrypoints
*
* @see {@link https://bud.js.org/reference/bud.entry}
* @see {@link https://bud.js.org/reference/bud.assets}
*/
app
.entry({
app: {
import: ["@scripts/app", "@styles/app"],
},
})
.entry('editor', ['@scripts/editor', '@styles/editor'])
.assets(['images']);
...
# resources/scripts/app.js
import domReady from '@roots/sage/client/dom-ready';
...
/**
* Application entrypoint
*/
domReady(async (err) => {
// ...
if (err) {
console.error(err);
}
const app = async () => {
if (document.querySelector('.example')) {
const { example } = await import('./example.js');
example();
}
...
# resources/scripts/example.js
import { __ } from '@wordpress/i18n';
export const example = async (err) => {
if (err) {
console.error(err);
}
const __ = wp.i18n.__
alert( __( 'Hello!', 'sage' ) )
}
# resources/lang/sage-ja-example.json
{
"translation-revision-date": "2022-01-14 16:27+08000",
"generator": "WP-CLI\/2.9.0",
"source": "resources\/scripts\/example.js",
"domain": "messages",
"locale_data": {
"messages": {
"": {
"domain": "messages",
"lang": "ja",
"plural-forms": "nplurals=1; plural=0;"
},
"Hello!": [
"\u3053\u3093\u306b\u3061\u306f\uff01"
]
}
}
}
Would be great if you could give me some hints to point me in the right direction.
Thanks in advance!