簡體   English   中英

沒有文本域的Wordpress主題的本地化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM