2010-07-28 27 views
1

我有一個沒有textdomain的wordpress主題(即e(x)而不是e(x,domain))。我還在/ themes/My Theme/localization下的文件夾中有.po和.mo文件(請注意我的主題中的空格名稱)。我想激活fr_FR。我創建了fr_FR.po和.mo,並更改了wp-config以添加fr_FR的語言環境。但是,我仍然沒有法語工作。我看到很多網站告訴你在functions.php的頂部添加一個load_theme_textdomain,但我不知道我的textdomain會是什麼。任何幫助將不勝感激。沒有textdomain的wordpress主題的本地化

優素福

回答

6

爲了獲得主題本地化工作,你將需要經過你的主題和域添加到每個_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); 

你可以閱讀更多關於它in this post

+0

我真的很感謝你的答案。在按照您推薦的方式進行操作之前,我想聽取其他社羣的意見,以確認沒有簡單的方法。 :( – semyou 2010-07-28 03:19:05

+0

我嘗試了你的建議,但沒有成功!任何想法? – semyou 2010-07-28 04:53:44

+0

@ user404057你還需要實際翻譯po文件閱讀:http://codex.wordpress.org/Translating_WordPress – 2013-10-20 02:36:55

5

添加您自己的文本域。最近我做了一個不是爲本地化設計的主題,所以我發佈了我所做的。

添加這的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');

如果您見"some text"沒有__()_e()那麼,

如果"some text"是你SED在函數調用,然後使它__()像上面,包括任何函數調用的文本域

如果"some text"只是打印,而不是部分,具有_e()如上所示surrround它,不要忘了文字域。

閱讀Wordpress internationalization and localization guide瞭解更多信息。

+0

我知道這是一個古老的問題,但我覺得這應該回答,考慮到我經歷的麻煩找到這個:| – 2011-04-20 13:06:46

0

經過一段令人難以置信的論壇經歷了一切正常工作時如何設置它的相同步驟後,我終於找到了什麼導致我的問題。

如果服務器在wordpress有bash之前設置全局$locale,則wordpress使用服務器的區域設置(在wp-includes/l10n.php文件中,功能get_locale)。

我使用的解決方案,是旁邊設置全局$語言環境來確定WPLANG ...

global $locale; 
$locale = 'am_AM'; 
define('WPLANG', $locale);