momoC 寫:另外,在系統後台左欄的管理區那些無法中文化的連結,原來就在這套外掛加到 /admin 資料夾的每支程式最上面神奇的幾行程式,如:
代碼: 選擇全部
if( !empty($setmodules) )
{
$file = basename(__FILE__);
$module['IM_Portal']['Blocks Variables'] = "$file";
return;
}
那個 [Blocks Variables],就是顯示在後台管理的連結名稱。我只要在 lang_main.php 裡加個 $lang,然後譯成中文就好了。最讓我奇怪的是 php 怎麼知道這就是顯示在左欄的連結功能
phpBB 的後台管理預設是自動載入所有以admin_開頭且以$phpEx所指定的後綴名為結尾的檔案, 並將這些視為左方的功能表列
這個可以從admin/index.php裡的這段程式碼得知\r
//
// Generate relevant output
//
if( isset($HTTP_GET_VARS['pane']) && $HTTP_GET_VARS['pane'] == 'left' )
{
$dir = @opendir(".");
$setmodules = 1;
while( $file = @readdir($dir) )
{
if( preg_match("/^admin_.*?\." . $phpEx . "$/", $file) )
{
include($file);
}
}
@closedir($dir);
momoC 寫:為什麼我在 lang_main.php 裡隨便加一下,它就知道新加的是它的中文譯名?
其實主要還是要視檔案裡這段的寫法而定
代碼: 選擇全部
$module['IM_Portal']['Blocks Variables'] = "$file";
其中的['IM_Portal']是用來區分這個功能表要出現的分區位置\r
假設你將它改成['Forums'], 則它就會出現在後台「版面管理」分區底下
同理, 若是改成['Groups'], 則會出現在「群組管理」的分區下
至於後頭的['Blocks Variables']則可視為這個模組在後台要顯示的選項名稱之變數名稱\r
如果在lang_main.php 或lang_admin.php裡找不到這個變數名稱, 則會以此處所設定的變數名稱來代替, 並將變數名稱裡的_代換成空格\r
例如變數名稱為['Blocks_Variables']好了, 若是語系裡找不到這個變數名稱的話\r
則會自動以Blocks Variables當作後台的選項名稱來顯示
一般而言, 絕大部份模組的作者都是國外居多
因此在這個顯示名稱的設定上相對的就不是那麼在意
所以有時候安裝完外掛, 後台選單會是英文而非中文的主要原因就是在此
ps.
code裡不能用bbcode代碼有點痛苦