vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 local MAJOR_VERSION = "Zone 1.1"
2 local MINOR_VERSION = tonumber(string.sub("$Revision: 1536 $", 12, -3))
3  
4 if BabbleLib and BabbleLib.versions[MAJOR_VERSION] and BabbleLib.versions[MAJOR_VERSION].minor >= MINOR_VERSION then
5 return
6 end
7  
8 local locale = GetLocale and GetLocale() or "enUS"
9 if locale ~= "frFR" and locale ~= "deDE" and locale ~= "zhCN" then
10 locale = "enUS"
11 end
12  
13 local initZones, zones
14 if locale == "enUS" then
15 function initZones()
16 zones = {
17 ALTERAC_MOUNTAINS = "Alterac Mountains",
18 ALTERAC_VALLEY = "Alterac Valley",
19 ARATHI_BASIN = "Arathi Basin",
20 ARATHI_HIGHLANDS = "Arathi Highlands",
21 ASHENVALE = "Ashenvale",
22 AZSHARA = "Azshara",
23 BADLANDS = "Badlands",
24 BARRENS = "The Barrens",
25 BLACKFATHOM_DEEPS = "Blackfathom Deeps",
26 BLACKROCK_DEPTHS = "Blackrock Depths",
27 BLACKROCK_MOUNTAIN = "Blackrock Mountain",
28 BLACKROCK_SPIRE = "Blackrock Spire",
29 BLACKWING_LAIR = "Blackwing Lair",
30 BLASTED_LANDS = "Blasted Lands",
31 BOOTY_BAY = "Booty Bay",
32 BURNING_STEPPES = "Burning Steppes",
33 CAVERNS_OF_TIME = "Caverns of Time",
34 DARKSHORE = "Darkshore",
35 DARNASSUS = "Darnassus",
36 DEADMINES = "The Deadmines",
37 DEADWIND_PASS = "Deadwind Pass",
38 DEEPRUN_TRAM = "Deeprun Tram",
39 DESOLACE = "Desolace",
40 DIRE_MAUL = "Dire Maul",
41 DUN_MOROGH = "Dun Morogh",
42 DUROTAR = "Durotar",
43 DUSKWOOD = "Duskwood",
44 DUSTWALLOW_MARSH = "Dustwallow Marsh",
45 EASTERN_PLAGUELANDS = "Eastern Plaguelands",
46 ELWYNN_FOREST = "Elwynn Forest",
47 FELWOOD = "Felwood",
48 FERALAS = "Feralas",
49 FORBIDDING_SEA = "The Forbidding Sea",
50 GADGETZAN = "Gadgetzan",
51 GNOMEREGAN = "Gnomeregan",
52 GREAT_SEA = "The Great Sea",
53 HALL_OF_LEGENDS = "Hall of Legends",
54 HILLSBRAD_FOOTHILLS = "Hillsbrad Foothills",
55 HINTERLANDS = "The Hinterlands",
56 HYJAL = "Hyjal",
57 IRONFORGE = "Ironforge",
58 LOCH_MODAN = "Loch Modan",
59 MARAUDON = "Maraudon",
60 MOLTEN_CORE = "Molten Core",
61 MOONGLADE = "Moonglade",
62 MULGORE = "Mulgore",
63 ONYXIAS_LAIR = "Onyxia's Lair",
64 ORGRIMMAR = "Orgrimmar",
65 RATCHET = "Ratchet",
66 RAGEFIRE_CHASM = "Ragefire Chasm",
67 RAZORFEN_DOWNS = "Razorfen Downs",
68 RAZORFEN_KRAUL = "Razorfen Kraul",
69 REDRIDGE_MOUNTAINS = "Redridge Mountains",
70 RUINS_OF_AHN_QIRAJ = "Ruins of Ahn'Qiraj",
71 SCARLET_MONASTERY = "Scarlet Monastery",
72 SCHOLOMANCE = "Scholomance",
73 SEARING_GORGE = "Searing Gorge",
74 SHADOWFANG_KEEP = "Shadowfang Keep",
75 SILITHUS = "Silithus",
76 SILVERPINE_FOREST = "Silverpine Forest",
77 STOCKADE = "The Stockade",
78 STONETALON_MOUNTAINS = "Stonetalon Mountains",
79 STORMWIND_CITY = "Stormwind City",
80 STORMWIND_CITY_ALT = "Stormwind",
81 STRANGLETHORN_VALE = "Stranglethorn Vale",
82 STRATHOLME = "Stratholme",
83 SWAMP_OF_SORROWS = "Swamp of Sorrows",
84 TANARIS = "Tanaris",
85 TELDRASSIL = "Teldrassil",
86 TEMPLE_OF_AHN_QIRAJ = "Temple of Ahn'Qiraj",
87 TEMPLE_OF_ATAL_HAKKAR = "The Temple of Atal'Hakkar",
88 THOUSAND_NEEDLES = "Thousand Needles",
89 THUNDER_BLUFF = "Thunder Bluff",
90 TIRISFAL_GLADES = "Tirisfal Glades",
91 ULDAMAN = "Uldaman",
92 UN_GORO_CRATER = "Un'Goro Crater",
93 UNDERCITY = "Undercity",
94 UNDERCITY_ALT = "The Undercity",
95 WAILING_CAVERNS = "Wailing Caverns",
96 WARSONG_GULCH = "Warsong Gulch",
97 WESTERN_PLAGUELANDS = "Western Plaguelands",
98 WESTFALL = "Westfall",
99 WETLANDS = "Wetlands",
100 WINTERSPRING = "Winterspring",
101 ZUL_FARRAK = "Zul'Farrak",
102 ZUL_GURUB = "Zul'Gurub",
103 }
104 end
105 elseif locale == "deDE" then
106 function initZones()
107 zones = {
108 ALTERAC_MOUNTAINS = "Das Alteracgebirge",
109 ALTERAC_VALLEY = "Alteractal",
110 ARATHI_BASIN = "Arathibecken",
111 ARATHI_HIGHLANDS = "Das Arathihochland",
112 ASHENVALE = "Ashenvale",
113 AZSHARA = "Azshara",
114 BADLANDS = "Das \195\150dland",
115 BARRENS = "Das Brachland",
116 BLACKFATHOM_DEEPS = "Blackfathom-Tiefe",
117 BLACKROCK_DEPTHS = "Blackrocktiefen",
118 BLACKROCK_MOUNTAIN = "Der Blackrock",
119 BLACKROCK_SPIRE = "Blackrockspitze",
120 BLACKWING_LAIR = "Pechschwingenhort",
121 BLASTED_LANDS = "Die verw\195\188steten Lande",
122 BOOTY_BAY = "Booty Bay",
123 BURNING_STEPPES = "Die brennende Steppe",
124 CAVERNS_OF_TIME = "Die H\195\182hlen der Zeit",
125 DARKSHORE = "Dunkelk\195\188ste",
126 DARNASSUS = "Darnassus",
127 DEADMINES = "Die Todesminen",
128 DEADWIND_PASS = "Der Gebirgspass der Totenwinde",
129 DEEPRUN_TRAM = "Die Tiefenbahn",
130 DESOLACE = "Desolace",
131 DIRE_MAUL = "D\195\188sterbruch",
132 DUN_MOROGH = "Dun Morogh",
133 DUROTAR = "Durotar",
134 DUSKWOOD = "Duskwood",
135 DUSTWALLOW_MARSH = "Die Marschen von Dustwallow",
136 EASTERN_PLAGUELANDS = "Die \195\182stlichen Pestl\195\164nder",
137 ELWYNN_FOREST = "Der Wald von Elwynn",
138 FELWOOD = "Teufelswald",
139 FERALAS = "Feralas",
140 FORBIDDING_SEA = "Das verbotene Meer",
141 GADGETZAN = "Gadgetzan",
142 GNOMEREGAN = "Gnomeregan",
143 GREAT_SEA = "Das grosse Meer",
144 HALL_OF_LEGENDS = "Halle der Legenden",
145 HILLSBRAD_FOOTHILLS = "Die Vorgebirge von Hillsbrad",
146 HINTERLANDS = "Das Hinterland",
147 HYJAL = "Hyjal",
148 IRONFORGE = "Ironforge",
149 LOCH_MODAN = "Loch Modan",
150 MARAUDON = "Maraudon",
151 MOLTEN_CORE = "Geschmolzener Kern",
152 MOONGLADE = "Moonglade",
153 MULGORE = "Mulgore",
154 ONYXIAS_LAIR = "Onyxias Hort",
155 ORGRIMMAR = "Orgrimmar",
156 RATCHET = "Ratchet",
157 RAGEFIRE_CHASM = "Ragefireabgrund",
158 RAZORFEN_DOWNS = "Die H\195\188gel von Razorfen",
159 RAZORFEN_KRAUL = "Der Kral von Razorfen",
160 REDRIDGE_MOUNTAINS = "Das Redridgegebirge",
161 RUINS_OF_AHN_QIRAJ = "Ruinen von Ahn'Qiraj",
162 SCARLET_MONASTERY = "Das Scharlachrote Kloster",
163 SCHOLOMANCE = "Scholomance",
164 SEARING_GORGE = "Die sengende Schlucht",
165 SHADOWFANG_KEEP = "Burg Shadowfang",
166 SILITHUS = "Silithus",
167 SILVERPINE_FOREST = "Der Silberwald",
168 STOCKADE = "Das Verlies",
169 STONETALON_MOUNTAINS = "Das Steinkrallengebirge",
170 STORMWIND_CITY = "Stormwind",
171 STRANGLETHORN_VALE = "Stranglethorn",
172 STRATHOLME = "Stratholme",
173 SWAMP_OF_SORROWS = "Die S\195\188mpfe des Elends",
174 TANARIS = "Tanaris",
175 TELDRASSIL = "Teldrassil",
176 TEMPLE_OF_AHN_QIRAJ = "Tempel von Ahn'Qiraj",
177 TEMPLE_OF_ATAL_HAKKAR = "Der Tempel von Atal'Hakkar",
178 THOUSAND_NEEDLES = "Thousand Needles",
179 THUNDER_BLUFF = "Thunder Bluff",
180 TIRISFAL_GLADES = "Tirisfal",
181 ULDAMAN = "Uldaman",
182 UN_GORO_CRATER = "Der Un'Goro Krater",
183 UNDERCITY = "Undercity",
184 WAILING_CAVERNS = "Die H\195\182hlen des Wehklagens",
185 WARSONG_GULCH = "Warsongschlucht",
186 WESTERN_PLAGUELANDS = "Die westlichen Pestl\195\164nder",
187 WESTFALL = "Westfall",
188 WETLANDS = "Das Sumpfland",
189 WINTERSPRING = "Winterspring",
190 ZUL_FARRAK = "Zul'Farrak",
191 ZUL_GURUB = "Zul'Gurub",
192 }
193 end
194 elseif locale == "frFR" then
195 function initZones()
196 zones = {
197 ALTERAC_MOUNTAINS = "Montagnes d'Alterac",
198 ALTERAC_VALLEY = "Vall\195\169e d'Alterac",
199 ARATHI_BASIN = "Bassin d'Arathi",
200 ARATHI_HIGHLANDS = "Hautes-terres d'Arathi",
201 ASHENVALE = "Ashenvale",
202 AZSHARA = "Azshara",
203 BADLANDS = "Terres ingrates",
204 BARRENS = "Les Tarides",
205 BLACKFATHOM_DEEPS = "Profondeurs de Brassenoire",
206 BLACKROCK_DEPTHS = "Profondeurs de Blackrock",
207 BLACKROCK_MOUNTAIN = "Mont Blackrock",
208 BLACKROCK_SPIRE = "Pic Blackrock",
209 BLACKWING_LAIR = "Repaire de l'Aile noire",
210 BLASTED_LANDS = "Terres foudroy\195\169es",
211 BOOTY_BAY = "Baie-du-Butin",
212 BURNING_STEPPES = "Steppes Ardentes",
213 CAVERNS_OF_TIME = "Grottes du temps",
214 DARKSHORE = "Sombrivage",
215 DARNASSUS = "Darnassus",
216 DEADMINES = "Les mortemines",
217 DEADWIND_PASS = "D\195\169fil\195\169 de Deuillevent",
218 DEEPRUN_TRAM = "Tram des profondeurs",
219 DESOLACE = "D\195\169solace",
220 DIRE_MAUL = "Hache-Tripes",
221 DUN_MOROGH = "Dun Morogh",
222 DUROTAR = "Durotar",
223 DUSKWOOD = "Bois de la p\195\169nombre",
224 DUSTWALLOW_MARSH = "Mar\195\169cage d'\195\130prefange",
225 EASTERN_PLAGUELANDS = "Maleterres de l'est",
226 ELWYNN_FOREST = "For\195\170t d'Elwynn",
227 FELWOOD = "Gangrebois",
228 FERALAS = "Feralas",
229 FORBIDDING_SEA = "La Mer interdite",
230 GADGETZAN = "Gadgetzan", -- CHECK
231 GNOMEREGAN = "Gnomeregan",
232 GREAT_SEA = "La Grande mer",
233 HALL_OF_LEGENDS = "Hall des L\195\169gendes",
234 HILLSBRAD_FOOTHILLS = "Contreforts d'Hillsbrad",
235 HINTERLANDS = "Les Hinterlands",
236 HYJAL = "Hyjal", -- CHECK
237 IRONFORGE = "Ironforge",
238 LOCH_MODAN = "Loch Modan",
239 MARAUDON = "Maraudon",
240 MOLTEN_CORE = "C\221\181r du Magma",
241 MOONGLADE = "Reflet-de-lune",
242 MULGORE = "Mulgore",
243 ONYXIAS_LAIR = "Repaire d'Onyxia",
244 ORGRIMMAR = "Orgrimmar",
245 RATCHET = "Ratchet",
246 RAGEFIRE_CHASM = "Gouffre de Ragefeu",
247 RAZORFEN_DOWNS = "Souilles de Tranchebauge",
248 RAZORFEN_KRAUL = "Kraal de Tranchebauge",
249 REDRIDGE_MOUNTAINS = "Les Carmines",
250 RUINS_OF_AHN_QIRAJ = "Ruines d'Ahn'Qiraj",
251 SCARLET_MONASTERY = "Monast\195\168re Ecarlate",
252 SCHOLOMANCE = "Scholomance",
253 SEARING_GORGE = "Gorge des Vents br\195\187lants",
254 SHADOWFANG_KEEP = "Donjon d'Ombrecroc",
255 SILITHUS = "Silithus",
256 SILVERPINE_FOREST = "For\195\170t des pins argent\195\169s",
257 STOCKADE = "La Prison",
258 STONETALON_MOUNTAINS = "Les Serres-Rocheuses",
259 STORMWIND_CITY = "Cit\195\169 de Stormwind",
260 STRANGLETHORN_VALE = "Vall\195\169e de Strangleronce",
261 STRATHOLME = "Stratholme",
262 SWAMP_OF_SORROWS = "Marais des Chagrins",
263 TANARIS = "Tanaris",
264 TELDRASSIL = "Teldrassil",
265 TEMPLE_OF_AHN_QIRAJ = "Le temple d'Ahn'Qiraj",
266 TEMPLE_OF_ATAL_HAKKAR = "Le Temple d'Atal'Hakkar",
267 THOUSAND_NEEDLES = "Mille pointes",
268 THUNDER_BLUFF = "Thunder Bluff",
269 TIRISFAL_GLADES = "Clairi\195\168res de Tirisfal",
270 ULDAMAN = "Uldaman",
271 UN_GORO_CRATER = "Crat\195\168re d'Un'Goro",
272 UNDERCITY = "Undercity",
273 WAILING_CAVERNS = "Cavernes des lamentations",
274 WARSONG_GULCH = "Goulet des Warsong",
275 WESTERN_PLAGUELANDS = "Maleterres de l'ouest",
276 WESTFALL = "Marche de l'Ouest",
277 WETLANDS = "Les Paluns",
278 WINTERSPRING = "Berceau-de-l'Hiver",
279 ZUL_FARRAK = "Zul'Farrak",
280 ZUL_GURUB = "Zul'Gurub",
281 }
282 end
283 elseif locale == "zhCN" then
284 function initZones()
285 zones = {
286 ALTERAC_MOUNTAINS = "\229\165\165\231\137\185\229\133\176\229\133\139\229\177\177\232\132\137",
287 ALTERAC_VALLEY = "\229\165\165\231\137\185\229\133\176\229\133\139\229\177\177\232\176\183",
288 ARATHI_BASIN = "\233\152\191\230\139\137\229\184\140\231\155\134\229\156\176",
289 ARATHI_HIGHLANDS = "\233\152\191\230\139\137\229\184\140\233\171\152\229\156\176",
290 ASHENVALE = "\231\129\176\232\176\183",
291 AZSHARA = "\232\137\190\232\144\168\230\139\137",
292 BADLANDS = "\232\141\146\232\138\156\228\185\139\229\156\176",
293 BARRENS = "\232\180\171\231\152\160\228\185\139\229\156\176",
294 BLACKFATHOM_DEEPS = "\233\187\145\230\154\151\230\183\177\230\184\138",
295 BLACKROCK_DEPTHS = "\233\187\145\231\159\179\230\183\177\230\184\138",
296 BLACKROCK_MOUNTAIN = "\233\187\145\231\159\179\229\177\177",
297 BLACKROCK_SPIRE = "\233\187\145\231\159\179\229\161\148",
298 BLACKWING_LAIR = "\233\187\145\231\191\188\228\185\139\229\183\162",
299 BLASTED_LANDS = "\232\175\133\229\146\146\228\185\139\229\156\176",
300 BOOTY_BAY = "Booty Bay", -- CHECK
301 BURNING_STEPPES = "\231\135\131\231\131\167\229\185\179\229\142\159",
302 CAVERNS_OF_TIME = "\230\151\182\229\133\137\228\185\139\231\169\180",
303 DARKSHORE = "\233\187\145\230\181\183\229\178\184",
304 DARNASSUS = "\232\190\190\231\186\179\232\139\143\230\150\175",
305 DEADMINES = "\230\173\187\228\186\161\231\159\191\228\186\149",
306 DEADWIND_PASS = "\233\128\134\233\163\142\229\176\143\229\190\132",
307 DEEPRUN_TRAM = "\231\159\191\239\191\189?\239\191\189\229\156\176\239\191\189?", -- CHECK
308 DESOLACE = "\229\135\132\229\135\137\228\185\139\229\156\176",
309 DIRE_MAUL = "\229\142\132\232\191\144\228\185\139\230\167\140",
310 DUN_MOROGH = "\228\184\185\232\142\171\231\189\151",
311 DUROTAR = "\230\157\156\233\154\134\229\161\148\229\176\148",
312 DUSKWOOD = "\230\154\174\232\137\178\230\163\174\230\158\151",
313 DUSTWALLOW_MARSH = "\229\176\152\230\179\165\230\178\188\230\179\189",
314 EASTERN_PLAGUELANDS = "\228\184\156\231\152\159\231\150\171\228\185\139\229\156\176",
315 ELWYNN_FOREST = "\232\137\190\229\176\148\230\150\135\230\163\174\230\158\151",
316 FELWOOD = "\232\180\185\228\188\141\229\190\183\230\163\174\230\158\151",
317 FERALAS = "\239\191\189?\239\191\189\230\139\137\230\150\175", -- CHECK
318 FORBIDDING_SEA = "The Forbidding Sea",
319 GADGETZAN = "Gadgetzan", -- CHECK
320 GNOMEREGAN = "\232\175\186\232\142\171\231\145\158\230\160\185",
321 GREAT_SEA = "The Great Sea", -- CHECK
322 HALL_OF_LEGENDS = "Hall of Legends", -- CHECK
323 HILLSBRAD_FOOTHILLS = "\229\184\140\229\176\148\230\150\175\229\184\131\232\142\177\229\190\183\228\184\152\233\153\181",
324 HINTERLANDS = "\232\190\155\231\137\185\229\133\176",
325 HYJAL = "Hyjal", -- CHECK
326 IRONFORGE = "\233\147\129\231\130\137\229\160\161",
327 LOCH_MODAN = "\230\180\155\229\133\139\232\142\171\228\184\185",
328 MARAUDON = "\231\142\155\230\139\137\233\161\191",
329 MOLTEN_CORE = "\231\134\148\231\129\171\228\185\139\229\191\131",
330 MOONGLADE = "\230\156\136\229\133\137\230\158\151\229\156\176",
331 MULGORE = "\232\142\171\233\171\152\233\155\183",
332 ONYXIAS_LAIR = "\229\165\165\229\166\174\229\133\139\232\165\191\228\186\154\231\154\132\229\183\162\231\169\180",
333 ORGRIMMAR = "\229\165\165\230\160\188\231\145\158\231\142\155",
334 RATCHET = "Ratchet", -- CHECK
335 RAGEFIRE_CHASM = "\230\128\146\231\132\176\232\163\130\232\176\183",
336 RAZORFEN_DOWNS = "\229\137\131\229\136\128\233\171\152\229\156\176",
337 RAZORFEN_KRAUL = "\229\137\131\229\136\128\230\178\188\230\179\189",
338 REDRIDGE_MOUNTAINS = "\232\181\164\232\132\138\229\177\177",
339 RUINS_OF_AHN_QIRAJ = "\229\174\137\229\133\182\230\139\137\229\186\159\229\162\159",
340 SCARLET_MONASTERY = "\232\161\128\232\137\178\228\191\174\233\129\147\233\153\162",
341 SCHOLOMANCE = "\233\128\154\231\129\181\229\173\166\233\153\162", -- CHECK
342 SEARING_GORGE = "\231\129\188\231\131\173\229\179\161\232\176\183",
343 SHADOWFANG_KEEP = "\229\189\177\231\137\153\229\159\142\229\160\161",
344 SILITHUS = "\229\184\140\229\136\169\239\191\189?\230\150\175", -- CHECK
345 SILVERPINE_FOREST = "\233\147\182\239\191\189?\239\191\189\230\163\174\230\158\151", -- CHECK
346 STOCKADE = "\230\154\180\233\163\142\229\159\142\231\155\145\231\139\177",
347 STONETALON_MOUNTAINS = "\231\159\179\231\136\170\229\177\177\232\132\137",
348 STORMWIND_CITY = "\230\154\180\233\163\142\229\159\142",
349 STRANGLETHORN_VALE = "\232\141\134\230\163\152\232\176\183",
350 STRATHOLME = "\230\150\175\229\157\166\231\180\162\229\167\134",
351 SWAMP_OF_SORROWS = "\230\130\178\228\188\164\230\178\188\230\179\189",
352 TANARIS = "\229\161\148\231\186\179\229\136\169\230\150\175",
353 TELDRASSIL = "\230\179\176\232\190\190\229\184\140\229\176\148",
354 TEMPLE_OF_AHN_QIRAJ = "\229\174\137\229\133\182\230\139\137\231\165\158\230\174\191",
355 TEMPLE_OF_ATAL_HAKKAR = "\233\152\191\229\161\148\229\147\136\239\191\189?\239\191\189\231\165\158\229\186\153", -- CHECK
356 THOUSAND_NEEDLES = "\239\191\189?\239\191\189\233\146\136\231\159\179", -- CHECK
357 THUNDER_BLUFF = "\233\155\183\233\156\134\229\180\150",
358 TIRISFAL_GLADES = "\230\143\144\231\145\158\230\150\175\230\179\149\230\158\151\229\156\176",
359 ULDAMAN = "\229\165\165\232\190\190\230\155\188",
360 UN_GORO_CRATER = "\231\142\175\229\158\139\229\177\177",
361 UNDERCITY = "\229\185\189\230\154\151\229\159\142",
362 WAILING_CAVERNS = "\229\147\128\229\154\142\230\180\158\231\169\180",
363 WARSONG_GULCH = "\230\136\152\230\173\140\229\179\161\232\176\183",
364 WESTERN_PLAGUELANDS = "\232\165\191\231\152\159\231\150\171\228\185\139\229\156\176",
365 WESTFALL = "\232\165\191\233\131\168\232\141\146\233\135\142",
366 WETLANDS = "\230\185\191\229\156\176",
367 WINTERSPRING = "\229\134\172\230\179\137\232\176\183",
368 ZUL_FARRAK = "\231\165\150\229\176\148\230\179\149\230\139\137\229\133\139",
369 ZUL_GURUB = "\231\165\150\229\176\148\230\160\188\230\139\137\229\184\131",
370 }
371 end
372 end
373  
374 -------------IRIEL'S-STUB-CODE--------------
375 local stub = {};
376  
377 -- Instance replacement method, replace contents of old with that of new
378 function stub:ReplaceInstance(old, new)
379 for k,v in pairs(old) do old[k]=nil; end
380 for k,v in pairs(new) do old[k]=v; end
381 end
382  
383 -- Get a new copy of the stub
384 function stub:NewStub()
385 local newStub = {};
386 self:ReplaceInstance(newStub, self);
387 newStub.lastVersion = '';
388 newStub.versions = {};
389 return newStub;
390 end
391  
392 -- Get instance version
393 function stub:GetInstance(version)
394 if (not version) then version = self.lastVersion; end
395 local versionData = self.versions[version];
396 if (not versionData) then
397 message("Cannot find library instance with version '"
398 .. version .. "'");
399 return;
400 end
401 return versionData.instance;
402 end
403  
404 -- Register new instance
405 function stub:Register(newInstance)
406 local version,minor = newInstance:GetLibraryVersion();
407 self.lastVersion = version;
408 local versionData = self.versions[version];
409 if (not versionData) then
410 -- This one is new!
411 versionData = { instance = newInstance,
412 minor = minor,
413 old = {}
414 };
415 self.versions[version] = versionData;
416 newInstance:LibActivate(self);
417 return newInstance;
418 end
419 if (minor <= versionData.minor) then
420 -- This one is already obsolete
421 if (newInstance.LibDiscard) then
422 newInstance:LibDiscard();
423 end
424 return versionData.instance;
425 end
426 -- This is an update
427 local oldInstance = versionData.instance;
428 local oldList = versionData.old;
429 versionData.instance = newInstance;
430 versionData.minor = minor;
431 local skipCopy = newInstance:LibActivate(self, oldInstance, oldList);
432 table.insert(oldList, oldInstance);
433 if (not skipCopy) then
434 for i, old in ipairs(oldList) do
435 self:ReplaceInstance(old, newInstance);
436 end
437 end
438 return newInstance;
439 end
440  
441 -- Bind stub to global scope if it's not already there
442 if (not BabbleLib) then
443 BabbleLib = stub:NewStub();
444 end
445  
446 -- Nil stub for garbage collection
447 stub = nil;
448 -----------END-IRIEL'S-STUB-CODE------------
449  
450 local lib = {}
451 local localZones
452  
453 function lib:GetEnglish(zone)
454 return localZones[zone] or zone
455 end
456  
457 function lib:GetLocalized(zone)
458 return zones[zone] or zone
459 end
460  
461 function lib:GetIterator()
462 return pairs(zones)
463 end
464  
465 function lib:GetReverseIterator()
466 return pairs(localZones)
467 end
468  
469 function lib:HasZone(zone)
470 return (zones[zone] or localZones[zone]) and true or false
471 end
472  
473 function lib:GetLibraryVersion()
474 return MAJOR_VERSION, MINOR_VERSION
475 end
476  
477 function lib:LibActivate(stub, oldLib, oldList)
478 initZones()
479 initZones = nil
480  
481 localZones = {}
482 for english, localized in pairs(zones) do
483 if string.sub(english, -4) == "_ALT" then
484 localZones[localized] = string.sub(english, 0, -5)
485 elseif string.sub(english, -5, -2) == "_ALT" then
486 localZones[localized] = string.sub(english, 0, -6)
487 else
488 localZones[localized] = english
489 end
490 end
491 end
492  
493 function lib:LibDeactivate()
494 zones, localZones, initZones = nil
495 end
496  
497 BabbleLib:Register(lib)
498 lib = nil