|
|
@@ -803,6 +803,190 @@ add([
|
|
|
"这些按钮显示你最近最常用的餐食。\n\n它们基于你以往在相近日子、相近时间发送过的内容——比如你通常在工作日早晨发送同样的早餐,它就会作为选项出现。\n\n点按按钮即可填入详情。在你查看并确认之前,不会发送任何内容。"),
|
|
|
])
|
|
|
|
|
|
+# ==== 二轮深查:主页面 ====
|
|
|
+add([
|
|
|
+ ("⚠️ Not Looping!", "⚠️ 未闭环!"),
|
|
|
+ ("LOW", "低"),
|
|
|
+ ("HIGH", "高"),
|
|
|
+ ("Est A1C:", "估算 A1C:"),
|
|
|
+ ("Est. A1C:", "估算 A1C:"),
|
|
|
+ ("Std Dev:", "标准差:"),
|
|
|
+ ("Low:", "低:"),
|
|
|
+ ("In Range:", "范围内:"),
|
|
|
+ ("High:", "高:"),
|
|
|
+ ("Avg BG:", "平均血糖:"),
|
|
|
+ ("Updated", "更新时间"),
|
|
|
+ ("LoopFollow Background Refresh", "LoopFollow 后台刷新"),
|
|
|
+ ("App inactive for 6 minutes. Verify Bluetooth connectivity.", "应用已 6 分钟未活动。请检查蓝牙连接。"),
|
|
|
+ ("App inactive for 6 minutes. Open to resume.", "应用已 6 分钟未活动。请打开应用以恢复。"),
|
|
|
+ ("App inactive for 12 minutes. Verify Bluetooth connectivity.", "应用已 12 分钟未活动。请检查蓝牙连接。"),
|
|
|
+ ("App inactive for 12 minutes. Open to resume.", "应用已 12 分钟未活动。请打开应用以恢复。"),
|
|
|
+ ("App inactive for 18 minutes. Verify Bluetooth connectivity.", "应用已 18 分钟未活动。请检查蓝牙连接。"),
|
|
|
+ ("App inactive for 18 minutes. Open to resume.", "应用已 18 分钟未活动。请打开应用以恢复。"),
|
|
|
+ ("Suspend Pump", "暂停泵"),
|
|
|
+ ("Resume Pump", "恢复泵"),
|
|
|
+ ("Start Sensor", "启动传感器"),
|
|
|
+ ("Entered By: ", "录入者:"),
|
|
|
+ ("Bolus:", "大剂量:"),
|
|
|
+ ("Carbs:", "碳水:"),
|
|
|
+ ("Absorption:", "吸收时间:"),
|
|
|
+ ("hrs", "小时"),
|
|
|
+ ("From:", "来自:"),
|
|
|
+])
|
|
|
+
|
|
|
+# ==== 二轮深查:远程控制(Trio TRC + Loop APNS)====
|
|
|
+add([
|
|
|
+ ("Bolus Amount", "大剂量数值"),
|
|
|
+ ("Insulin Amount", "胰岛素数值"),
|
|
|
+ ("Carbs Amount", "碳水数值"),
|
|
|
+ ("Fat", "脂肪"),
|
|
|
+ ("Protein", "蛋白质"),
|
|
|
+ ("Select Time", "选择时间"),
|
|
|
+ ("Confirm your identity to send bolus.", "确认你的身份以发送大剂量。"),
|
|
|
+ ("Confirm your identity to send insulin.", "确认你的身份以发送胰岛素。"),
|
|
|
+ ("Authentication failed", "身份验证失败"),
|
|
|
+ ("Bolus command sent successfully.", "大剂量指令已发送成功。"),
|
|
|
+ ("Failed to send bolus command.", "大剂量指令发送失败。"),
|
|
|
+ ("Meal command sent successfully.", "餐食指令已发送成功。"),
|
|
|
+ ("Failed to send meal command.", "餐食指令发送失败。"),
|
|
|
+ ("Temp target command successfully sent.", "临时目标指令已发送成功。"),
|
|
|
+ ("Failed to send temp target command.", "临时目标指令发送失败。"),
|
|
|
+ ("Cancel temp target command successfully sent.", "取消临时目标指令已发送成功。"),
|
|
|
+ ("Failed to send cancel temp target command.", "取消临时目标指令发送失败。"),
|
|
|
+ ("Override command sent successfully.", "临时配置指令已发送成功。"),
|
|
|
+ ("Failed to send override command.", "临时配置指令发送失败。"),
|
|
|
+ ("Cancel override command sent successfully.", "取消临时配置指令已发送成功。"),
|
|
|
+ ("Failed to send cancel override command.", "取消临时配置指令发送失败。"),
|
|
|
+ ("Active override cancelled successfully.", "当前临时配置已成功取消。"),
|
|
|
+ ("An error occurred.", "发生错误。"),
|
|
|
+ ("Invalid input.", "输入无效。"),
|
|
|
+ ("Please wait...", "请稍候…"),
|
|
|
+ ("Remote commands are currently only available for Trio.", "远程指令目前仅支持 Trio。"),
|
|
|
+ ("Are you sure you want to send the meal data", "确定要发送该餐食数据"),
|
|
|
+ (" for %@?", ",用餐时间 %@ 吗?"),
|
|
|
+ (" now?", "吗?"),
|
|
|
+ ("This recommended bolus was calculated %lld minutes ago. New treatments may have occurred since then. Proceed with caution.",
|
|
|
+ "该推荐大剂量计算于 %lld 分钟前。此后可能已有新的治疗发生,请谨慎操作。"),
|
|
|
+ ("WARNING: New treatments may have occurred since the last recommended bolus was calculated %@ ago.",
|
|
|
+ "警告:推荐大剂量计算于 %@ 前,此后可能已有新的治疗发生。"),
|
|
|
+ ("Calculated %lld minute%@ ago", "计算于 %1$lld 分钟前"),
|
|
|
+ ("Indefinite", "无限期"),
|
|
|
+ ("Nightscout URL and token not configured in settings", "设置中未配置 Nightscout 网址和令牌"),
|
|
|
+ ("Invalid response from server", "服务器响应无效"),
|
|
|
+ ("Loop APNS Configuration not valid", "Loop APNS 配置无效"),
|
|
|
+ ("Failed generating JWT token, check APNS Key ID, APNS Key and Team ID", "生成 JWT 令牌失败,请检查 APNS 密钥 ID、APNS 密钥和团队 ID"),
|
|
|
+ ("Network error occurred", "发生网络错误"),
|
|
|
+ ("No device token found in profile", "配置文件中未找到设备令牌"),
|
|
|
+ ("Unauthorized - check your API secret", "未授权——请检查你的 API 密钥"),
|
|
|
+ ("Device token not configured", "设备令牌未配置"),
|
|
|
+ ("Too many requests - please wait a few minutes before trying again", "请求过于频繁——请等待几分钟后再试"),
|
|
|
+ ("Loop APNS setup is incomplete. Please configure all required fields in settings.", "Loop APNS 设置不完整。请在设置中填写所有必填项。"),
|
|
|
+ ("Invalid QR code URL. Please re-scan the QR code in settings.", "二维码网址无效。请在设置中重新扫描二维码。"),
|
|
|
+ ("Please enter a valid insulin amount", "请输入有效的胰岛素数值"),
|
|
|
+ ("Please enter a valid carb amount", "请输入有效的碳水数值"),
|
|
|
+ ("Insulin sent successfully!", "胰岛素已发送成功!"),
|
|
|
+ ("Failed to send insulin. Check your Loop APNS configuration.", "胰岛素发送失败。请检查你的 Loop APNS 配置。"),
|
|
|
+ ("Failed to send carbs. Check your Loop APNS configuration.", "碳水发送失败。请检查你的 Loop APNS 配置。"),
|
|
|
+ ("Carbs sent successfully for %@!", "碳水已发送成功(用餐时间 %@)!"),
|
|
|
+ ("Carbs amount (%lldg) exceeds the maximum allowed (%lldg). Please reduce the amount.",
|
|
|
+ "碳水数量(%1$lld 克)超过允许的最大值(%2$lld 克)。请减少数量。"),
|
|
|
+ ("Time must be within the prior %lld hours", "时间必须在过去 %lld 小时之内"),
|
|
|
+ ("Time must be within the next %lld hour", "时间必须在未来 %lld 小时之内"),
|
|
|
+ ("The scanned settings include a Nightscout URL. Would you like to set this as your Nightscout address?",
|
|
|
+ "扫描到的设置包含一个 Nightscout 网址。要将它设为你的 Nightscout 地址吗?"),
|
|
|
+ ("The scanned settings also include a token. Would you like to set this as your access token?",
|
|
|
+ "扫描到的设置还包含一个令牌。要将它设为你的访问令牌吗?"),
|
|
|
+ ("The scanned settings include a token. Would you like to set this as your access token?",
|
|
|
+ "扫描到的设置包含一个令牌。要将它设为你的访问令牌吗?"),
|
|
|
+ ("The scanned token doesn't match your current access token. Would you like to update your token?",
|
|
|
+ "扫描到的令牌与当前访问令牌不一致。要更新你的令牌吗?"),
|
|
|
+ ("Enter Shared Secret", "输入共享密钥"),
|
|
|
+ ("Enter APNS Key ID", "输入 APNS 密钥 ID"),
|
|
|
+ ("Paste APNS Key", "粘贴 APNS 密钥"),
|
|
|
+ ("Enter Team ID", "输入团队 ID"),
|
|
|
+ ("Enter Token", "输入令牌"),
|
|
|
+ ("A profile record has startDate %@. LoopFollow ignores future-dated records, but it will still appear as the current profile in your Nightscout dashboard. Consider deleting it — it usually means a phone with the wrong system clock is uploading.",
|
|
|
+ "有一条配置文件记录的开始日期为 %@。LoopFollow 会忽略未来日期的记录,但它仍会显示为你 Nightscout 面板中的当前配置文件。建议删除——这通常意味着有一部系统时钟错误的手机正在上传。"),
|
|
|
+ ("Diagnostics unavailable: %@", "诊断不可用:%@"),
|
|
|
+ ("Device tokens are alternating in recent profile uploads (%lld tokens involved across %lld records). This usually means more than one app installation is uploading to the same Nightscout. Remove the app from spare or unused phones.",
|
|
|
+ "近期的配置文件上传中设备令牌交替出现(%2$lld 条记录中涉及 %1$lld 个令牌)。这通常意味着有多个应用安装在向同一个 Nightscout 上传。请从闲置手机上移除该应用。"),
|
|
|
+ ("Do you want to activate the override '%@'?", "要启用临时配置「%@」吗?"),
|
|
|
+ ("Percentage: %lld%", "比例:%lld%"),
|
|
|
+ ("Percentage: %lld%%", "比例:%lld%%"),
|
|
|
+ ("Target: %@ %@", "目标:%1$@ %2$@"),
|
|
|
+ ("Target: %@-%@", "目标:%1$@-%2$@"),
|
|
|
+ ("Insulin: %lld%", "胰岛素:%lld%"),
|
|
|
+ ("Insulin: %lld%%", "胰岛素:%lld%%"),
|
|
|
+ ("New Target: %@ %@\nDuration: %lld minutes", "新目标:%1$@ %2$@\n持续时间:%3$lld 分钟"),
|
|
|
+])
|
|
|
+
|
|
|
+# ==== 二轮深查:Nightscout 状态 ====
|
|
|
+add([
|
|
|
+ ("Checking...", "正在检查…"),
|
|
|
+ ("Disconnected", "未连接"),
|
|
|
+ ("Connecting...", "正在连接…"),
|
|
|
+ ("Invalid URL", "网址无效"),
|
|
|
+ ("Network Error", "网络错误"),
|
|
|
+ ("Invalid Token", "令牌无效"),
|
|
|
+ ("Token Required", "需要令牌"),
|
|
|
+ ("Site Not Found", "未找到站点"),
|
|
|
+ ("Unknown Error", "未知错误"),
|
|
|
+ ("Address Empty", "地址为空"),
|
|
|
+ ("Admin", "管理员"),
|
|
|
+ ("OK (%@)", "正常(%@)"),
|
|
|
+])
|
|
|
+
|
|
|
+# ==== 二轮深查:统计页 ====
|
|
|
+add([
|
|
|
+ ("Loading data...", "正在加载数据…"),
|
|
|
+ ("Total Negative Basal", "负向基础率合计"),
|
|
|
+ ("Total Positive Basal", "正向基础率合计"),
|
|
|
+ ("Actual Basal", "实际基础率"),
|
|
|
+ ("g/day", "克/天"),
|
|
|
+ ("U/day", "U/天"),
|
|
|
+ ("Very High (%@)", "非常高(%@)"),
|
|
|
+ ("High (%@)", "高(%@)"),
|
|
|
+ ("In Range (%@)", "范围内(%@)"),
|
|
|
+ ("Low (%@)", "低(%@)"),
|
|
|
+ ("Very Low (%@)", "非常低(%@)"),
|
|
|
+ ("Time in Range", "目标范围内时间"),
|
|
|
+ ("Time in Tight Range", "严格范围内时间"),
|
|
|
+ ("Custom Range", "自定义范围"),
|
|
|
+ ("Very Low", "非常低"),
|
|
|
+ ("In Range", "范围内"),
|
|
|
+ ("Very High", "非常高"),
|
|
|
+ ("Morning", "上午"),
|
|
|
+ ("Evening", "傍晚"),
|
|
|
+ ("Average", "平均"),
|
|
|
+ ("Zone A", "区域 A"),
|
|
|
+ ("Zone B", "区域 B"),
|
|
|
+ ("Zone C", "区域 C"),
|
|
|
+ ("Zone D", "区域 D"),
|
|
|
+ ("Zone E", "区域 E"),
|
|
|
+ ("Current GRI", "当前 GRI"),
|
|
|
+ ("Median", "中位数"),
|
|
|
+ ("Excellent", "极好"),
|
|
|
+ ("Good", "良好"),
|
|
|
+ ("Fair", "一般"),
|
|
|
+ ("Poor", "较差"),
|
|
|
+ ("Select Start Date", "选择开始日期"),
|
|
|
+ ("Select End Date", "选择结束日期"),
|
|
|
+ ("Cutoffs in %@", "阈值单位:%@"),
|
|
|
+])
|
|
|
+
|
|
|
+# ==== 二轮深查:实时活动设置与其它 ====
|
|
|
+add([
|
|
|
+ ("Top left", "左上"),
|
|
|
+ ("Top right", "右上"),
|
|
|
+ ("Bottom left", "左下"),
|
|
|
+ ("Bottom right", "右下"),
|
|
|
+ ("Live Activity Restarted", "实时活动已重启"),
|
|
|
+ ("Restart Live Activity", "重启实时活动"),
|
|
|
+ ("Snooze until (date)", "暂停至(日期)"),
|
|
|
+ ("Snooze until (time)", "暂停至(时间)"),
|
|
|
+ ("Unknown", "未知"),
|
|
|
+])
|
|
|
+
|
|
|
# ---------- 写出 ----------
|
|
|
strings = collections.OrderedDict()
|
|
|
for en in sorted(T.keys()):
|