[分享] 我來拯救各位啦!徹底『多國語言修正』!!

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
Scorpion
竹貓好朋友
竹貓好朋友
文章: 104
註冊時間: 2001-11-23 18:17
聯繫:

文章 Scorpion »

NeoCosmo 寫: 明白了,明白了。
不過可以寄 html 格式的 email 嗎?要改哪裡?
我沒有研究 Email 的信件格式,不知道要如何修改成寄發 HTML 信件!

phpBB2 在 includes 目錄下有一個 emailer.php 是寄發 Email 的主程式,
應該要從這裡修改才是,或許 language 下的 email 目錄各檔案也要改成
HTML 格式才行!
NeoCosmo
星球普通子民
星球普通子民
文章: 23
註冊時間: 2003-04-15 20:46

文章 NeoCosmo »

Scorpion 寫: 我沒有研究 Email 的信件格式,不知道要如何修改成寄發 HTML 信件!

phpBB2 在 includes 目錄下有一個 emailer.php 是寄發 Email 的主程式,
應該要從這裡修改才是,或許 language 下的 email 目錄各檔案也要改成
HTML 格式才行!
謝謝,我再研究看看^^
TanisELF
竹貓好朋友
竹貓好朋友
文章: 15
註冊時間: 2002-03-07 02:47
來自: Taiwan
聯繫:

文章 TanisELF »

NeoCosmo 寫: 繁、簡中文可以用 ConvertZ

日文比較麻煩,因為我找不到日文轉 unicode 的程式。
我是用 IE + Qmacro 一個一個轉的。
我這邊是使用DreamweaverMX來做這個動作的,載入日文文件之後,先將文件編碼格式轉換為shift-jis(如此才能把日文字體顯示出來),之後直接到頁面屬性選單,設定語系為uft-8格式&儲存即可。其他編碼文件也是同樣的做法。雖然會比較麻煩,不過一定行得通。另外一種方法是使用EmEditor也可以做到相同的效果。

要注意的是,如果遇到轉為utf-8編碼後,造成使用該語系檔案時論壇出現can't add header infomation(或者類似)的錯誤訊息,那麼將該語系檔案重新使用Emeditor載入(此時應該會自動判斷為UTF-8格式),選擇另存新檔→在檔案儲存選單中將"加入unicode屬名-BOM"選項取消,儲存為原檔案名稱即可。

P.S可能要作業系統有支援unicode才行(如win2000/xp),太久沒使用win98了,不知會如何。
圖檔
:私...
:昇明彦2人好...
明彦:...\r
:、2人対気持少違。
:昇私初恋人。
:、明彦...
明彦:俺...
:私心癒安心人...
(Pia!!3)
TanisELF
竹貓好朋友
竹貓好朋友
文章: 15
註冊時間: 2002-03-07 02:47
來自: Taiwan
聯繫:

文章 TanisELF »

補充一下,就小弟的經驗,論壇使用unicode編碼還有嚴重的問題,就是搜索中文字的功能會混亂掉@@,以2.0.4來說,搜索"中文字"出來的結果每次都是好幾百筆無相關的資料(確定該筆中文資料僅有70幾筆而已),而且hightlight也是失效的。

後來參考過去phpbb2 2.0.0時代的中文搜索修改search.php來做修正才解決無法搜索中文的問題,然而而且hightlight失效問題依舊。

但搜索其他國語系(如簡体、日文)反而一切正常,hightlight也正常,就只有中文會出問題@@
圖檔
:私...
:昇明彦2人好...
明彦:...\r
:、2人対気持少違。
:昇私初恋人。
:、明彦...
明彦:俺...
:私心癒安心人...
(Pia!!3)
頭像
ajoh
星球普通子民
星球普通子民
文章: 3
註冊時間: 2003-04-23 15:17
來自: the corners of the earth

文章 ajoh »

Scorpion 寫:
NeoCosmo 寫: 明白了,明白了。
不過可以寄 html 格式的 email 嗎?要改哪裡?
我沒有研究 Email 的信件格式,不知道要如何修改成寄發 HTML 信件!

phpBB2 在 includes 目錄下有一個 emailer.php 是寄發 Email 的主程式,
應該要從這裡修改才是,或許 language 下的 email 目錄各檔案也要改成
HTML 格式才行!
** Outlook Express **
開新郵件時 -檢視-來源編輯(選定)
然後在狀態列之上會出現”編輯””原始檔””預覽”三個標籤\r
點選”原始檔”便可看見html

不知道這是不是你要的
覺得PHPbb做成的論談區很好玩...
偶然晃到這裏, 請多指教
laurence
星球公民
星球公民
文章: 37
註冊時間: 2003-02-05 17:42

文章 laurence »

Netan 寫:** Outlook Express **
開新郵件時 -檢視-來源編輯(選定)
然後在狀態列之上會出現”編輯””原始檔””預覽”三個標籤\r
點選”原始檔”便可看見html

不知道這是不是你要的
我用 Outlook Express 6.0, 可是並沒發現上述的選項耶 :?:
頭像
ajoh
星球普通子民
星球普通子民
文章: 3
註冊時間: 2003-04-23 15:17
來自: the corners of the earth

文章 ajoh »

我用 Outlook Express 6.0, 可是並沒發現上述的選項耶 :?:
好巧, 我也是\r
有開新郵件??
覺得PHPbb做成的論談區很好玩...
偶然晃到這裏, 請多指教
owenlin
星球普通子民
星球普通子民
文章: 2
註冊時間: 2003-04-27 16:11

文章 owenlin »

TanisELF 寫:
NeoCosmo 寫: 繁、簡中文可以用 ConvertZ

日文比較麻煩,因為我找不到日文轉 unicode 的程式。
我是用 IE + Qmacro 一個一個轉的。
我這邊是使用DreamweaverMX來做這個動作的,載入日文文件之後,先將文件編碼格式轉換為shift-jis(如此才能把日文字體顯示出來),之後直接到頁面屬性選單,設定語系為uft-8格式&儲存即可。其他編碼文件也是同樣的做法。雖然會比較麻煩,不過一定行得通。另外一種方法是使用EmEditor也可以做到相同的效果。

要注意的是,如果遇到轉為utf-8編碼後,造成使用該語系檔案時論壇出現can't add header infomation(或者類似)的錯誤訊息,那麼將該語系檔案重新使用Emeditor載入(此時應該會自動判斷為UTF-8格式),選擇另存新檔→在檔案儲存選單中將"加入unicode屬名-BOM"選項取消,儲存為原檔案名稱即可。

P.S可能要作業系統有支援unicode才行(如win2000/xp),太久沒使用win98了,不知會如何。
Hello,

我寫了一支小程式來轉換其它語系到unicode,
目前,這個程式已經成功的轉換了,
正體中文,簡體中文,日文,以及法文的語系檔,
所有java有支援的語言,應該都可以正確的轉換。

以正體中文為例:
使用方式如下:

執行 java Transcoder big5 utf-8 lang_chinese_traditional
一個指令就可以轉換完成了。

它的原理是

1. 將在[ lang_chinese_traditional ] 目錄下,所有的 big5 取代為 utf-8
2. 將每個檔案的內容改為以 utf-8 的格式 存回原檔案中。

代碼: 選擇全部


import java.io.*;
import java.nio.charset.*;
import java.util.*;
                                                                                
public class Transcoder {
    private String fromCode, toCode;
                                                                                
    public Transcoder(String fromCode, String toCode){
        if(!Charset.isSupported(fromCode))  throw new UnsupportedCharsetException(fromCode);
        if(!Charset.isSupported(toCode))  throw new UnsupportedCharsetException(toCode);
        this.fromCode = fromCode;
        this.toCode = toCode;
    }
                                                                                
    public void transcode(File file){
        try{
            System.out.println("processing file: " + file + "...");
            if(file.isFile()){
                System.out.print("processing file: " + file + "...");
                FileInputStream fis = new FileInputStream(file);
                int current = 0, total = (int) file.length(), step;
                byte buf[] = new byte[total];
                while((step = fis.read(buf, current, total - current)) > 0)
                    current += step;
                fis.close();
                                                                                
                BufferedReader reader = new BufferedReader( new InputStreamReader(
                        new ByteArrayInputStream(buf), fromCode));                                                                                
                PrintWriter writer = new PrintWriter( new OutputStreamWriter(
                        new FileOutputStream(file), toCode));
                 String line;                                                                                
                while((line = reader.readLine())!=null){
                    line = line.replaceAll(fromCode, toCode);//把這行mark就可以來轉sql檔了
                    writer.println(line);
                }
                reader.close();  writer.close();
            }else {
                File files[] = file.listFiles();
                for(int i=0;i<files.length;++i) transcode(files[i]);
            }
            System.out.println("successful");                                                                                
        }catch(Exception e){
            System.out.println("fail");
            e.printStackTrace();
        }
    }
                                                                                
    public static void main(String argv[]) throws Exception{
        if(argv.length < 3){
            System.err.println("usage: fromCode toCode filename");
            System.exit(-1);
        }                                                                                
        Transcoder transer = new Transcoder(argv[0], argv[1]);
        transer.transcode(new File(argv[2]));
    }
}
                                                                               
sakamoto
版面管理員
版面管理員
文章: 350
註冊時間: 2003-02-13 17:36
來自: scratch
聯繫:

文章 sakamoto »

我將繁中 日文 英文的語系檔都轉成utf-8了....好像沒有什麼問題........希望大家可以幫我看看......

http://airpowerstyle.myvnc.com/phpbb1/
NeoCosmo
星球普通子民
星球普通子民
文章: 23
註冊時間: 2003-04-15 20:46

文章 NeoCosmo »

owenlin 寫: Hello,

我寫了一支小程式來轉換其它語系到unicode,
目前,這個程式已經成功的轉換了,
正體中文,簡體中文,日文,以及法文的語系檔,
所有java有支援的語言,應該都可以正確的轉換。

以正體中文為例:
使用方式如下:

執行 java Transcoder big5 utf-8 lang_chinese_traditional
一個指令就可以轉換完成了。

它的原理是

1. 將在[ lang_chinese_traditional ] 目錄下,所有的 big5 取代為 utf-8
2. 將每個檔案的內容改為以 utf-8 的格式 存回原檔案中。

代碼: 選擇全部


import java.io.*;
import java.nio.charset.*;
import java.util.*;
                                                                                
public class Transcoder {
    private String fromCode, toCode;
                                                                                
    public Transcoder(String fromCode, String toCode){
        if(!Charset.isSupported(fromCode))  throw new UnsupportedCharsetException(fromCode);
        if(!Charset.isSupported(toCode))  throw new UnsupportedCharsetException(toCode);
        this.fromCode = fromCode;
        this.toCode = toCode;
    }
                                                                                
    public void transcode(File file){
        try{
            System.out.println("processing file: " + file + "...");
            if(file.isFile()){
                System.out.print("processing file: " + file + "...");
                FileInputStream fis = new FileInputStream(file);
                int current = 0, total = (int) file.length(), step;
                byte buf[] = new byte[total];
                while((step = fis.read(buf, current, total - current)) > 0)
                    current += step;
                fis.close();
                                                                                
                BufferedReader reader = new BufferedReader( new InputStreamReader(
                        new ByteArrayInputStream(buf), fromCode));                                                                                
                PrintWriter writer = new PrintWriter( new OutputStreamWriter(
                        new FileOutputStream(file), toCode));
                 String line;                                                                                
                while((line = reader.readLine())!=null){
                    line = line.replaceAll(fromCode, toCode);//把這行mark就可以來轉sql檔了
                    writer.println(line);
                }
                reader.close();  writer.close();
            }else {
                File files[] = file.listFiles();
                for(int i=0;i<files.length;++i) transcode(files[i]);
            }
            System.out.println("successful");                                                                                
        }catch(Exception e){
            System.out.println("fail");
            e.printStackTrace();
        }
    }
                                                                                
    public static void main(String argv[]) throws Exception{
        if(argv.length < 3){
            System.err.println("usage: fromCode toCode filename");
            System.exit(-1);
        }                                                                                
        Transcoder transer = new Transcoder(argv[0], argv[1]);
        transer.transcode(new File(argv[2]));
    }
}
                                                                               

請問這個程式的使用方法可否再說明一下。

因為我不太懂 JAVA...
owenlin
星球普通子民
星球普通子民
文章: 2
註冊時間: 2003-04-27 16:11

文章 owenlin »

NeoCosmo 寫:
請問這個程式的使用方法可否再說明一下。

因為我不太懂 JAVA...
我以韓文為例來說明好了,
在我的系統上phpBB2是裝在 /home/httpd/phpBB2
所以韓文的路徑就是/home/httpd/phpBB2/language/lang_korean

1. 首先,先將韓文的package依正常方式安裝。

2. download這個檔案將檔名存為 Transcoder.java (一定要一模一樣)

3. 以下列指令 compile java:
java_home\bin\javac Transcoder.java
java_home 為你安裝java的路徑。

4. 看看 lang_korean 是什麼編碼的。(euc-kr)
可以去看 lang_korean/email下的檔,第一行都有寫。

5. 執行程式
java_home\bin\java Transcoder euc-kr utf-8 /home/httpd/phpBB2/language/lang_korean
要注意的是,要確定你當時有權限可以寫入 phpBB2 的目錄。

6. 驗收成果。
Sleepy
星球普通子民
星球普通子民
文章: 6
註冊時間: 2003-05-02 11:37
來自: 台北
聯繫:

文章 Sleepy »

請問 一下,你們說的將檔案轉成utf-8,
是把lang_chinese_traditional 裡面的「每一個檔案」都轉嗎?
(我是拿繁體中文來舉例啦)
還是只有某幾個檔案呢?
謝謝!
還有之前有人提到說這樣轉的話,「搜尋」中文時會有問題,
那這個問題有解決了嗎?
謝謝^_^!
Sleepy
星球普通子民
星球普通子民
文章: 6
註冊時間: 2003-05-02 11:37
來自: 台北
聯繫:

文章 Sleepy »

Hello,

我寫了一支小程式來轉換其它語系到unicode,
目前,這個程式已經成功的轉換了,
正體中文,簡體中文,日文,以及法文的語系檔,
所有java有支援的語言,應該都可以正確的轉換。

以正體中文為例:
使用方式如下:

執行 java Transcoder big5 utf-8 lang_chinese_traditional
一個指令就可以轉換完成了。

它的原理是

1. 將在[ lang_chinese_traditional ] 目錄下,所有的 big5 取代為 utf-8
2. 將每個檔案的內容改為以 utf-8 的格式 存回原檔案中。
請問第一步是什麼意思呢?
要將哪裡的big5取代為utf-8呢?
謝謝^_^!
頭像
shihchieh
竹貓忠實會員
竹貓忠實會員
文章: 509
註冊時間: 2002-10-07 13:02

文章 shihchieh »

Sleepy 寫:請問 一下,你們說的將檔案轉成utf-8,
是把lang_chinese_traditional 裡面的「每一個檔案」都轉嗎?
(我是拿繁體中文來舉例啦)
還是只有某幾個檔案呢?
謝謝!
還有之前有人提到說這樣轉的話,「搜尋」中文時會有問題,
那這個問題有解決了嗎?
謝謝^_^!
語系檔使用非utf-8的都要轉 並且在lang_main.php中要設定utf-8
不然一樣會乩碼, 另外次層目錄email下的所有tbl檔內的編碼也要先改為utf-8
然後再編碼,這樣寄出去的信才不會是乩碼(目前我的站採用utf-8,發信都正常)
另外有關html要設定的部份請往上詳閱,
搜尋試過,沒什麼問題,重要的問題是在資料庫轉碼,如果有機會要作轉碼你就會知道了,資料庫是重點~!!
---
Do you fear death ?
mch
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-20 23:13
來自: HK
聯繫:

文章 mch »

即是話
如果把所有檔案轉換成Unicode
那麼用瀏覽器瀏覽的時候 [編碼] 選 Unicode
就會看到所有 法文, 英文, 日文, big5, GB ??

用不用把所有phpbb 檔案都轉?
或只是轉換 語系檔(language) ?
megachamber - mch's blog
主題已鎖定

回到「phpBB 2 安裝與使用」