/// <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;
            }
Exemple #2
0
 /// <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);
                        }
                    }
                }
            }