def translateArtists(language="en"): import plone.api import transaction from plone.app.multilingual.interfaces import ITranslationManager container_path = "/nl/online-archief/kunstenaars" with plone.api.env.adopt_user(username="******"): container = plone.api.content.get(path=container_path) total = len(list(container)) curr = 0 for _id in list(container): curr += 1 print "Translating Person %s / %s to '%s'" %(curr, total, language) person = container[_id] if not ITranslationManager(person).has_translation(language): ITranslationManager(person).add_translation(language) person_translated = ITranslationManager(person).get_translation(language) person_translated.title = person.title person_translated.firstname = person.firstname person_translated.lastname = person.lastname person_translated.nationality = person.nationality person_translated.year = person.year person_translated.reindexObject() transaction.get().commit() print "Translation added for Person '%s'" %(person.title) else: print "Person '%s' already has a translation to '%s'" %(person.title, language) return True
def objectTranslated(ob, event): if ob: if ITranslatable.providedBy(ob): if getattr(ob, 'language', None) == "en" and getattr( ob, 'portal_type', None) in [ "Document", "Event", "News Item" ] and getattr(ob, 'id', '') not in ['slideshow']: createdEvent(ob, event) if not hasattr(ob, 'slideshow'): if ITranslationManager(ob).has_translation('nl'): original_ob = ITranslationManager(ob).get_translation( 'nl') if hasattr(original_ob, 'slideshow'): slideshow = original_ob['slideshow'] ITranslationManager(slideshow).add_translation( 'en') slideshow_trans = ITranslationManager( slideshow).get_translation('en') slideshow_trans.title = slideshow.title slideshow_trans.portal_workflow.doActionFor( slideshow_trans, "publish", comment="Slideshow published") for sitem in slideshow: if slideshow[sitem].portal_type == "Image": ITranslationManager( slideshow[sitem]).add_translation('en') trans = ITranslationManager( slideshow[sitem]).get_translation('en') trans.image = slideshow[sitem].image addCropToTranslation( slideshow[sitem], trans) ob.reindexObject() ob.reindexObject(idxs=["hasMedia"]) ob.reindexObject(idxs=["leadMedia"]) else: # no slideshow folder pass else: # no translation pass else: # has slideshow pass else: # wrong language pass else: # invalid object pass return
def translateExhibitions(language="en"): import plone.api import transaction from plone.app.multilingual.interfaces import ITranslationManager from zope.event import notify from zope.lifecycleevent import ObjectModifiedEvent container_path = "/nl/nu-en-verwacht/activiteiten" with plone.api.env.adopt_user(username="******"): container = plone.api.content.get(path=container_path) total = len(list(container)) curr = 0 for _id in list(container): curr += 1 print "Translating Exhibition %s / %s to '%s'" %(curr, total, language) exhibition = container[_id] if exhibition.portal_type == "Event": if not ITranslationManager(exhibition).has_translation(language): ITranslationManager(exhibition).add_translation(language) exhibition_translated = ITranslationManager(exhibition).get_translation(language) exhibition_translated.title = exhibition.title exhibition_translated.start = exhibition.start exhibition_translated.end = exhibition.end exhibition_translated.description = exhibition.description exhibition_translated.text = exhibition.text exhibition_translated.whole_day = exhibition.whole_day exhibition_translated.portal_workflow.doActionFor(exhibition_translated, "publish", comment="published") exhibition_translated.reindexObject() transaction.get().commit() if hasattr(exhibition, 'slideshow'): slideshow = exhibition['slideshow'] ITranslationManager(slideshow).add_translation(language) slideshow_trans = ITranslationManager(slideshow).get_translation(language) slideshow_trans.title = slideshow.title slideshow_trans.portal_workflow.doActionFor(slideshow_trans, "publish", comment="Slideshow published") for sitem in slideshow: if slideshow[sitem].portal_type == "Image": if not ITranslationManager(slideshow[sitem]).has_translation(language): ITranslationManager(slideshow[sitem]).add_translation(language) trans = ITranslationManager(slideshow[sitem]).get_translation(language) trans.image = slideshow[sitem].image exhibition_translated.reindexObject() exhibition_translated.reindexObject(idxs=["hasMedia"]) exhibition_translated.reindexObject(idxs=["leadMedia"]) notify(ObjectModifiedEvent(exhibition_translated)) print "Translation added for Exhibition '%s'" %(exhibition.title) else: print "Exhibition '%s' already has a translation to '%s'" %(exhibition.title, language) print "- Translating slideshow" exhibition_translated = ITranslationManager(exhibition).get_translation(language) if hasattr(exhibition, 'slideshow'): slideshow = exhibition['slideshow'] if ITranslationManager(slideshow).has_translation(language): print "-- Slideshow alredy has a translation." slideshow_trans = ITranslationManager(slideshow).get_translation(language) slideshow_trans.title = slideshow.title try: slideshow_trans.portal_workflow.doActionFor(slideshow_trans, "publish", comment="Slideshow published") except: pass print "--- Translating images" for sitem in slideshow: if slideshow[sitem].portal_type == "Image": if not ITranslationManager(slideshow[sitem]).has_translation(language): ITranslationManager(slideshow[sitem]).add_translation(language) trans = ITranslationManager(slideshow[sitem]).get_translation(language) trans.image = slideshow[sitem].image exhibition_translated.reindexObject() exhibition_translated.reindexObject(idxs=["hasMedia"]) exhibition_translated.reindexObject(idxs=["leadMedia"]) notify(ObjectModifiedEvent(exhibition_translated)) transaction.get().commit() else: print "-- Slideshow doesn't have a translation. Translating slideshow folder." ITranslationManager(slideshow).add_translation(language) slideshow_trans = ITranslationManager(slideshow).get_translation(language) slideshow_trans.title = slideshow.title try: slideshow_trans.portal_workflow.doActionFor(slideshow_trans, "publish", comment="Slideshow published") except: pass print "--- Translating images." for sitem in slideshow: if slideshow[sitem].portal_type == "Image": if not ITranslationManager(slideshow[sitem]).has_translation(language): ITranslationManager(slideshow[sitem]).add_translation(language) trans = ITranslationManager(slideshow[sitem]).get_translation(language) trans.image = slideshow[sitem].image exhibition_translated.reindexObject() exhibition_translated.reindexObject(idxs=["hasMedia"]) exhibition_translated.reindexObject(idxs=["leadMedia"]) notify(ObjectModifiedEvent(exhibition_translated)) transaction.get().commit() print "Slideshow and images for Exhibition '%s' are translated" %(exhibition.title) return True