WordPress 多語言支持(本地化)
本博客將介紹WordPress的多語言制作
首先需要在wp-content目錄下創建一個languages文件夾,用於存放語言包文件。
然後在模板目錄下的functions.php,然後在代碼中添加函數加載該文件夾,示例代碼如下:
add_action(‘after_setup_theme‘, ‘alanhou_setup‘); function alanhou_setup(){ load_theme_textdomain(‘alanhou‘, get_template_directory.‘/languages‘); }
上面代碼表示在主題加載時載入語言文件也就是/wp-content/languages/文件夾下的.mo文件。
load_theme_textdomain(主題本地化)
加載翻譯後的主題字符串。
如果本地主題根目錄下有一個.mo文件,該文件會被包括在$domain的被翻譯字符串中。
.mo文件必須根據本地設置命名。
<?php load_theme_textdomain( $domain, $path ) ?>
參數
- $domain
- (字符串)(必需)用以檢索被翻譯字符串的唯一標識符
- 默認值: None
- $path
- (未知)(可選)語言包 .mo 文件所在的目錄(沒有結尾的斜線)
- 默認值:false
返回的值
- (布爾)
- 如果 textdomain 可以正常加載,返回 TRUE ;反之返回 FALSE
關於多語言設置的兩種用法,一種是直接設置,另一種是通過點擊鏈接方式設置
方式一、
add_action(‘after_setup_theme‘, ‘my_theme_setup‘); function my_theme_setup(){ load_theme_textdomain(‘my_theme‘, get_template_directory() . ‘/languages‘); }
方式二、如果你希望通過 URL 中的參數來調用不同的語言,比如 www.example.com/?l=zh_CN 就調用 zh_CN.mo ,那你可以參考下面的例子:
// 更改本地語言 // 必須在 load_theme_textdomain() 的前面調用 add_filter( ‘locale‘, ‘my_theme_localized‘ ); function my_theme_localized($locale) { if (isset($_GET[‘l‘])) { return $_GET[‘l‘]; } return $locale; } // 設置主題語言路徑 // 語言包應該訪問 my_theme/languages/ 目錄 // Wordpress 自身語言包放在 wp-content/languages/ 目錄 load_theme_textdomain( ‘my_theme‘, TEMPLATEPATH . ‘/languages‘ );
WordPress是怎樣知道該讀取哪個語言文件呢?其實就是在它的wp-config.php文件中,
添加你的語言和語言環境代碼到define
。如果你想把你的主題翻譯成德語,你可以這樣做:
define(‘WPLANG‘, ‘de_DE‘);
怎麽運行的
當你通常制作一個主題的時候,你只需要簡單地對任何主題文本進行編碼,例如404.php文件中的404錯誤信息,或者諸如“comments:”或者“author:”之類的標簽。如果用戶的WordPress是德語,這些文本片段仍然會以英文顯示。解決這個問題的方法是使用四個WordPress函數之一來返回或回顯這些語句,這四個函數被設計為引用正確文本的語言文件。一旦將這些文本包裝在這些函數中,就可以創建一個文件,其中包含每次加載主題時引用的所有翻譯。有三個翻譯文件,我們使用:
- .pot (便攜式對象模板) - 這是模板文件,它包含對主題中需要翻譯的每個文本字符串的引用。這個文件不包含任何翻譯。這是一個明文文件。
- .po (便攜式對象) - 由.pot文件構成,.po包含所有的字符串引用以及它們對一種特定語言的翻譯。這也是一個可以編輯的純文本文件。
- .mo (Machine Object) - .po文件的二進制版本。通過使用機器代碼,文件的使用速度可以比其明文選擇更快。
POEdit是一個非常棒的程序,可以讓你創建你的.pot文件,還提供了一個簡單易用的圖形用戶界面,可以用來制作你的.po文件,更重要的是.mo文件。
首先,您需要下載POEdit,您可以在這裏找到Windows,Mac和Linux:http :
//www.poedit.net/download.php
一旦POEdit安裝完畢,你可以創建你的.pot文件。要做到這一點,去文件>新目錄。您將看到一個對話框,您需要輸入一些基本信息。
做完上面的步驟後不出意外你會在你的wordpress儀表盤後臺的Setting裏面選擇網站語言裏看到剛剛添加的語言,選上即可。
最後就是在你的代碼裏面用函數_e()包裹待翻譯詞條實現多語言了,
<?php _e( ‘No posts found‘ , ‘inthy.com‘ ) ; ?>
參考網站:https://jinwensay.wordpress.com/2009/12/02/make-your-wordpress-theme-translatable/
WordPress 多語言支持(本地化)