package icutest; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import com.ibm.icu.text.Transliterator; public class TestICU { public static void main(String args[]) { // 使用可能なIDリストを標準出力。 // printAvailableIDs(); // 単体変換のサンプル。 // String src = "おううち"; // String src2 = "sendai-shi"; // transliteratorTest(src); // transliteratorTest(src2); // 外部ファイルを変換元として、一括して変換し標準出力する。 String id = "Latin-Hiragana"; transCityNames(id); } /** * goenamesのJPをDLしたものの3カラム目を抜いたテキストをインプットとして、 * 引数のIDで変換して標準出力に出力。 * */ private static final void transCityNames(String id) { try { File file = new File("./resources/icu/cityname.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); String str; while ((str = br.readLine()) != null) { //System.out.println(str); testTransliterator(str, id); } br.close(); } catch (FileNotFoundException e) { System.out.println(e); } catch (IOException e) { System.out.println(e); } } /** * 変換元の文字列、IDを引数として、IDで変換した値を標準出力。 * */ private static final void testTransliterator(String src, String id) { Transliterator tr1 = Transliterator.getInstance(id); System.out.println(src + "→(" + id + ")→" + tr1.transliterate(src)); } /** * 気になるIDを適当に指定して入力値をIDをもとに変換し標準出力。w * */ private static final void test(String src) { Transliterator tr1 = Transliterator.getInstance("JapaneseKana-Latin/BGN"); System.out.println(src + "→(JapaneseKana-Latin/BGN)→" + tr1.transliterate(src)); Transliterator tr2 = Transliterator.getInstance("Hiragana-Latin"); System.out.println(src + "→(Hiragana-Latin)→" + tr2.transliterate(src)); Transliterator tr3 = Transliterator.getInstance("ja_Latn-ko"); System.out.println(src + "→(ja_Latn-ko)→" + tr3.transliterate(src)); Transliterator tr4 = Transliterator.getInstance("ja_Latn-ru"); System.out.println(src + "→(ja_Latn-ru)→" + tr4.transliterate(src)); Transliterator tr5 = Transliterator.getInstance("Any-katakana"); System.out.println(src + "→(Any-katakana)→" + tr5.transliterate(src)); } /** * 使用可能なa system transliterator IDを標準出力に出力。 * */ private static final void printAvailableIDs() { Enumeration e = Transliterator.getAvailableIDs(); String tmp = ""; while (e.hasMoreElements()) { System.out.println(e.nextElement().toString()); } } /** * 使用可能なIDを使用して、入力と出力が異なるIDの場合に変換値を出力。 * */ private static final void transliteratorTest(String src) { Enumeration e = Transliterator.getAvailableIDs(); String id = ""; String tmp = ""; while (e.hasMoreElements()) { id = e.nextElement().toString(); Transliterator tr = Transliterator.getInstance(id); tmp = tr.transliterate(src); if (!src.contentEquals(tmp)) { System.out.println(src + "→(" + id + ")→" + tmp); } } } }