def translate_folder(path, language, path_trans, lang_trans): ob = portal.unrestrictedTraverse(path, None) ob_trans = portal.unrestrictedTraverse(path_trans, None) for item in ob.objectIds(): subob = ob.unrestrictedTraverse(item, None) subob_trans = ob_trans.unrestrictedTraverse(item, None) if not subob_trans: log.warning('Object %s not found. No translation for %s ' 'will be set' % ( "/".join(path_trans + [item]), lang_trans)) else: if not subob.hasTranslation(lang_trans): linkTranslations( portal, [[(path + [item], language), (path_trans + [item], lang_trans)]]) log.debug('Setting translation for %s (%s): %s (%s)' '' % (path + [item], language, path_trans + [item], lang_trans)) else: log.warning('%s is already translated into %s!' % ( "/".join(path + [item]), lang_trans)) if subob and subob.portal_type == 'Folder': translate_folder( path + [item], language, path_trans + [item], lang_trans)
def testSubFolderLinking(self): todo=[[(["images", "logo"], "en"), (["plaatjes", "logo"], "nl")]] linkTranslations(self.folder, todo) self.assertEqual(self.folder.images.logo.getLanguage(), "en") self.assertEqual(self.folder.plaatjes.logo.getLanguage(), "nl") self.assertEqual(self.folder.images.logo.getTranslation("nl"), self.folder.plaatjes.logo) self.assertEqual(self.folder.plaatjes.logo.getTranslation("en"), self.folder.images.logo) self.assertEqual(self.folder.images.logo.isCanonical(), True)
def testSubFolderLinking(self): todo = [[(["images", "logo"], "en"), (["plaatjes", "logo"], "nl")]] linkTranslations(self.folder, todo) self.assertEqual(self.folder.images.logo.getLanguage(), "en") self.assertEqual(self.folder.plaatjes.logo.getLanguage(), "nl") self.assertEqual(self.folder.images.logo.getTranslation("nl"), self.folder.plaatjes.logo) self.assertEqual(self.folder.plaatjes.logo.getTranslation("en"), self.folder.images.logo) self.assertEqual(self.folder.images.logo.isCanonical(), True)
def testSameFolderLinking(self): todo=[[(["frontpage"], "en"), (["voorpagina"], "nl")]] linkTranslations(self.folder, todo) self.assertEqual(self.folder.frontpage.getLanguage(), "en") self.assertEqual(self.folder.voorpagina.getLanguage(), "nl") self.assertEqual(self.folder.frontpage.isTranslation(), True) self.assertEqual(self.folder.voorpagina.isTranslation(), True) self.assertEqual(self.folder.voorpagina.getTranslation("en"), self.folder.frontpage) self.assertEqual(self.folder.frontpage.getTranslation("nl"), self.folder.voorpagina) self.assertEqual(self.folder.frontpage.isCanonical(), True)
def testSameFolderLinking(self): todo = [[(["frontpage"], "en"), (["voorpagina"], "nl")]] linkTranslations(self.folder, todo) self.assertEqual(self.folder.frontpage.getLanguage(), "en") self.assertEqual(self.folder.voorpagina.getLanguage(), "nl") self.assertEqual(self.folder.frontpage.isTranslation(), True) self.assertEqual(self.folder.voorpagina.isTranslation(), True) self.assertEqual(self.folder.voorpagina.getTranslation("en"), self.folder.frontpage) self.assertEqual(self.folder.frontpage.getTranslation("nl"), self.folder.voorpagina) self.assertEqual(self.folder.frontpage.isCanonical(), True)
def linkTranslations(self, PID): articles = self.portal_catalog(Type='Volume', getPID=PID) LOG('DIPP', INFO, PID) LOG('DIPP', INFO, len(articles)) lang = self.Language() path = self.getPhysicalPath() todo = [] translation = [(path, lang)] for article in articles: obj = article.getObject() lang = obj.Language() path = obj.getPhysicalPath() translation.append((path, lang)) todo.append(translation) LOG('DIPP', INFO, todo) utils.linkTranslations(self, todo)
def setImportedContentLanguages(context): portal = context.getSite() for id in imported_content: language = 'de' ob = portal.unrestrictedTraverse(id, None) if not ob: log.warning('Object %s not found. Please run import step "Recensio' ' initial content"' % (id)) continue if id in ['images']: language = '' doSetLanguage(ob, language) def translate_folder(path, language, path_trans, lang_trans): ob = portal.unrestrictedTraverse(path, None) ob_trans = portal.unrestrictedTraverse(path_trans, None) for item in ob.objectIds(): subob = ob.unrestrictedTraverse(item, None) subob_trans = ob_trans.unrestrictedTraverse(item, None) if not subob_trans: log.warning('Object %s not found. No translation for %s ' 'will be set' % ( "/".join(path_trans + [item]), lang_trans)) else: if not subob.hasTranslation(lang_trans): linkTranslations( portal, [[(path + [item], language), (path_trans + [item], lang_trans)]]) log.debug('Setting translation for %s (%s): %s (%s)' '' % (path + [item], language, path_trans + [item], lang_trans)) else: log.warning('%s is already translated into %s!' % ( "/".join(path + [item]), lang_trans)) if subob and subob.portal_type == 'Folder': translate_folder( path + [item], language, path_trans + [item], lang_trans) if language: for lang_trans in ['en', 'fr']: id_trans = id + '-' + lang_trans ob_trans = portal.unrestrictedTraverse(id_trans, None) if ob_trans: if not ob.hasTranslation(lang_trans): linkTranslations( portal, [[([id], language), ([id_trans], lang_trans)]]) else: log.warning('%s is already translated into %s!' % ( id, lang_trans)) if ob.portal_type == 'Folder': translate_folder( [id], language, [id_trans], lang_trans) else: log.warning('Object %s not found. No translation for %s ' 'will be set' % (id_trans, lang_trans)) portal.setLanguage('de')