Update schema and db_update to support translations.

(language setting from preferences is borked for some reason)
This commit is contained in:
blitzmann
2020-06-24 22:52:12 -04:00
parent 92ecd8c844
commit c040ff26c0
13 changed files with 89 additions and 40 deletions

View File

@@ -13,7 +13,18 @@ saveddataCache = True
gamedata_version = ""
gamedata_date = ""
gamedata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(__file__)), "..", "eve.db"))
lang = "en_US"
lang = ""
# Maps supported langauges to their suffix in the database
translation_mapping = {
"en_US": "",
"zh_CN": "_zh"
}
def set_lang(i18n_lang):
global lang
lang = translation_mapping.get(i18n_lang, translation_mapping.get("en-US"))
pyfalog.debug("Gamedata connection string: {0}", gamedata_connectionstring)

View File

@@ -37,10 +37,11 @@ attributes_table = Table("dgmattribs", gamedata_meta,
Column("description", Unicode),
Column("published", Boolean),
Column("displayName", String),
Column("displayName_zh", String),
Column("highIsGood", Boolean),
Column("iconID", Integer),
Column("attributeCategory", Integer),
Column("tooltipDescription", Integer),
Column("tooltipDescription", Integer), # deprecated...?
Column("unitID", Integer, ForeignKey("dgmunits.unitID")))
mapper(Attribute, typeattributes_table,
@@ -51,7 +52,7 @@ mapper(AttributeInfo, attributes_table,
"unit" : relation(Unit),
"ID" : synonym("attributeID"),
"name" : synonym("attributeName"),
"description": deferred(attributes_table.c.description)
"description": deferred(attributes_table.c.description),
})
Attribute.ID = association_proxy("info", "attributeID")

View File

@@ -22,17 +22,19 @@ from sqlalchemy.orm import deferred, mapper, synonym
from eos.db import gamedata_meta
from eos.gamedata import Category
import eos.config
categories_table = Table("invcategories", gamedata_meta,
Column("categoryID", Integer, primary_key=True),
Column("categoryName", String),
Column("description", String),
Column("name", String),
Column("name_zh", String),
Column("description", String), # deprecated
Column("published", Boolean),
Column("iconID", Integer))
mapper(Category, categories_table,
properties={
"ID" : synonym("categoryID"),
"name" : synonym("categoryName"),
"description": deferred(categories_table.c.description)
"displayName": synonym("name{}".format(eos.config.lang)),
"description": deferred(categories_table.c.description) # deprecated
})

View File

@@ -22,11 +22,13 @@ from sqlalchemy.orm import relation, mapper, synonym, deferred, backref
from eos.db import gamedata_meta
from eos.gamedata import Category, Group
import eos.config
groups_table = Table("invgroups", gamedata_meta,
Column("groupID", Integer, primary_key=True),
Column("groupName", String),
Column("description", String),
Column("groupName_zh", String),
Column("description", String), # deprecated
Column("published", Boolean),
Column("categoryID", Integer, ForeignKey("invcategories.categoryID")),
Column("iconID", Integer))
@@ -35,6 +37,6 @@ mapper(Group, groups_table,
properties={
"category" : relation(Category, backref=backref("groups", cascade="all,delete")),
"ID" : synonym("groupID"),
"name" : synonym("groupName"),
"description": deferred(groups_table.c.description)
"name" : synonym("groupName{}".format(eos.config.lang)),
"description": deferred(groups_table.c.description) # deprecated
})

View File

@@ -27,10 +27,14 @@ from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table
from eos.db.gamedata.effect import typeeffects_table
from eos.gamedata import Attribute, DynamicItem, Effect, Group, Item, Traits, MetaGroup
import eos.config
items_table = Table("invtypes", gamedata_meta,
Column("typeID", Integer, primary_key=True),
Column("typeName", String, index=True),
Column("typeName_zh", String),
Column("description", String),
Column("description_zh", String),
Column("raceID", Integer),
Column("factionID", Integer),
Column("published", Boolean),
@@ -43,7 +47,8 @@ items_table = Table("invtypes", gamedata_meta,
Column("variationParentTypeID", Integer, ForeignKey("invtypes.typeID"), index=True),
Column("replacements", String),
Column("reqskills", String),
Column("requiredfor", String))
Column("requiredfor", String),
)
from .traits import traits_table # noqa
@@ -55,8 +60,8 @@ mapper(Item, items_table,
"metaGroup" : relation(MetaGroup, backref=backref("items", cascade="all,delete")),
"varParent" : relation(Item, backref=backref("varChildren", cascade="all,delete"), remote_side=items_table.c.typeID),
"ID" : synonym("typeID"),
"name" : synonym("typeName"),
"description" : deferred(items_table.c.description),
"name" : synonym("typeName{}".format(eos.config.lang)),
"description" : deferred(items_table.c["description"]), # point this to the translated one doesn't work, need a solution
"traits" : relation(Traits,
primaryjoin=traits_table.c.typeID == items_table.c.typeID,
uselist=False),

View File

@@ -22,14 +22,17 @@ from sqlalchemy.orm import relation, mapper, synonym, deferred
from eos.db import gamedata_meta
from eos.gamedata import Item, MarketGroup
import eos.config
marketgroups_table = Table("invmarketgroups", gamedata_meta,
Column("marketGroupID", Integer, primary_key=True),
Column("marketGroupName", String),
Column("description", String),
Column("marketGroupName_zh", String),
Column("marketGroupDescription", String),
Column("marketGroupDescription_zh", String),
Column("hasTypes", Boolean),
Column("parentGroupID", Integer,
ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)),
ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)),
Column("iconID", Integer))
mapper(MarketGroup, marketgroups_table,
@@ -38,6 +41,8 @@ mapper(MarketGroup, marketgroups_table,
"parent" : relation(MarketGroup, backref="children",
remote_side=[marketgroups_table.c.marketGroupID]),
"ID" : synonym("marketGroupID"),
"name" : synonym("marketGroupName"),
"description": deferred(marketgroups_table.c.description)
"name" : synonym("marketGroupName{}".format(eos.config.lang)),
# "name_en-us" : synonym("marketGroupName_en-us"),
"description": deferred(marketgroups_table.c["marketGroupDescription{}".format(eos.config.lang)]),
})

View File

@@ -22,12 +22,15 @@ from sqlalchemy.orm import mapper, synonym
from eos.db import gamedata_meta
from eos.gamedata import MetaGroup
import eos.config
metagroups_table = Table("invmetagroups", gamedata_meta,
Column("metaGroupID", Integer, primary_key=True),
Column("metaGroupName", String))
Column("metaGroupName", String),
Column("metaGroupName_zh", String),
)
mapper(MetaGroup, metagroups_table,
properties={
"ID" : synonym("metaGroupID"),
"name": synonym("metaGroupName")})
"name": synonym("metaGroupName{}".format(eos.config.lang))})

View File

@@ -91,7 +91,7 @@ def getItem(lookfor, eager=None):
item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.ID == id).first()
else:
# Item names are unique, so we can use first() instead of one()
item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.name == lookfor).first()
item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.typeName == lookfor).first()
if item is not None:
itemNameMap[lookfor] = item.ID
else:
@@ -205,7 +205,7 @@ def getGroup(lookfor, eager=None):
group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.ID == id).first()
else:
# Group names are unique, so we can use first() instead of one()
group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.name == lookfor).first()
group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.groupName == lookfor).first()
if group is not None:
groupNameMap[lookfor] = group.ID
else:
@@ -265,7 +265,7 @@ def getMetaGroup(lookfor, eager=None):
else:
# MetaGroup names are unique, so we can use first() instead of one()
metaGroup = get_gamedata_session().query(MetaGroup).options(*processEager(eager)).filter(
MetaGroup.name == lookfor).first()
MetaGroup.metaGroupName == lookfor).first()
if metaGroup is not None:
metaGroupNameMap[lookfor] = metaGroup.ID
else:

View File

@@ -26,7 +26,9 @@ from eos.gamedata import Unit
groups_table = Table("dgmunits", gamedata_meta,
Column("unitID", Integer, primary_key=True),
Column("unitName", String),
Column("displayName", String))
Column("displayName", String),
Column("displayName_zh", String),
)
mapper(Unit, groups_table,
properties={