1 頁 (共 5 頁)

[教學]多國語言完全修正 (phpBB 2.0.2)

發表於 : 2002-07-07 02:13
Scorpion
這是以 phpBB 2.0.1 為修改底本,行數只是參考用的,可能有些不同,位置差不
多都在所標示的附近。

能看到的問題都修正了,包含發表內容、標題,預覽內容、標題,投票議題、選\r
項,私人訊息....等等。

懶得修改、或修改後有問題的,直接下載我修正過的檔案覆蓋

給 phpBB 2.0.2 用的
http://it.hihosting.hinet.net/dl/phpBB202_multilang.zip

給 phpBB 2.0.1 用的
http://it.hihosting.hinet.net/dl/phpBB201_multilang.zip

給 phpBB 2.0.0 用的
http://it.hihosting.hinet.net/dl/phpBB200_multilang.zip


以上修正檔只適用於全新安裝的 phpBB 、沒有加過任何 mods,或所加的 mods
沒有動到裡面提到的三個檔案。

除此之外,都必須手動照以下的方式修改,2.0.0 版同樣適用這個修改法,每一
個行數後面括號裡面標示的是 2.0.0 的行數。

functions_post.php

發表後文章內容 (包含預覽內容)

28 行 (2.0.0 38 行)

代碼: 選擇全部

$html_entities_match = array('#&#', '#<#', '#>#');
$html_entities_replace = array('&', '<', '>');
改為\r

代碼: 選擇全部

$html_entities_match = array('#<#', '#>#');
$html_entities_replace = array('<', '>');
發表後文章標題

149 行 (2.0.0 166 行)

代碼: 選擇全部

if ( !empty($subject) )
{
	$subject = htmlspecialchars(trim($subject));
}
改為\r

代碼: 選擇全部

if ( !empty($subject) )
{
	$subject = htmlspecialchars(trim($subject));
	$subject = ereg_replace("&","&",$subject);
}
發表後投票議題 (question)

177 行 ( 2.0.0 194 行)

代碼: 選擇全部

if ( !empty($poll_title) )
{
	$poll_title = htmlspecialchars(trim($poll_title));
}
改為\r

代碼: 選擇全部

if ( !empty($poll_title) )
{
	$poll_title = htmlspecialchars(trim($poll_title));
	$poll_title = ereg_replace("&","&",$poll_title);
}
posting.php

預覽的標題、預覽後輸入框文章內容及標題、投票議題

601 行 (2.0.0 587 行)

代碼: 選擇全部

$poll_options = array();
這行前面加上

代碼: 選擇全部

$subject = ereg_replace("&","&",$subject);
$message = ereg_replace("&","&",$message);
$poll_title = ereg_replace("&","&",$poll_title);
預覽之後的投票選項 (option)、增加選項之後的舊選項、更新選項

614 行 (2.0.0 600 行)

代碼: 選擇全部

else if ( !empty($option_text) ) 
{
	$poll_options[$option_id] = htmlspecialchars(trim(stripslashes($option_text)));
}
改為\r

代碼: 選擇全部

else if ( !empty($option_text) ) 
{
	$poll_options[$option_id] = htmlspecialchars(trim(stripslashes($option_text)));
	$poll_options[$option_id] = ereg_replace("&","&",$poll_options[$option_id]);
}
投票新增選項之後的新選項

622 行 (2.0.0 608 行)

代碼: 選擇全部

if ( isset($poll_add) && !empty($HTTP_POST_VARS['add_poll_option_text']) )
{
	$poll_options[] = htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['add_poll_option_text'])));
}
改為\r

代碼: 選擇全部

if ( isset($poll_add) && !empty($HTTP_POST_VARS['add_poll_option_text']) )
{
	$poll_options[] = ereg_replace("&","&",htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['add_poll_option_text']))));
}
私人訊息方面\r

privmsg.php

38 行 (2.0.0 38 行)

代碼: 選擇全部

$html_entities_match = array('#&#', '#<#', '#>#');
$html_entities_replace = array('&', '<', '>');
改為\r

代碼: 選擇全部

$html_entities_match = array('#<#', '#>#');
$html_entities_replace = array('<', '>');

發表於 : 2002-07-07 02:14
frank
2.0.0通用嗎??.......
我一直都沒成功過 ....嘿嘿 `

發表於 : 2002-07-07 02:24
Scorpion
不知道,你試試看,2.0.0 與 2.0.1 程式碼改了很多,但是牽涉到多國語言部份這方面沒什
麼變動,應該通用。

發表於 : 2002-07-07 13:04
澳門男孩
報告大大
還是有問題
剛測試了一下
問題仍然存在\r
http://phpbb-tw.net/phpbb/viewtopic.php?t=7963
請看一下吧\r
我是架phpbb2 2.0.0 gold

發表於 : 2002-07-07 13:51
Scorpion
應該不會有問題才對,好吧,我看一下 2.0.0!

對了,提醒一下,若是你已經使用「精華區」裡面的修改法,請改回原始的檔案,
或拿原版的檔案覆蓋回去再來重新修改,因為我的方法與精華區那篇有些差異,
但是殊途同歸,原理都是一樣的。

還有若是所加的 mod 有動到那些檔案,要注意一下。

發表於 : 2002-07-07 14:22
godbless
澳門男孩 寫:報告大大
還是有問題
剛測試了一下
問題仍然存在\r
http://phpbb-tw.net/phpbb/viewtopic.php?t=7963
請看一下吧\r
我是架phpbb2 2.0.0 gold
這個不是弄2.0.1的嗎
版本不對喔 !

發表於 : 2002-07-07 16:31
Scorpion
我已經看過 2.0.0 了,要修改的程式碼都一樣,這個 2.0.1 的修改法同樣適用 2.0.0,只是\r
行數稍微不同。

另外,OOO 的那篇修改文章,並沒有修正到預覽的標題及投票部份,所以除了這兩個地方\r
之外,其他應該都正常,但是為什麼那麼多人都有問題?例如發表之後的標題、預覽之後
訊息輸入框的標題及內容,還是一樣不能正常顯示。

經過仔細看過那篇文章之後,我知道問題出在哪裡,基本的修改原理都對,但是張貼出來
之後,phpBB 把一些程式碼解譯掉了,造成修改無效,亦即有改等於沒改。

例如:

代碼: 選擇全部

$subject = htmlspecialchars(trim($subject)); 
改成

代碼: 選擇全部

$subject = ereg_replace('&#', '&#', htmlspecialchars(trim($subject)));
應該是改成下面這樣才對

代碼: 選擇全部

$subject = ereg_replace('&#', '&#', htmlspecialchars(trim($subject)));
比較一下不同處 & 不是 &

*********

奇怪,記得當初在 OOO 那篇主題討論時,看到那篇修改文章都是正確的,有特別處理過
特殊的字串 [&] ,怎麼現在再看一次,又變樣了,是我記錯了還是其他原因。

發表於 : 2002-07-07 16:47
Scorpion

代碼: 選擇全部

奇怪,記得當初在 OOO 那篇主題討論時,看到那篇修改文章都是正確的,有特別處理過 
特殊的字串 [&] ,怎麼現在再看一次,又變樣了,是我記錯了還是其他原因。
呵呵,我剛剛想要固定這個主題,找到原因了,以 OOO 對多國語言解決辦法的了解,不會
犯這個錯誤,我沒有記錯啦,是因為那個主題被固定之後造成的。

因為 phpBB 在主題討論串內沒有「置頂」的選項,必須以編輯主題文章的方式為\r
之,而重新編輯文章時,phpBB 沒有將那些特殊字串轉回原始的內容,以致編輯\r
之後,又被解譯一次,造成程式碼的錯誤。

有人知道我在說什麼嗎?不懂沒關係,算我自言自語 :)

發表於 : 2002-07-07 20:02
WWWW
Scorpion ,

你這篇很好 , 解決了我好多疑問 !!
連 Title & Pool 也解決了
~ 謝謝你 ~ ;)

發表於 : 2002-07-08 11:53
Rabbit
顯示是正常,可是好像有字數限制,我打長一點

預覽時也看得到,但真的送出後,

後面的就顯示不出來了,大家有這種情形嗎???

發表於 : 2002-07-08 13:50
Scorpion
你說的是標題對吧?!

因為非 Big5 碼的文字,如日文、簡體字都以多國語言的方式呈現,一個字實際佔用 8 個字
元,phpBB2 預設的標題長度上限是 60 字元,Big5 中文可以 30 個字,如果標題都是日文
或簡體字,最多只能 7 個字。

發表於 : 2002-07-08 13:56
Rabbit
:-o 那是不是可以更改預設值來解決呢?

發表於 : 2002-07-08 14:14
Scorpion
要分兩方面來改,一個是程式方面的限制,一個是資料表的限制

程式方面\r
posting_body.tpl 找 maxlength="60" 字串修改\r

資料表就要用 PhpMyAdmin 來修改:

phpbb_topics 找 topic_title 欄位修改,這是主題列表的標題
phpbb_posts_text 找 post_subject 欄位修改,這是每篇文章的標題

我沒試過,你自行踹踹看,可以的話回報一下,親愛的小白鼠 :)

發表於 : 2002-07-08 18:24
Rabbit
照您所指示的去改,果然成功了,解決我長久

煩惱的問題,謝謝Scorpion!!! :-D

發表於 : 2002-07-19 09:38
伯勞鳥
THANKS