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;