def create_so_catalog(locales, domain): """ Creates a message catalog based on list of locales from existing GNU message catalog """ TG_Message.dropTable(ifExists=True) TG_Domain.dropTable(ifExists=True) TG_Domain.createTable(ifNotExists=True) TG_Message.createTable(ifNotExists=True) localedir = gearshift.config.get("i18n.locale_dir", "locales") try: domain = TG_Domain.byName(domain) return except SQLObjectNotFound: domain = TG_Domain(name=domain) for locale in locales: translations = translation( domain=domain.name, localedir=localedir, languages=[locale]) catalog = translations._catalog for k, v in catalog.items(): TG_Message(domain=domain, locale=locale, name=k, text=v)
def create_so_catalog(locales, domain): """ Creates a message catalog based on list of locales from existing GNU message catalog """ TG_Message.dropTable(ifExists=True) TG_Domain.dropTable(ifExists=True) TG_Domain.createTable(ifNotExists=True) TG_Message.createTable(ifNotExists=True) localedir = gearshift.config.get("i18n.locale_dir", "locales") try: domain = TG_Domain.byName(domain) return except SQLObjectNotFound: domain = TG_Domain(name=domain) for locale in locales: translations = translation(domain=domain.name, localedir=localedir, languages=[locale]) catalog = translations._catalog for k, v in catalog.items(): TG_Message(domain=domain, locale=locale, name=k, text=v)
def get_so_catalog(domain): """ Retrieves all translations for locale and domain from database and stores in thread data. """ if domain is None: domain = gearshift.config.get("i18n.domain", "messages") catalog = _catalogs.get(domain) if not catalog: catalog = {} try: domain = TG_Domain.byName(domain) except SQLObjectNotFound: return catalog results = TG_Message.selectBy(domain=domain) for message in results: locale = message.locale messages = catalog.get(locale, {}) messages[message.name] = message.text catalog[locale] = messages _catalogs[domain.name] = catalog return catalog