Files
XRLib/Assets/Scripts/UVC/Locale/LocalizationDataSource.cs

71 lines
2.4 KiB
C#

using Newtonsoft.Json;
using System.Collections.Generic;
namespace UVC.Locale
{
/// <summary>
/// JSON 형식의 다국어 데이터를 담는 클래스입니다.
/// 이 클래스는 "languages" 섹션과 "words" 섹션으로 구성된 JSON 파일의 전체 구조에 해당합니다.
/// </summary>
/// <example>
/// JSON 파일 예시 (`locale.json`):
/// <code>
/// {
/// "languages": {
/// "en": "English",
/// "ko": "한국어"
/// },
/// "words": {
/// "error": {
/// "ko": "에러",
/// "en": "Error"
/// },
/// "button_ok": {
/// "ko": "확인",
/// "en": "OK"
/// }
/// }
/// }
/// </code>
/// </example>
public class LocalizationDataSource
{
/// <summary>
/// 지원하는 언어의 코드와 표시 이름을 저장하는 딕셔너리입니다.
/// 키는 언어 코드(예: "en", "ko")이며, 값은 해당 언어의 표시 이름(예: "English", "한국어")입니다.
/// </summary>
/// <example>
/// <code>
/// // Languages["en"] -> "English"
/// </code>
/// </example>
[JsonProperty("languages")]
public Dictionary<string, string> Languages { get; set; }
////// <summary>
/// 실제 번역 데이터를 저장하는 딕셔너리입니다.
/// 첫 번째 키는 번역 키(예: "error", "button_ok")이며,
/// 값은 해당 번역 키에 대한 언어별 번역 문자열을 담는 또 다른 딕셔너리입니다.
/// 이 내부 딕셔너리의 키는 언어 코드(예: "en", "ko")이고, 값은 번역된 텍스트입니다.
/// </summary>
/// <example>
/// <code>
/// // Words["error"]["en"] -> "Error"
/// </code>
/// </example>
[JsonProperty("words")]
public Dictionary<string, Dictionary<string, string>> Words { get; set; }
/// <summary>
/// <see cref="LocalizationDataSource"/> 클래스의 새 인스턴스를 초기화합니다.
/// <see cref="Languages"/> 및 <see cref="Words"/> 딕셔너리를 빈 상태로 생성합니다.
/// </summary>
public LocalizationDataSource()
{
Languages = new Dictionary<string, string>();
Words = new Dictionary<string, Dictionary<string, string>>();
}
}
}