![](/img/trans.png)
[英]load_theme_textdomain using wordpress theme child not working with me
[英]Localization of a wordpress theme without a textdomain
我有一個沒有textdomain(即e(x)而不是e(x,domain))的wordpress主題。 我在/ themes / My Theme / localization下的文件夾中也有.po和.mo文件(請注意my主題中的空間名稱)。 我想激活fr_FR。 我創建了fr_FR.po和.mo並更改了wp-config以添加fr_FR的語言環境。 但是,我仍然無法讓法語工作。 我看到許多站點告訴您在functions.php的頂部添加一個load_theme_textdomain,但是我不知道我的textdomain是什么。 任何幫助將不勝感激。
優素福
要使主題本地化正常工作,您將需要遍歷主題並將域添加到每個_e()
和__()
函數調用中。 這個:
_e('some text');
__('some other text');
將必須成為這樣:
_e('some text', 'your-domain');
__('some other text', 'your-domain');
接下來,您需要在functions.php文件頂部添加以下代碼:
load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/localization' );
$locale = get_locale();
$locale_file = TEMPLATEPATH."/localization/$locale.php";
if (is_readable($locale_file))
require_once($locale_file);
添加您自己的文本域。 我最近是針對非本地化設計的主題進行此操作的,因此我將發布我所做的事情。
將此添加到functions.php
load_theme_textdomain( 'your-domain', TEMPLATEPATH.'/languages' );
your-domain
可以是任何名稱,但在所有主題文件中都應保持統一。
現在瀏覽所有主題PHP文件,並執行以下操作:
如果看到_e('some text')
則將其更改為_e('some text', 'your-domain');
如果看到__('some text')
則將其更改為__('some text', 'your-domain');
如果您看到不帶__()
或_e()
"some text"
,
如果在函數調用中使用"some text"
,則使其與上面的__()
一樣,包括文本域
如果僅打印了"some text"
而不是任何函數調用的一部分,請使用_e()
其包圍,如上所示,不要忘記文本域。
閱讀Wordpress國際化和本地化指南以獲取更多信息。
經過一連串令人難以置信的論壇,經歷了一切正常運行時如何進行設置的相同步驟,我終於找到了引起我問題的原因。
如果服務器在wordpress受到重擊之前設置了全局$locale
,則wordpress將使用服務器的語言環境設置(在wp-includes/l10n.php
文件中,函數get_locale
)。
我使用的解決方案是在定義WPLANG
旁邊設置全局$ locale。
global $locale;
$locale = 'am_AM';
define('WPLANG', $locale);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.