From 799b5a303ec9abe17850303a7c787b0f9dc11093 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Mon, 10 Aug 2026 21:37:19 +0000 Subject: [PATCH] Traductions FR massives : pont broadcast_text_locale -> tables locale TC Le client 7.3.5 embarque 88k traductions frFR officielles mais TC lit creature_text_locale (11 lignes) et gossip_menu_option_locale (18 lignes). Pont via BroadcastTextId : +12 288 dialogues de creatures et +5 605 options de gossip en francais, serveur entier. Recharge a chaud, aucun restart. Decouvert en testant l Ile Vagabonde (dialogues d ambiance en anglais). --- sql/sylvania/pont_traductions_broadcast.sql | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sql/sylvania/pont_traductions_broadcast.sql diff --git a/sql/sylvania/pont_traductions_broadcast.sql b/sql/sylvania/pont_traductions_broadcast.sql new file mode 100644 index 0000000..8d8d1f7 --- /dev/null +++ b/sql/sylvania/pont_traductions_broadcast.sql @@ -0,0 +1,35 @@ +-- ===================================================================== +-- PONT DE TRADUCTIONS : broadcast_text_locale -> tables locale de TC +-- +-- Constat : le client 7.3.5 embarque 88 288 traductions frFR officielles +-- (dc_hotfixes.broadcast_text_locale), mais TrinityCore lit les dialogues +-- de créatures dans dc_world.creature_text_locale (11 lignes !) et les +-- options de gossip dans gossip_menu_option_locale (18 lignes). Résultat : +-- tous les dialogues scriptés et menus s'affichaient en anglais alors que +-- les traductions officielles étaient déjà sur le serveur. +-- +-- Ce patch construit le pont via les BroadcastTextId (déjà renseignés sur +-- 13 459 creature_text et 6 310 gossip_menu_option) : +-- +12 288 dialogues de créatures en frFR (91 % du serveur) +-- +5 605 options de gossip en frFR +-- Rejouable sans risque (INSERT IGNORE). Rechargeable à chaud : +-- reload locales_creature_text / reload locales_gossip_menu_option +-- ===================================================================== + +INSERT IGNORE INTO `creature_text_locale` (CreatureID, GroupID, ID, Locale, Text) +SELECT ct.CreatureID, ct.GroupID, ct.ID, 'frFR', + CASE WHEN bt.Text1 IS NOT NULL AND bt.Text1 <> '' AND ct.Text = bt.Text1 + THEN COALESCE(NULLIF(l.Text1_lang, ''), NULLIF(l.Text_lang, '')) + ELSE COALESCE(NULLIF(l.Text_lang, ''), NULLIF(l.Text1_lang, '')) END AS fr +FROM `creature_text` ct +JOIN `dc_hotfixes`.`broadcast_text` bt ON bt.ID = ct.BroadcastTextId +JOIN `dc_hotfixes`.`broadcast_text_locale` l ON l.ID = ct.BroadcastTextId AND l.locale = 'frFR' +WHERE ct.BroadcastTextId > 0 +HAVING fr IS NOT NULL; + +INSERT IGNORE INTO `gossip_menu_option_locale` (MenuId, OptionIndex, Locale, OptionText, BoxText) +SELECT g.MenuId, g.OptionIndex, 'frFR', + COALESCE(NULLIF(lo.Text_lang, ''), NULLIF(lo.Text1_lang, '')), '' +FROM `gossip_menu_option` g +JOIN `dc_hotfixes`.`broadcast_text_locale` lo ON lo.ID = g.OptionBroadcastTextId AND lo.locale = 'frFR' +WHERE g.OptionBroadcastTextId > 0;