/// <summary> /// VOCALOID2システムが使用する辞書を読み込みます。 /// </summary> public static void loadSystemDictionaries() { if (mInitialized) { return; } // 辞書フォルダからの読込み string editor_path = VocaloSysUtil.getEditorPath(SynthesizerType.VOCALOID2); if (editor_path != "") { string path = Path.Combine(PortUtil.getDirectoryName(editor_path), "UDIC"); if (!Directory.Exists(path)) { return; } string[] files = PortUtil.listFiles(path, "*.udc"); for (int i = 0; i < files.Length; i++) { files[i] = PortUtil.getFileName(files[i]); string dict = Path.Combine(path, files[i]); mTable.Add(new SymbolTable(dict, true, false, "Shift_JIS")); } } mInitialized = true; }
/// <summary> /// 指定されたディレクトリにある言語設定ファイルを全て読込み、メッセージリストに追加します /// </summary> /// <param name="directory"></param> public static void loadMessages(string directory) { s_messages.Clear(); string[] files = PortUtil.listFiles(directory, ".po"); for (int i = 0; i < files.Length; i++) { string name = PortUtil.getFileName(files[i]); string fname = Path.Combine(directory, name); appendFromFile(fname); } }
/// <summary> /// 指定したディレクトリにある拡張辞書ファイル(拡張子*.eudc)を全て読み込みます /// </summary> /// <param name="directory"></param> public static void loadAllDictionaries(string directory) { // 起動ディレクトリ if (Directory.Exists(directory)) { string[] files2 = PortUtil.listFiles(directory, "*.eudc"); for (int i = 0; i < files2.Length; i++) { files2[i] = PortUtil.getFileName(files2[i]); string dict = Path.Combine(directory, files2[i]); mTable.Add(new SymbolTable(dict, true, false, "UTF-8")); } } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="path">読み込む辞書ファイルのパス</param> /// <param name="is_udc_mode">VOCALOID2仕様の辞書ファイルかどうか</param> /// <param name="enabled">辞書ファイルを有効とするかどうか</param> /// <param name="encoding">辞書ファイルのテキストエンコーディング</param> public SymbolTable(string path, bool is_udc_mode, bool enabled, string encoding) { mDict = new SortedDictionary <string, SymbolTableEntry>(); mEnabled = enabled; if (!System.IO.File.Exists(path)) { return; } mName = PortUtil.getFileName(path); StreamReader sr = null; try { sr = new StreamReader(path, Encoding.GetEncoding(encoding)); if (sr == null) { return; } string line; while ((line = sr.ReadLine()) != null) { if (line.StartsWith("//")) { continue; } string key = ""; string word = ""; string symbol = ""; if (is_udc_mode) { string[] spl = PortUtil.splitString(line, new string[] { "\t" }, 2, true); if (spl.Length >= 2) { key = spl[0].ToLower(); word = key; symbol = spl[1]; } } else { string[] spl = PortUtil.splitString(line, new string[] { "\t\t" }, 2, true); if (spl.Length >= 2) { string[] spl_word = PortUtil.splitString(spl[0], '\t'); mMaxDivisions = Math.Max(spl_word.Length, mMaxDivisions); key = spl[0].Replace("-\t", ""); word = spl[0]; symbol = spl[1]; } } if (!key.Equals("")) { if (!mDict.ContainsKey(key)) { mDict[key] = new SymbolTableEntry(word, symbol); } } } } catch (Exception ex) { serr.println("SymbolTable#.ctor; ex=" + ex); } finally { if (sr != null) { try { sr.Close(); } catch (Exception ex2) { serr.println("SymbolTable#.ctor; ex=" + ex2); } } } }