diff --git a/db_update.py b/db_update.py
index 25f9d40ef..b509f7273 100644
--- a/db_update.py
+++ b/db_update.py
@@ -326,20 +326,25 @@ def update_db():
newData = []
for row in data:
- typeLines = []
- typeId = row['typeID']
- traitData = row['traits_en-us']
- for skillData in sorted(traitData.get('skills', ()), key=lambda i: i['header']):
- typeLines.append(convertSection(skillData))
- if 'role' in traitData:
- typeLines.append(convertSection(traitData['role']))
- if 'misc' in traitData:
- typeLines.append(convertSection(traitData['misc']))
- traitLine = '
\n
\n'.join(typeLines)
- newRow = {'typeID': typeId, 'traitText': traitLine}
- newData.append(newRow)
+ newRow = {
+ 'typeID': row['typeID'],
+ }
+ for (k, v) in eos.config.translation_mapping.items():
+ if v == '':
+ v = '_en-us'
+ typeLines = []
+ traitData = row['traits{}'.format(v)]
+ for skillData in sorted(traitData.get('skills', ()), key=lambda i: i['header']):
+ typeLines.append(convertSection(skillData))
+ if 'role' in traitData:
+ typeLines.append(convertSection(traitData['role']))
+ if 'misc' in traitData:
+ typeLines.append(convertSection(traitData['misc']))
+ traitLine = '
\n
\n'.join(typeLines)
+ newRow['traitText{}'.format(v)] = traitLine
- _addRows(newData, eos.gamedata.Traits)
+ newData.append(newRow)
+ _addRows(newData, eos.gamedata.Traits, fieldMap={'traitText_en-us': 'displayName'})
def processMetadata():
print('processing metadata')
diff --git a/eos/db/gamedata/traits.py b/eos/db/gamedata/traits.py
index d70c6ca58..8c5650eb4 100644
--- a/eos/db/gamedata/traits.py
+++ b/eos/db/gamedata/traits.py
@@ -1,11 +1,21 @@
from sqlalchemy import Column, Table, Integer, String, ForeignKey
-from sqlalchemy.orm import mapper
+from sqlalchemy.orm import mapper, synonym
from eos.db import gamedata_meta
from eos.gamedata import Traits
+import eos.config
-traits_table = Table("invtraits", gamedata_meta,
- Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True),
- Column("traitText", String))
+traits_table = Table(
+ "invtraits",
+ gamedata_meta,
+ Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True),
+ *[Column("traitText{}".format(lang), String) for lang in eos.config.translation_mapping.values()],
+)
-mapper(Traits, traits_table)
+mapper(
+ Traits,
+ traits_table,
+ properties={
+ "display": synonym("traitText{}".format(eos.config.lang)),
+ }
+)
diff --git a/gui/builtinItemStatsViews/itemTraits.py b/gui/builtinItemStatsViews/itemTraits.py
index 14042c143..65fd6d728 100644
--- a/gui/builtinItemStatsViews/itemTraits.py
+++ b/gui/builtinItemStatsViews/itemTraits.py
@@ -13,7 +13,7 @@ class ItemTraits(wx.Panel):
self.SetSizer(mainSizer)
self.traits = wx.html.HtmlWindow(self)
- self.traits.SetPage(item.traits.traitText)
+ self.traits.SetPage(item.traits.display)
self.traits.Bind(wx.EVT_CONTEXT_MENU, self.onPopupMenu)
self.traits.Bind(wx.EVT_KEY_UP, self.onKeyUp)