| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Newtonsoft.Json;
- namespace TeamAAS.Localization
- {
- /// <summary>
- /// 语言资源包 - 支持使用原文(中文/英文等)作为查找 key
- /// </summary>
- public class LanguageResourcePack
- {
- /// <summary>
- /// 语言代码(如 "zh-CN", "en-US", "ja-JP")
- /// </summary>
- [JsonProperty("languageCode")]
- public string LanguageCode { get; set; }
- /// <summary>
- /// 语言显示名称(如 "简体中文", "English", "日本語")
- /// </summary>
- [JsonProperty("languageName")]
- public string LanguageName { get; set; }
- /// <summary>
- /// 版本号
- /// </summary>
- [JsonProperty("version")]
- public string Version { get; set; } = "1.0.0";
- /// <summary>
- /// 作者/维护者
- /// </summary>
- [JsonProperty("author")]
- public string Author { get; set; }
- /// <summary>
- /// 翻译字典 - 使用原文作为 key
- /// 格式: { "原文": "译文" }
- /// 例如: { "相机设备": "Camera Device", "曝光时间(us)": "Exposure Time (us)" }
- /// </summary>
- [JsonProperty("translations")]
- public Dictionary<string, string> Translations { get; set; } = new Dictionary<string, string>();
- /// <summary>
- /// 根据原文获取翻译
- /// </summary>
- /// <param name="originalText">原文(如"相机设备")</param>
- /// <param name="context">可选的上下文信息(用于调试和日志)</param>
- /// <returns>翻译后的文本,找不到则返回 null</returns>
- public string GetTranslationByOriginalText(string originalText, string context = null)
- {
- if (string.IsNullOrWhiteSpace(originalText))
- return null;
- // 直接查找原文对应的翻译
- if (Translations.TryGetValue(originalText, out var translation))
- {
- return translation;
- }
- // 尝试去除空格后查找(处理可能的格式差异)
- var trimmedText = originalText.Trim();
- if (trimmedText != originalText && Translations.TryGetValue(trimmedText, out translation))
- {
- return translation;
- }
- // 找不到翻译
- return null;
- }
- /// <summary>
- /// 批量添加翻译
- /// </summary>
- public void AddTranslations(Dictionary<string, string> translations)
- {
- if (translations == null)
- return;
- foreach (var kvp in translations)
- {
- Translations[kvp.Key] = kvp.Value;
- }
- }
- /// <summary>
- /// 添加单个翻译
- /// </summary>
- public void AddTranslation(string originalText, string translatedText)
- {
- if (!string.IsNullOrWhiteSpace(originalText) && !string.IsNullOrWhiteSpace(translatedText))
- {
- Translations[originalText] = translatedText;
- }
- }
- /// <summary>
- /// 获取所有原文列表
- /// </summary>
- public List<string> GetAllOriginalTexts()
- {
- return Translations.Keys.ToList();
- }
- /// <summary>
- /// 获取翻译统计信息
- /// </summary>
- public (int Total, int Translated) GetStatistics()
- {
- var total = Translations.Count;
- var translated = Translations.Count(kvp => !string.IsNullOrWhiteSpace(kvp.Value));
- return (total, translated);
- }
- }
- }
|