Wp 6.7 child theme lang works only in custom folder
-
this is a follow up of my post here: https://wordpress.org/support/topic/broken-translations-after-updating-to-wordpress-6-7/
Translations of my child theme are shown only if I have a copy in Loco custom folder.
I’m using a custom child theme for Hello Elementor theme.
I load translations with
load_child_theme_textdomain
function:add_action( 'after_setup_theme', 'xxx_theme_setup' );
function xxx_theme_setup() {
load_child_theme_textdomain( 'xxx_xxx', get_stylesheet_directory() . '/languages' );
}Before WP 6.7 I just had .mo and .po files in my child theme
/language
folder without issues-
This topic was modified 10 months, 3 weeks ago by
bluantinoo.
-
This topic was modified 10 months, 3 weeks ago by
bluantinoo.
-
This topic was modified 10 months, 3 weeks ago by
-
Translations of my child theme are shown only if I have a copy in Loco custom folder.
Do you mean a copy in the custom folder AND one in the system folder? Is the problem when there’s only a system file, or only a custom file?
Please show your translation file layout for both the parent and child themes.
-
This reply was modified 10 months, 3 weeks ago by
Tim W.
I never had child theme translations in system folder. Just a copy in author was working.
Now it works only in custom folder.
No need of system or author copiesI’ll come back with others details asap
-
This reply was modified 10 months, 3 weeks ago by
bluantinoo.
@timwhitlock I double checked. In my Child theme there’s no need for system or author. As long as I have the translations in custom folder it’s working.
This is the beginning my child theme xxx-ja.po file:msgid ""
msgstr ""
"Project-Id-Version: Hello Elementor Child IIC\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-08 14:50+0000\n"
"PO-Revision-Date: 2024-11-14 10:29+0000\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco https://localise.biz/\n"
"X-Loco-Version: 2.6.6; wp-6.7\n"
"X-Domain: iic_corsi"
#: includes/inc-woocommerce.php:900
msgid "%d Place Still Available"
msgid_plural "%d Places Still Available"
msgstr[0] "残席%d名"
#: includes/inc-shortcodes.php:821
#, php-format
msgid "%s Available classes"
msgstr "開講クラス数:%s"
#: includes/inc-shortcodes.php:814
#, php-format
msgid "%s Class Available"
msgstr "開講クラス数:%s"Parent theme has translations only in the default “system” folder (never touched or used it).
this is the beginning of my hello-elementor-ja.po
# Translation of Themes - Hello Elementor in Japanese
# This file is distributed under the same license as the Themes - Hello Elementor package.
msgid ""
msgstr ""
"PO-Revision-Date: 2024-06-21 13:43:06+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: GlotPress/4.0.1\n"
"Language: ja_JP\n"
"Project-Id-Version: Themes - Hello Elementor\n"
#. Description of the theme
#: style.css
#, gp-priority: high
msgid "Hello Elementor is a lightweight and minimalist WordPress theme that was built specifically to work seamlessly with the Elementor site builder plugin. The theme is free, open-source, and designed for users who want a flexible, easy-to-use, and customizable website. The theme, which is optimized for performance, provides a solid foundation for users to build their own unique designs using the Elementor drag-and-drop site builder. Its simplicity and flexibility make it a great choice for both beginners and experienced Web Creators."
msgstr "Hello Elementor は、Elementor サイトビルダープラグインとシームレスに動作するように特別に構築された、軽量でミニマルな WordPress テーマです。このテーマは無料のオープンソースで、柔軟で使いやすく、カスタマイズ可能なサイトを求めるユーザー向けに設計されています。パフォーマンスが最適化されたテーマは、Elementor のドラッグアンドドロップサイトビルダーを使用してユーザーが独自のデザインを構築するための強固な基盤を提供します。そのシンプルさと柔軟性により、初心者にも経験豊富な Web クリエイターにも最適です。"
#. Theme Name of the theme
#: style.css
#, gp-priority: high
msgid "Hello Elementor"
msgstr "Hello Elementor"
#: includes/settings/settings-footer.php:600
#: includes/settings/settings-header.php:634
msgid "Elementor Pro"
msgstr "Elementor Pro"Hope it helps
Seeing your PO files isn’t useful I’m afraid. I need your file layout, and I need to install your theme and child theme.
However, if translations in your child theme work from the custom location then it sounds like my plugin is working.
If translations aren’t working from the system location, then it sounds like my plugin isn’t involved at all, as these are just loaded by WordPress. You should test that by disabling Loco Translate and seeing if the system translations start appearing again.
As a side note: I don’t know anything about Elementor, but it’s a name that crops up a lot when people report translations not showing. Perhaps it does something “clever” like cache translations in the database for customising them. (guessing).
Sorry @timwhitlock but I don’t understand what means “file layout”, could you explain a bit?
The way I use translations in my theme does not involve elementor at all.
I think the issue may be this one: https://core.trac.wordpress.org/ticket/62337
I tried the fix suggested here: https://core.trac.wordpress.org/ticket/62337#comment:19
it works.
It looks like
load_theme_textdomain
andload_child_theme_textdomain
need to be called beforeafter_setup_theme
, as I always did.And yes, your plugin is not involved in this issue, on the contrary, it helps working around it.
thanks again.
File layout means where all the relevant files are located and what they’re called.
I think the issue may be this one: https://core.trac.wordpress.org/ticket/62337
I saw that issue. I’m not sure I follow the problem exactly, but I know that WordPress effectively locks a text domain after it’s loaded until you explicitly load a new file into it (for example) after switching language. Under WP 6.7 that’s a problem, because
load_theme_textdomain
no longer loads anything. It just sets a custom path for user later on.Are you using a dynamic language switcher?
Seems like we’re typing at the same time.
I’ll mark as resolved for now.
I tried the fix suggested here: https://core.trac.wordpress.org/ticket/62337#comment:19
Just curious. I’m wondering if a call to unload_textdomain doesn’t do the same as those 7 lines of code in that fix.
I’m not using any multi language setup, no switcher. Just a localized webiste.
I’d like to try for you the unload_textdomain… but I’m not sure what I should try to unload…You said the fix works. It sets
$domain = 'our_theme_name_domain'
I’ve not tested it, but I was assuming
unload_textdomain($domain)
would do the same as all that code.This works:
add_action( 'init', 'xxx_theme_setup');
function xxx_theme_setup() {
global $l10n, $wp_textdomain_registry;
$domain = 'xxx_xxx';
$locale = get_locale();
$wp_textdomain_registry->set($domain, $locale, get_stylesheet_directory() . '/languages');
if ( isset( $l10n[ $domain ] )) {
unset( $l10n[ $domain ] );
}
load_child_theme_textdomain($domain, get_stylesheet_directory() . '/languages');
}This does NOT work:
add_action( 'init', 'xxx_theme_setup');
function xxx_theme_setup() {
$domain = 'xxx_xxx';
unload_textdomain($domain);
load_child_theme_textdomain($domain, get_stylesheet_directory() . '/languages');
}Trivia: looks like it all started here https://github.com/WordPress/gutenberg/issues/66547
-
This reply was modified 10 months, 3 weeks ago by
bluantinoo.
-
This reply was modified 10 months, 3 weeks ago by
- The topic ‘Wp 6.7 child theme lang works only in custom folder’ is closed to new replies.