/// <summary> /// 言語エントリーを追加する。 /// </summary> /// <param name="langEntry">言語エントリー</param> public void AddEntry(PfkLanguageEntry langEntry) { if (this.Items.ContainsKey(langEntry.Key)) { throw new Exception($"Duplicate key({langEntry.Key}). FileID({this.FileID})"); } else { this.Items.Add(langEntry.Key, langEntry); } }
/// <summary> /// 言語ファイルを追加する。 /// </summary> /// <param name="newSheetFile">言語ファイル</param> public void AddFile(PfkLanguageFile newSheetFile) { if (this.Items.ContainsKey(newSheetFile.FileID)) { //// すでに登録済みの場合は、言語エントリーを追加する。 var currentSheetFile = this.Items[newSheetFile.FileID]; foreach (var newEntry in newSheetFile.Items.Values) { var langEntry = new PfkLanguageEntry(newEntry.Key, newEntry.Text); currentSheetFile.AddEntry(langEntry); } } else { this.Items.Add(newSheetFile.FileID, newSheetFile); } }
/// <summary> /// 言語ファイルから言語情報を作成する。 /// </summary> /// <param name="sheetInfo">言語情報</param> /// <param name="path">言語ファイルのパス</param> public static void LoadFromFile(PfkLanguageInfo sheetInfo, string path) { using (var sr = new StreamReader(path, Encoding.UTF8)) { var sheetFile = new PfkLanguageFile(path); sheetInfo.AddFile(sheetFile); //// JSONファイルをテキスト形式で読み込む。 var text = sr.ReadToEnd(); //// テキスト形式のJSONファイルを解析する。 var jsonData = PfkGameDesignBase.FromJson(text); foreach (var stringPair in jsonData.Strings) { //// 解析済みデータから、言語エントリーを作成する。 var langEntry = new PfkLanguageEntry(stringPair.Key, stringPair.Value); sheetFile.AddEntry(langEntry); } } }