def setUp(self): psetup = PlacefulSetup() self.sm = psetup.setUp(True, True) self.rootFolder = psetup.rootFolder setUpSiteManagerLookup() import zope.i18n.interfaces import zope.i18n.negotiator provideUtility(zope.i18n.negotiator.negotiator, zope.i18n.interfaces.INegotiator) gsm = getGlobalSiteManager() de_catalog = MessageCatalog('de', 'default') de_catalog.setMessage('short_greeting', 'Hallo!', 10) de_catalog.setMessage('long_greeting', 'Guten Tag!', 10) # register global translation domain and add the catalog. domain = GlobalTranslationDomain('default') domain.addCatalog(de_catalog) gsm.registerUtility(domain, ITranslationDomain, 'default') # create a local site manager and add a local translation domain td = TranslationDomain() td.domain = 'default' de_catalog = MessageCatalog('de', 'default') de_catalog.setMessage('short_greeting', 'Hallo Welt!', 10) td['de-default-1'] = de_catalog mgr = createSiteManager(traverse(self.rootFolder, 'folder1')) mgr['default']['default'] = td mgr.registerUtility(mgr['default']['default'], ITranslationDomain, 'default') self.trans1 = td self.trans = domain
def setUp(self): super(TranslateTest, self).setUp() # Setup the registries provideAdapter(HTTPCharsets, (IHTTPRequest, ), IUserPreferredCharsets) provideUtility(Factory(MessageCatalog), IFactory, 'zope.app.MessageCatalog') self._domain = domain = TranslationDomain() domain.domain = 'default' en_catalog = MessageCatalog('en', 'default') de_catalog = MessageCatalog('de', 'default') en_catalog.setMessage('short_greeting', 'Hello!') de_catalog.setMessage('short_greeting', 'Hallo!') en_catalog.setMessage('greeting', 'Hello $name, how are you?') de_catalog.setMessage('greeting', 'Hallo $name, wie geht es Dir?') domain['en-1'] = en_catalog domain['de-1'] = de_catalog self._view = Translate(domain, self._getRequest())
def setUp(self): super(TestGettextExportImport, self).setUp() # Setup the negotiator utility provideUtility(negotiator, INegotiator) self._domain = TranslationDomain() self._domain.domain = 'default' provideUtility(Factory(MessageCatalog), IFactory, 'zope.app.MessageCatalog')
def setUp(self): self._domain = domain = TranslationDomain() domain.domain = 'default' en_catalog = MessageCatalog('en', 'default') de_catalog = MessageCatalog('de', 'default') en_catalog.setMessage('short_greeting', 'Hello!') de_catalog.setMessage('short_greeting', 'Hallo!') en_catalog.setMessage('greeting', 'Hello $name, how are you?') de_catalog.setMessage('greeting', 'Hallo $name, wie geht es Dir?') domain['en-1'] = en_catalog domain['de-1'] = de_catalog
def setUp(self): super(TestMethods, self).setUp() domain = self._domain = TranslationDomain() domain.domain = 'default' en_catalog = MessageCatalog('en', 'default') de_catalog = MessageCatalog('de', 'default') # Populate the catalogs with translations of a message id en_catalog.setMessage('short_greeting', 'Hello!', 10) de_catalog.setMessage('short_greeting', 'Hallo!', 10) # And another message id with interpolation placeholders en_catalog.setMessage('greeting', 'Hello $name, how are you?', 0) de_catalog.setMessage('greeting', 'Hallo $name, wie geht es Dir?', 0) domain['en-1'] = en_catalog domain['de-1'] = de_catalog
def onEnabled(self, theme, settings, dependenciesSettings): # noqa res = queryResourceDirectory(THEME_RESOURCE_NAME, theme) if res is None: return # We need to get settings by ourselves to avoid p.a.theming caching settings = getSettings(res) if not isEnabled(settings): return # Remove imported folders not-required on run-time autocleanup = (settings.get('self-destruct') or '').lower() in ('true', 'yes', 'on', '1') # Register permissions sm = getSiteManager() for key, value in _getPermissions(settings).items(): util = sm.queryUtility(IPermission, name=key) if util is None: name = str('collective.themesitesetup.permission.' + key) util = LocalPermission(value, u'') util.id = key util.__name__ = name util.__parent__ = aq_base(sm) sm._setObject(name, util, set_owner=False, suppress_events=True) sm.registerUtility(util, provided=IPermission, name=key) addPermission(str(value)) # Import GS profile directoryName = DEFAULT_ENABLED_PROFILE_NAME if 'install' in settings: directoryName = settings['install'] directory = None if res.isDirectory(directoryName): directory = res[directoryName] if directory: tarball = createTarball(directory) portal_setup = api.portal.get_tool('portal_setup') portal_setup.runAllImportStepsFromProfile(None, purge_old=False, archive=tarball) # Self-destruct imported profile if autocleanup and IWritableResourceDirectory.providedBy(res): del res[directoryName] # Register locales localesDirectoryName = DEFAULT_ENABLED_LOCALES_NAME if 'locales' in settings: localesDirectoryName = settings['locales'] if res.isDirectory(localesDirectoryName): catalogs = getMessageCatalogs(res[localesDirectoryName]) for domain in catalogs: util = sm.queryUtility(ITranslationDomain, name=domain) if not isinstance(util, TranslationDomain): name = str('collective.themesitesetup.domain.' + domain) util = TranslationDomain() util.__name__ = name util.__parent__ = aq_base(sm) util.domain = domain sm._setObject(name, util, set_owner=False, suppress_events=True) sm.registerUtility(util, provided=ITranslationDomain, name=domain) for language in catalogs[domain]: name = '.'.join([ 'collective.themesitesetup.catalog', res.__name__, domain, language ]) if name in util: try: del util[name] except ValueError: pass util[name] = catalogs[domain][language] # Self-destruct imported catalogs if autocleanup and IWritableResourceDirectory.providedBy(res): del res[localesDirectoryName] # Update Dexterity models modelsDirectoryName = DEFAULT_ENABLED_MODELS_NAME if 'models' in settings: modelsDirectoryName = settings['models'] overwrite = overwriteModels(settings) if res.isDirectory(modelsDirectoryName): types_tool = api.portal.get_tool('portal_types') directory = res[modelsDirectoryName] for name in directory.listDirectory(): if not name.endswith('.xml') or not directory.isFile(name): continue fti = types_tool.get(name[:-4]) if not fti: continue model = unicode(directory.readFile(name), 'utf-8', 'ignore') if fti.model_source == model: continue try: loadString(model, fti.schema_policy) # fail for errors except SupermodelParseError: logger.error( u'Error while parsing {0:s}/{1:s}/{2:s}'.format( res.__name__, modelsDirectoryName, name)) raise # Set model source when model is empty of override is enabled desc = DexterityFTIModificationDescription( 'model_source', fti.model_source) if not fti.model_source: fti.model_source = model notify(ObjectModifiedEvent(fti, desc)) elif not loadString(fti.model_source, fti.schema_policy).schema.names(): # noqa fti.model_source = model notify(ObjectModifiedEvent(fti, desc)) elif overwrite: fti.model_source = model notify(ObjectModifiedEvent(fti, desc)) # Self-destruct imported models if autocleanup and IWritableResourceDirectory.providedBy(res): del res[modelsDirectoryName] # Copy resources resourcesDirectoryName = DEFAULT_ENABLED_RESOURCES_NAME if 'resources' in settings: resourcesDirectoryName = settings['resources'] purge = purgeResources(settings) overwrite = overwriteResources(settings) root = queryUtility(IResourceDirectory, name=u'persistent') if root and res.isDirectory(resourcesDirectoryName): copyResources(res[resourcesDirectoryName], root, purge, overwrite) # Invalidate site layout cache of plone.app.blocks portal_catalog = api.portal.get_tool('portal_catalog') portal_catalog._increment_counter() # Self-desctruct imported resources if autocleanup and IWritableResourceDirectory.providedBy(res): del res[resourcesDirectoryName]
def setUp(self): super(TestExportImport, self).setUp() self._domain = TranslationDomain() self._domain.domain = 'default'
def setUp(self): self._domain = TranslationDomain() super(TestParseGetText, self).setUp()