View Single Post
05/30/14, 09:08 AM   #19
Garkin
 
Garkin's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 832
Originally Posted by Sharlikran View Post
Nope, I actually want all three because I want to translate it. I want to pass a foreign map name like "cahute de Cadwell^fd" or "Cadwells Heim^Ng,in" and return "Cadwell's Hovel". I do check for the client language. So if someone were using a french client I want to take "Cadwell's Hovel" or "Cadwells Heim^Ng,in" and return "cahute de Cadwell^fd".
EDIT: I think the function wasn't working for all languages, so I have to changed it to use index:
Lua Code:
  1. local mapNames = {
  2.    ["en"] = {
  3.       "Alik'r Desert",
  4.       "Auridon",
  5.    }
  6.    ["de"] = {
  7.       "Alik'r-Wüste^N,in",
  8.       "Auridon^N,in",
  9.    ["fr"] = {
  10.       "désert d'Alik'r^md",
  11.       "Auridia^F",
  12.    }
  13. }
  14.  
  15. local language = GetCVar("language.2")
  16. local langlist = { "en", "de", "fr" }
  17.  
  18. function TranslateName(name)
  19.    for _, lang in ipairs(langlist) do
  20.       for i, localizedName in ipairs(mapNames[lang])
  21.          if name == localizedName then
  22.             return mapNames[language][i]
  23.          end
  24.       end
  25.    end
  26.    return name
  27. end

If you want faster translation, you have to use two tables:
lua Code:
  1. Harvest.mapSystem = {
  2.    ["alikr/alikr_base"] = {"Alik'r Desert", "Alik'r-Wüste^N,in", "désert d'Alik'r^md"},
  3.    ["auridon/auridon_base"] = {"Auridon", "Auridon^N,in", "Auridia^F"},
  4.    ["bangkorai/bangkorai_base"] = {"Bangkorai", "Bangkorai^N,in", "Bangkoraï^F"},
  5.    ["coldharbor/coldharbour_base"] = {"Coldharbour", "Kalthafen^N,in", "Havreglace^M"},
  6.    ["cyrodiil/ava_whole"] = {"Cyrodiil", "Cyrodiil^N,in", "Cyrodiil^F"},
  7.    ["deshaan/deshaan_base"] = {"Deshaan", "Deshaan^N,in", "Deshaan^F"},
  8.    ["eastmarch/eastmarch_base"] = {"Eastmarch", "Ostmarsch^N,in", "Estemarche^F"},
  9. }
  10.  
  11. local mapNames = {
  12.    ["en"] = {
  13.       ["Alik'r Desert"] = "alikr/alikr_base",
  14.       ["Auridon"] = "auridon/auridon_base",
  15.       ["Bangkorai"] = "bangkorai/bangkorai_base",
  16.       ["Coldharbour"] = "coldharbor/coldharbour_base",
  17.       ["Cyrodiil"] = "cyrodiil/ava_whole",
  18.       ["Deshaan"] = "deshaan/deshaan_base",
  19.       ["Eastmarch"] = "eastmarch/eastmarch_base",
  20.       --some map names are not unique, so we have to deal with it
  21.       ["Sancre Tor"] = "not unique"
  22.    }
  23.    ["de"] = {
  24.       ["Alik'r-Wüste^N,in"] = "alikr/alikr_base",
  25.       ["Auridon^N,in"] = "auridon/auridon_base",
  26.       ["Bangkorai^N,in"] = "bangkorai/bangkorai_base",
  27.       ["Kalthafen^N,in"] = "coldharbor/coldharbour_base",
  28.       ["Cyrodiil^N,in"] = "cyrodiil/ava_whole",
  29.       ["Deshaan^N,in"] = "deshaan/deshaan_base",
  30.       ["Ostmarsch^N,in"] = "eastmarch/eastmarch_base",
  31.    }
  32.    ["fr"] = {
  33.       ["désert d'Alik'r^md"] = "alikr/alikr_base",
  34.       ["Auridia^F"] = "auridon/auridon_base",
  35.       ["Bangkoraï^F"] = "bangkorai/bangkorai_base",
  36.       ["Havreglace^M"] = "coldharbor/coldharbour_base",
  37.       ["Cyrodiil^F"] = "cyrodiil/ava_whole",
  38.       ["Deshaan^F"] = "deshaan/deshaan_base",
  39.       ["Estemarche^F"] = "eastmarch/eastmarch_base",
  40.    }
  41. }
  42.  
  43. local language = GetCVar("language.2")
  44. local langlist = { ["en"] = 1, ["de"] = 2, ["fr"] = 3 }
  45.  
  46. function TranslateMapName(name)
  47.    for lang in pairs(langlist) do
  48.       local textureName = mapNames[lang]
  49.       if textureName then
  50.          if Harvest.mapSystem[textureName] then
  51.             --if translated name is not defined, return english name
  52.             return Harvest.mapSystem[textureName][langlist[language]] or Harvest.mapSystem[textureName][1]
  53.          else
  54.             --if texture key doesn't exist in Harvest.mapSystem (for example key "not unique"), return original name
  55.             return name
  56.          end
  57.       end
  58.    end
  59.    --translation not found, return original name
  60.    return name
  61. end

Last edited by Garkin : 05/31/14 at 03:21 AM.
  Reply With Quote