feat(chat): insert map-flag and item-link tokens again, and finish the resx parity

The two menu items went out with the v1.5.6 chat window in cf4705e.
Their strings stayed, in the base file only, so the feature was gone and
its labels were untranslated in all 24 other languages.

They live in the chat context menu now, next to hide-chat, which is
where the rest of that window's items ended up. The game expands <flag>
and <item> at send time, so appending the literal token is the whole
implementation; each entry is disabled while its precondition is missing
so a token cannot be sent only to expand into nothing at the other end.

ChatLog_ScrollToBottom_Tooltip is the one that stings: it has had a
caller since v1.9.0 and existed in the base file alone, so every player
outside English read that tooltip in English.

All three are translated now, and with them the resource files are at
full parity for the first time -- 25 files, every key in every one.
This commit is contained in:
2026-08-18 22:43:09 +02:00
parent 75c4acd19a
commit 3cb20b6f65
25 changed files with 254 additions and 0 deletions
+38
View File
@@ -15,6 +15,7 @@ using Dalamud.Interface.Utility;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using FFXIVClientStructs.FFXIV.Component.GUI;
using HellionChat.Code;
using HellionChat.Resources;
@@ -191,6 +192,8 @@ internal sealed class PayloadHandler
if (ImGui.Selectable(Language.Context_HideChat))
Plugin.Config.HideChat = true;
DrawTokenInserts();
if (chunk.Message is { } message)
{
if (ImGui.Selectable(Language.Context_Copy))
@@ -936,4 +939,39 @@ internal sealed class PayloadHandler
_popup = (chunk, payload);
ImGui.OpenPopup(PopupId);
}
// The game expands <flag> and <item> at send time, so inserting the literal
// token is enough. Both entries were in the v1.5.6 chat window and went out
// with it; the strings survived, untranslated in 24 files until now.
//
// Disabled when the precondition is missing, so the token cannot be sent
// only to expand into nothing on the other side.
private void DrawTokenInserts()
{
bool flagSet;
bool itemSet;
unsafe
{
flagSet = AgentMap.Instance()->FlagMarkerCount > 0;
itemSet = AgentChatLog.Instance()->LinkedItem.ItemId != 0;
}
using (ImRaii.Disabled(!flagSet))
{
if (ImGui.Selectable(HellionStrings.ChatLog_Insert_MapFlag))
AppendToInput("<flag>");
}
using (ImRaii.Disabled(!itemSet))
{
if (ImGui.Selectable(HellionStrings.ChatLog_Insert_ItemLink))
AppendToInput("<item>");
}
}
private void AppendToInput(string token)
{
var current = _inputBar.PendingMessage;
_inputBar.SetPendingMessage(current + token);
}
}
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>El joc només informa d'un xiuxiueig fallit al registre. Això mostra una notificació, perquè un missatge a algú desconnectat o d'un altre món no passi desapercebut.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Vés al missatge més recent</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Insereix la marca del mapa &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Insereix l'objecte enllaçat &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Hra hlásí neúspěšné šeptání jen v logu. Toto místo toho zobrazí upozornění, aby zpráva někomu offline nebo na jiném světě nezůstala bez povšimnutí.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Přejít na nejnovější zprávu</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Vložit značku mapy &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Vložit odkázaný předmět &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Spillet melder kun en mislykket tell i loggen. Dette giver en notifikation i stedet, så en besked til nogen offline eller på en anden verden ikke overses.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Hop til den seneste besked</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Indsæt kortmarkering &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Indsæt linket genstand &lt;item&gt;</value>
</data>
</root>
@@ -1199,4 +1199,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Das Spiel meldet ein fehlgeschlagenes Flüstern nur im Protokoll. Das hier zeigt stattdessen eine Benachrichtigung, damit eine Nachricht an jemanden offline oder auf einer anderen Welt nicht untergeht.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Zur neuesten Nachricht springen</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Kartenmarkierung einfügen &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Verlinkten Gegenstand einfügen &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Το παιχνίδι αναφέρει ένα αποτυχημένο tell μόνο στο αρχείο καταγραφής. Αυτό εμφανίζει ειδοποίηση, ώστε ένα μήνυμα σε κάποιον εκτός σύνδεσης ή σε άλλον κόσμο να μην περάσει απαρατήρητο.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Μετάβαση στο πιο πρόσφατο μήνυμα</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Εισαγωγή σημαίας χάρτη &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Εισαγωγή συνδεδεμένου αντικειμένου &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>El juego solo informa de un susurro fallido en el registro. Esto muestra una notificación, para que un mensaje a alguien desconectado o de otro mundo no pase desapercibido.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Ir al mensaje más reciente</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Insertar marca del mapa &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Insertar objeto enlazado &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Peli ilmoittaa epäonnistuneesta kuiskauksesta vain lokissa. Tämä näyttää sen sijaan ilmoituksen, jottei viesti offline-tilassa tai toisessa maailmassa olevalle jää huomaamatta.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Siirry uusimpaan viestiin</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Lisää karttamerkki &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Lisää linkitetty esine &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Le jeu ne signale un message privé échoué que dans le journal. Ceci affiche une notification à la place, pour qu'un message à quelqu'un hors ligne ou sur un autre monde ne passe pas inaperçu.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Aller au message le plus récent</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Insérer le marqueur de carte &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Insérer l'objet lié &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>A játék csak a naplóban jelzi a sikertelen suttogást. Ez helyette értesítést jelenít meg, hogy egy offline vagy másik világon lévő játékosnak küldött üzenet ne maradjon észrevétlen.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Ugrás a legutóbbi üzenetre</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Térképjelölő beszúrása &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Hivatkozott tárgy beszúrása &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Il gioco segnala un sussurro fallito solo nel registro. Questo mostra invece una notifica, così un messaggio a qualcuno offline o su un altro mondo non passa inosservato.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Vai al messaggio più recente</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Inserisci il segnalino mappa &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Inserisci l'oggetto collegato &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>ゲームはテルの失敗をログにしか表示しません。この設定では代わりに通知を出すので、オフラインや別ワールドの相手へのメッセージを見落としません。</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>最新のメッセージへ移動</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>マップフラグを挿入 &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>リンクしたアイテムを挿入 &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>게임은 귓속말 실패를 로그에만 표시합니다. 이 설정은 대신 알림을 띄워, 오프라인이거나 다른 월드에 있는 상대에게 보낸 메시지를 놓치지 않게 합니다.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>최신 메시지로 이동</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>지도 표시 삽입 &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>연결된 아이템 삽입 &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Spillet melder en mislykket tell bare i loggen. Dette gir et varsel i stedet, så en melding til noen offline eller på en annen verden ikke blir oversett.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Hopp til den nyeste meldingen</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Sett inn kartmarkør &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Sett inn lenket gjenstand &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Het spel meldt een mislukte tell alleen in het log. Dit toont in plaats daarvan een melding, zodat een bericht aan iemand offline of op een andere wereld niet onopgemerkt blijft.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Ga naar het nieuwste bericht</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Kaartmarkering invoegen &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Gekoppeld voorwerp invoegen &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Gra zgłasza nieudany szept tylko w dzienniku. To zamiast tego wyświetla powiadomienie, żeby wiadomość do kogoś offline lub z innego świata nie umknęła.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Przejdź do najnowszej wiadomości</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Wstaw znacznik mapy &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Wstaw powiązany przedmiot &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>O jogo relata um sussurro que falhou apenas no registro. Isto mostra uma notificação, para que uma mensagem a alguém offline ou de outro mundo não passe despercebida.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Ir para a mensagem mais recente</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Inserir marcação do mapa &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Inserir item vinculado &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>O jogo comunica um sussurro falhado apenas no registo. Isto mostra uma notificação, para que uma mensagem a alguém offline ou de outro mundo não passe despercebida.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Ir para a mensagem mais recente</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Inserir marcação do mapa &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Inserir item ligado &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Jocul raportează un mesaj privat eșuat doar în jurnal. Aceasta afișează în schimb o notificare, ca un mesaj către cineva offline sau de pe altă lume să nu treacă neobservat.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Salt la cel mai recent mesaj</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Inserează marcajul hărții &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Inserează obiectul legat &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Игра сообщает о недоставленном шёпоте только в журнале. Здесь вместо этого показывается уведомление, чтобы сообщение офлайн-игроку или игроку с другого мира не осталось незамеченным.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Перейти к последнему сообщению</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Вставить метку карты &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Вставить связанный предмет &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Spelet rapporterar ett misslyckat viskmeddelande bara i loggen. Det här visar en avisering i stället, så att ett meddelande till någon offline eller på en annan värld inte missas.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Hoppa till det senaste meddelandet</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Infoga kartmarkering &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Infoga länkat föremål &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Oyun başarısız fısıltıyı yalnızca günlükte bildirir. Bu ayar bunun yerine bir bildirim gösterir, böylece çevrimdışı ya da başka dünyadaki birine gönderilen ileti gözden kaçmaz.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>En son iletiye git</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Harita işaretini ekle &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Bağlantılı eşyayı ekle &lt;item&gt;</value>
</data>
</root>
@@ -1204,4 +1204,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>Гра повідомляє про недоставлений шепіт лише в журналі. Це натомість показує сповіщення, щоб повідомлення офлайн-гравцю або гравцю з іншого світу не залишилося непоміченим.</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>Перейти до останнього повідомлення</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>Вставити позначку карти &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>Вставити пов'язаний предмет &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>游戏只在日志里提示密语发送失败。此设置改为弹出通知,让发给离线或异世界玩家的消息不会被忽略。</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>跳到最新消息</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>插入地图标记 &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>插入关联物品 &lt;item&gt;</value>
</data>
</root>
@@ -1205,4 +1205,13 @@
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
<value>遊戲只在日誌裡提示密語傳送失敗。此設定改為彈出通知,讓發給離線或異世界玩家的訊息不會被忽略。</value>
</data>
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
<value>跳到最新訊息</value>
</data>
<data name="ChatLog_Insert_MapFlag" xml:space="preserve">
<value>插入地圖標記 &lt;flag&gt;</value>
</data>
<data name="ChatLog_Insert_ItemLink" xml:space="preserve">
<value>插入關聯物品 &lt;item&gt;</value>
</data>
</root>