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).
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user