[wp-trac] [WordPress Trac] #63944: load_script_textdomain doesn't use plugin's DomainPath for translation lookup
WordPress Trac
noreply at wordpress.org
Mon Sep 8 06:52:50 UTC 2025
#63944: load_script_textdomain doesn't use plugin's DomainPath for translation
lookup
--------------------------+-----------------------------
Reporter: jsnajdr | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: I18N | Version: trunk
Severity: normal | Keywords:
Focuses: |
--------------------------+-----------------------------
When `load_script_textdomain` looks up translations for a script, it
doesn't use the plugin's `DomainPath` header value. That's an unjustified
difference between how PHP and JS translations are looked up.
The current workflow is that translations for a script are declared with:
```php
wp_set_script_translations( 'my-script', 'my-domain', $optional_path );
```
If I omit the `$optional_path`, translations are looked up only in the
"global" `wp-content/languages/plugins` directory. No "local" plugin path
is looked at.
I need to declare the local path explicitly if I want it to be used:
```php
wp_set_script_translations( 'my-script', 'my-domain', plugin_dir_path(
__FILE__ ) . 'languages' );
```
The expected behavior, however, is that I can:
1. Call `wp_set_script_translations` without the `$path` argument;
2. Declare `DomainPath: /languages` in the plugin main file;
3. Get the translations looked up in plugin's `./languages` subfolder.
This is how PHP translations work, when calling `__()`, in a plugin's PHP
file.
@swissspidy If I understand correctly, respecting `DomainPath` is a quite
recent addition, from 6.8 earlier this year. And this bug looks like an
omission?
Fixing this would probably solve also #54797, or at least a big part of
it.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/63944>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list