[wp-trac] [WordPress Trac] #49625: load_theme_textdomain() opens local files without domain in their name

WordPress Trac noreply at wordpress.org
Wed Mar 11 17:52:08 UTC 2020


#49625: load_theme_textdomain() opens local files without domain in their name
--------------------------+------------------------------
 Reporter:  marekdedic    |       Owner:  (none)
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  I18N          |     Version:  5.3.2
 Severity:  normal        |  Resolution:
 Keywords:                |     Focuses:
--------------------------+------------------------------
Description changed by SergeyBiryukov:

Old description:

> Hi,
>
> I am developing a theme called `crdm-modern` and want to add translations
> for the language `cs_CZ`. I want to load local `.mo` files as the
> translations. In order to do that, I placed a file called `crdm-modern-
> cs_CZ.mo` in the theme in the `languages` folder. I tried to use this by
> calling `load_theme_textdomain( 'crdm-modern', get_stylesheet_directory()
> . '/languages' )`. However this failed.
>
> Looking at the source of the function `load_theme_textdomain()`
> [https://developer.wordpress.org/reference/functions/load_theme_textdomain/],
> I see the following line:
>
> `return load_textdomain( $domain, $path . '/' . $locale . '.mo' );`
>
> So this would load the file `languages/cs_CZ.mo`. I think this is a bug
> and it should instead try to load the file `languages/crdm-modern-
> cs_CZ.mo`. This would be in line with how the function
> `load_plugin_textdomain()` works - that's wha I think it is a bug.
>
> Looking at the code, I think the issue was introduced in
> [https://core.trac.wordpress.org/changeset/37414] and could be solved by
> replacing
>
> `return load_textdomain( $domain, $path . '/' . $locale . '.mo' );`
>
> with
>
> `return load_textdomain( $domain, $path . '/' . $mofile );`

New description:

 Hi,

 I am developing a theme called `crdm-modern` and want to add translations
 for the language `cs_CZ`. I want to load local `.mo` files as the
 translations. In order to do that, I placed a file called `crdm-modern-
 cs_CZ.mo` in the theme in the `languages` folder. I tried to use this by
 calling `load_theme_textdomain( 'crdm-modern', get_stylesheet_directory()
 . '/languages' )`. However this failed.

 Looking at the source of the function `load_theme_textdomain()`
 [https://developer.wordpress.org/reference/functions/load_theme_textdomain/],
 I see the following line:

 `return load_textdomain( $domain, $path . '/' . $locale . '.mo' );`

 So this would load the file `languages/cs_CZ.mo`. I think this is a bug
 and it should instead try to load the file `languages/crdm-modern-
 cs_CZ.mo`. This would be in line with how the function
 `load_plugin_textdomain()` works - that's wha I think it is a bug.

 Looking at the code, I think the issue was introduced in [37414] and could
 be solved by replacing

 `return load_textdomain( $domain, $path . '/' . $locale . '.mo' );`

 with

 `return load_textdomain( $domain, $path . '/' . $mofile );`

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/49625#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list