fix: 突发情况弹窗实时翻译 - 标题/选项/操作记录/正确答案提示全部本地化, 答题后反查原始中文key保持逻辑正确

This commit is contained in:
ayuan9957 2026-07-20 10:10:37 +08:00
parent 41369dd16d
commit 646c6e89a5
3 changed files with 62 additions and 11 deletions

View File

@ -112,7 +112,7 @@ public class AnserWindowCtrl : MonoBehaviour
//选择错误时 显示答题结果
public void ShowRightResult(string msg)
{
promptText.SetPrompt(LocalizationManager.Format("选择错误,应{0}", msg), Color.red, 2.5f);
promptText.SetPrompt(LocalizationManager.Format("选择错误,应{0}", LocalizationManager.Get(msg)), Color.red, 2.5f);
}

View File

@ -1,4 +1,4 @@
using System.Collections;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
@ -90,9 +90,9 @@ public class Sub1LearnPanel : BasePanel
List<string> options = new List<string>();
foreach (var item in tufaMsg.options)
{
options.Add(item.Key);
options.Add(LocalizationManager.Get(item.Key));
}
answerWindow.SetAskAndAnswer(tuFa.ToString(), options, AnswerEvent);
answerWindow.SetAskAndAnswer(LocalizationManager.Get(tuFa.ToString()), options, AnswerEvent);
if (AdjustingManager.Instance.Adjusting)//导调状态下遇到突发事件发送消息到教员端
{
@ -107,28 +107,38 @@ public class Sub1LearnPanel : BasePanel
// 完成答题时 检查选项是否最佳选项以及当前选项对应的罚时 并恢复车辆移动 导调模式下发送事件信息到教员端
void AnswerEvent(string selectOperations)
{
bool isRightOption = selectOperations == tufaMsg.rightOption;
int takeTime = tufaMsg.options[selectOperations];
// Find the original Chinese key from the displayed (localized) text
string selectedKey = selectOperations;
foreach (var item in tufaMsg.options)
{
if (LocalizationManager.Get(item.Key) == selectOperations)
{
selectedKey = item.Key;
break;
}
}
bool isRightOption = selectedKey == tufaMsg.rightOption;
int takeTime = tufaMsg.options[selectedKey];
time -= takeTime * 60;//takeTime为负数
if (isRightOption)//正确处理方式不记录罚时
{
StudentOperateRecorder.Instance.InjectOperateMsg($"行军过程中遇到{tuFa.ToString()},选择处理方式为{selectOperations}");
StudentOperateRecorder.Instance.InjectOperateMsgLocalized("行军过程中遇到{0},选择处理方式为{1}", tuFa.ToString(), selectedKey);
}
else
StudentOperateRecorder.Instance.InjectOperateMsg($"行军过程中遇到{tuFa.ToString()},选择处理方式为{selectOperations},罚时{takeTime}分钟");
StudentOperateRecorder.Instance.InjectOperateMsgLocalized("行军过程中遇到{0},选择处理方式为{1},罚时{2}分钟", tuFa.ToString(), selectedKey, Mathf.Abs(takeTime));
if (AdjustingManager.Instance.Adjusting)//导调状态下遇到突发事件发送消息到教员端
if (AdjustingManager.Instance.Adjusting)//导调状态下遇到突发事件发送事件信息到教员端
{
NetTuFaHandleMsg msg = new NetTuFaHandleMsg();
if (isRightOption)
{
msg.msgType = TuFaMsgType.handleRight;
msg.msg = $"{ selectOperations}";
msg.msg = $"{ selectedKey}";
}
else
{
msg.msgType = TuFaMsgType.handleWrong;
msg.msg = $"{ selectOperations},罚时{takeTime}分钟";
msg.msg = $"{ selectedKey},罚时{takeTime}分钟";
}
TCPManager.Instance.SendNetMsg<NetTuFaHandleMsg>(msg, NetMsgName.TuFaEvent);
}

View File

@ -452,4 +452,45 @@
<item zh="速限: km/h" en="Speed Limit: km/h" fr="Limite de vitesse : km/h" ru="Ограничение скорости: км/ч" />
<item zh="数量: 台" en="Quantity: units" fr="Quantité : unités" ru="Количество: ед." />
<item zh="数量: 台" en="Quantity: units" fr="Quantité : unités" ru="Количество: ед." />
<!-- TuFa (emergency incident) enum names -->
<item zh="敌机侦察" en="Enemy Aircraft Reconnaissance" fr="Reconnaissance aérienne ennemie" ru="Воздушная разведка противника" />
<item zh="敌机打击" en="Enemy Aircraft Strike" fr="Frappe aérienne ennemie" ru="Авиаудар противника" />
<item zh="化学沾染地带" en="Chemical Contamination Zone" fr="Zone de contamination chimique" ru="Зона химического заражения" />
<item zh="越过染毒地带" en="Crossing Contaminated Zone" fr="Franchissement de zone contaminée" ru="Преодоление зараженной зоны" />
<item zh="小股敌人袭扰" en="Small Enemy Unit Harassment" fr="Harasslement par une petite unité ennemie" ru="Беспокойство малой группы противника" />
<item zh="道路阻断" en="Road Blockage" fr="Route bloquée" ru="Перекрытие дороги" />
<item zh="友邻装备轻度损伤" en="Adjacent Equipment Minor Damage" fr="Dégât léger d'équipement adjacent" ru="Лёгкое повреждение соседней техники" />
<item zh="友邻装备重度损伤" en="Adjacent Equipment Major Damage" fr="Dégât majeur d'équipement adjacent" ru="Тяжёлое повреждение соседней техники" />
<!-- TuFa answer choices -->
<item zh="继续行军" en="Continue March" fr="Continuer la marche" ru="Продолжить марш" />
<item zh="直接停车" en="Stop Immediately" fr="S'arrêter immédiatement" ru="Немедленно остановиться" />
<item zh="利用地物隐蔽" en="Use Terrain for Cover" fr="Se dissimuler dans le terrain" ru="Использовать рельеф для укрытия" />
<item zh="下车攻击" en="Dismount and Attack" fr="Descendre et attaquer" ru="Спешиться и атаковать" />
<item zh="排除应急抢修组支援修理" en="Dispatch Emergency Repair Team" fr="Envoyer l'équipe de réparation d'urgence" ru="Направить аварийно-ремонтную команду" />
<item zh="组织后送" en="Organize Evacuation" fr="Organiser l'évacuation" ru="Организовать эвакуацию" />
<item zh="直接后下车隐蔽" en="Dismount and Take Cover Immediately" fr="Descendre et se dissimuler immédiatement" ru="Немедленно спешиться и укрыться" />
<item zh="加速通过,报告上级" en="Accelerate Through and Report" fr="Accélérer et signaler" ru="Ускориться и доложить" />
<item zh="停车侦察后追击歼灭" en="Stop, Recon, Then Pursue" fr="S'arrêter, reconnaître puis poursuivre" ru="Остановиться, провести разведку и преследовать" />
<item zh="提高车速通过" en="Pass at Higher Speed" fr="Franchir à vitesse accrue" ru="Преодолеть на повышенной скорости" />
<item zh="匀速通过,收三口" en="Pass at Constant Speed, Secure Openings" fr="Franchir à vitesse constante, fermer les ouvertures" ru="Преодолеть равномерно, застегнуть три отверстия" />
<item zh="提高车速同时收三口(袖口 领口 裤口)" en="Accelerate and Secure Openings (Cuffs, Collar, Trousers)" fr="Accélérer et fermer les ouvertures (manches, col, pantalon)" ru="Ускориться и застегнуть три отверстия (рукава, ворот, брюки)" />
<item zh="匀速通过" en="Pass at Constant Speed" fr="Franchir à vitesse constante" ru="Преодолеть равномерно" />
<item zh="停车后集中还击" en="Stop and Concentrate Fire" fr="S'arrêter et concentrer les tirs" ru="Остановиться и сосредоточить огонь" />
<item zh="停车后分散还击" en="Stop and Disperse Fire" fr="S'arrêter et disperser les tirs" ru="Остановиться и рассредоточить огонь" />
<item zh="拉大车距行军" en="Increase Vehicle Spacing" fr="Augmenter l'espacement des véhicules" ru="Увеличить дистанцию между машинами" />
<item zh="匀速行军" en="March at Constant Speed" fr="Marcher à vitesse constante" ru="Двигаться равномерно" />
<item zh="停车进行人员洗消" en="Stop for Personnel Decontamination" fr="S'arrêter pour décontamination du personnel" ru="Остановиться для дегазации личного состава" />
<item zh="停车进行人装洗消" en="Stop for Personnel and Equipment Decontamination" fr="S'arrêter pour décontamination du personnel et de l'équipement" ru="Остановиться для дегазации личного состава и техники" />
<item zh="报告后停车待命" en="Report and Stand By" fr="Signaler et rester en attente" ru="Доложить и ждать приказания" />
<item zh="冒险前进" en="Risk Advancing" fr="Avancer à risque" ru="Продвигаться с риском" />
<item zh="组织抢救车土工作业后继续前进" en="Organize Recovery Vehicle Earthwork Then Advance" fr="Organiser les travaux de déblaiement puis avancer" ru="Организовать работу ремонтно-эвакуационной машины и продолжить движение" />
<!-- TuFa operation message templates -->
<item zh="行军过程中遇到{0},选择处理方式为{1}" en="Encountered {0} during march, selected response: {1}" fr="Rencontré {0} pendant la marche, réponse : {1}" ru="Во время марша встречено: {0}, выбранное действие: {1}" />
<item zh="行军过程中遇到{0},选择处理方式为{1},罚时{2}分钟" en="Encountered {0} during march, selected response: {1}, penalty: {2} min" fr="Rencontré {0} pendant la marche, réponse : {1}, pénalité : {2} min" ru="Во время марша встречено: {0}, выбранное действие: {1}, штраф: {2} мин" />
<item zh="遇到突发事件:{0}" en="Emergency encountered: {0}" fr="Urgence rencontrée : {0}" ru="Возникла чрезвычайная ситуация: {0}" />
<item zh="选择处理方式:{0}" en="Selected response: {0}" fr="Réponse sélectionnée : {0}" ru="Выбранное действие: {0}" />
<item zh="罚时" en="penalty" fr="pénalité" ru="штраф" />
</translations>