Example #1
0
def merge():
    if Lokalize.projectOverview(): files=Lokalize.projectOverview().selectedItems()
    elif Editor.isValid():         files=[Editor.currentFile()]

    forms = Kross.module("forms")

    if not files: return
    if files[0].endswith('.po'):
        mergeOne=mergeOneGettext
        if os.system('which msgmerge')!=0:
            forms.showMessageBox("Error", i18n("Gettext not found"), i18n("Install gettext package for this feature to work"))
    else:
        if not tt_present:
            print 'error'
            #forms = Kross.module("forms")
            #forms.showMessageBox("Error", i18n("Translate-tolkit not found"), i18n("Install translate-toolkit package for this feature to work"))
        mergeOne=mergeOneOdf

    okCount=0
    progress=0
    if len(files)>1:
        progress=forms.showProgressDialog(i18n("Updating from templates..."), "")
        progress.setRange(0,len(files))
        #progress.setMaximum(len(files))
        counter=0

    for po in files:
        if progress:
            progress.addText(po)
            progress.setValue(counter)
            counter+=1

        ok=mergeOne(po)
        okCount+=ok
        if ok:
            editor=Lokalize.editorForFile(po)
            if editor:
                editor.reloadFile()

    if progress:
        progress.deleteLater()
    if mergeOne==mergeOneGettext:
        if len(files)==1:
            pot=potForPo(files[0])
            if okCount:
                potModifSeconds=os.path.getmtime(pot)
                potModifDelta=datetime.timedelta(seconds=time.time()-potModifSeconds)
                potModifStr=time.strftime('%X %x %Z', time.localtime(potModifSeconds))
                forms.showMessageBox("Information", i18n("Merge has been completed"), i18n("Merge has been completed.\nTemplate modification time: %1 (%2 days ago).",[str(potModifStr),potModifDelta.days]))
            else:
                if not os.path.exists(pot):
                    forms.showMessageBox("Error", i18n("Merge failed."), i18n("Could not find template file for the merge:\n%1",[pot]))
Example #2
0
def run_standalone():
    import subprocess
    
    ourPath=([p for p in sys.path if os.path.exists(p+'/newprojectwizard_win.py')]+[''])[0]
    os.system(ourPath+'/newprojectwizard.py')

    try:file=open(ourPath+'/projectconf.tmp','r')
    except: return
    projectFile=file.readline()[:-1]
    projectKind=file.readline()[:-1]
    projectName=file.readline()[:-1]
    projectSourceLang=file.readline()[:-1]
    projectTargetlang=file.readline()[:-1]
    file.close()
    os.remove(ourPath+'/projectconf.tmp')

    Project.init(projectFile, projectKind, projectName, projectSourceLang, projectTargetlang)
    Lokalize.openProject(projectFile)
Example #3
0
def merge():
    if Lokalize.projectOverview():
        files = Lokalize.projectOverview().selectedItems()
    elif Editor.isValid():
        files = [Editor.currentFile()]

    forms = Kross.module("forms")

    if not files: return
    if files[0].endswith('.po'):
        mergeOne = mergeOneGettext
        if os.system('which msgmerge') != 0:
            forms.showMessageBox(
                "Error", i18n("Gettext not found"),
                i18n("Install gettext package for this feature to work"))
    else:
        if not tt_present:
            print 'error'
            #forms = Kross.module("forms")
            #forms.showMessageBox("Error", i18n("Translate-tolkit not found"), i18n("Install translate-toolkit package for this feature to work"))
        mergeOne = mergeOneOdf

    okCount = 0
    progress = 0
    if len(files) > 1:
        progress = forms.showProgressDialog(i18n("Updating from templates..."),
                                            "")
        progress.setRange(0, len(files))
        #progress.setMaximum(len(files))
        counter = 0

    for po in files:
        if progress:
            progress.addText(po)
            progress.setValue(counter)
            counter += 1

        ok = mergeOne(po)
        okCount += ok
        if ok:
            editor = Lokalize.editorForFile(po)
            if editor:
                editor.reloadFile()

    if progress:
        progress.deleteLater()
    if mergeOne == mergeOneGettext:
        if len(files) == 1:
            pot = potForPo(files[0])
            if okCount:
                potModifSeconds = os.path.getmtime(pot)
                potModifDelta = datetime.timedelta(seconds=time.time() -
                                                   potModifSeconds)
                potModifStr = time.strftime('%X %x %Z',
                                            time.localtime(potModifSeconds))
                forms.showMessageBox(
                    "Information", i18n("Merge has been completed"),
                    i18n(
                        "Merge has been completed.\nTemplate modification time: %1 (%2 days ago).",
                        [str(potModifStr), potModifDelta.days]))
            else:
                if not os.path.exists(pot):
                    forms.showMessageBox(
                        "Error", i18n("Merge failed."),
                        i18n("Could not find template file for the merge:\n%1",
                             [pot]))
Example #4
0
# -*- coding: utf-8 -*-
import Kross
import Lokalize
import Project
import Editor
import sys,os,re
from translate.convert import xliff2odf
from translate.storage import factory

Lokalize.busyCursor(True)

class XliffInput:
    def __init__(self, name, contents):
        self.name=name
        self.contents=contents
        self.read=lambda: contents
    def close(self): return


def convert():
    if not Editor.isValid() or Editor.currentFile()=='': return

    xliffpathname=Editor.currentFile()
    (path, filename)=os.path.split(xliffpathname)
    if not filename.endswith('.xlf'): return

    store = factory.getobject(xliffpathname)
    odfpathname=store.getfilenames()[0]
    
    if odfpathname.startswith('NoName'):
        print 'translate-toolkit is too old'
Example #5
0
import os,sys
import Lokalize

for p in sys.path:
    if os.path.exists(p+'/../scripts/lokalize') and not p.endswith('/scripts/lokalize'):
        sys.path=sys.path+[p+'/../scripts/lokalize']

try:
    import multitarget
except:
    print "svn up l10n-kde4/scripts OR fix search path?"


observer=multitarget.MultiTarget(Lokalize,'/nn/','/nb/')
Lokalize.connect('editorActivated()',observer.editorActivated)
Example #6
0
class ProjectAssistant(QWizard):
    def __init__(self):
        QWizard.__init__(self)
        for p in pages:
            exec "self.addPage( %s(self) )" % p

        #for page in [self.page(pageId) for pageId in self.pageIds()]:
        for page in [self.page(pages.index(pageId)) for pageId in pages]:
            self.connect(page,SIGNAL("nextRequested()"),self,SLOT("next()"))
            
        self.connect(self,SIGNAL("finished(int)"),self,SLOT("deleteLater()"))
        self.connect(self,SIGNAL("accepted()"),self.handleAccept)

    def handleAccept(self):
        fs=lambda name:self.field(name).toString()
        fi=lambda name:self.field(name).toInt()[0]
        fb=lambda name:self.field(name).toBool()

        kinds=['odf','kde']
        projectKind=kinds[self.page(0).group.checkedId()]
        langs=allLanguagesList

        doInit=True
        projectfilename='index.lokalize'
        #if projectKind=='odf' and fb('odf-template-source-files'):
            #projectfilename=QFileInfo(fs('odf-template-files')).baseName()+'.lokalize'

        if projectKind=='odf':
            loc=QDir(fs('location'))
            loc.mkdir(fs('name'))
            projectFilePath=loc.absoluteFilePath(fs('name')+'/'+projectfilename)
            targetlang=langs[fi('target-lang')]
            name=fs('name').toLower()
        elif projectKind=='kde':
            name='kde'
            loc=QDir(fs('kde-existing-location'))
            targetlang=loc.dirName()
            print 'project lang: %s' % targetlang
            print 'project loc: %s' % fs('kde-existing-location')

            l=loc.entryList(QStringList('*.lokalize'), QDir.Filter(QDir.Files))
            if len(l):
                doInit=False
                projectfilename=l[0]
            projectFilePath=loc.absoluteFilePath(projectfilename)

        if projectKind=='odf':
            files=[fs('odf-template-files')]
            for f in files:
                info=QFileInfo(f)
                xlf=QDir.toNativeSeparators(info.absolutePath()+'/'+info.baseName()+'.xlf')
                #this makes Lokalize crash on close
                #try: odf2xliff.main(tt_args(unicode(f), unicode(xlf)))
                #except:
                if True:
                    print 'odf2xliff via subprocess.call', unicode(f),  unicode(xlf)
                    try:
                        retcode = subprocess.call(['odf2xliff', unicode(f),  unicode(xlf)])
                        print >>sys.stderr
                    except OSError, e:
                        print >>sys.stderr, "Execution failed:", e


        self.projectName=name+'-'+targetlang
        self.projectSourceLang=langs[fi('source-lang')]
        self.projectTargetLang=targetlang
        self.projectKind=projectKind
        self.projectFilePath=projectFilePath

        self.projectShouldBeInitialized=doInit
        if doInit and not standalone:
            Lokalize.openProject(projectFilePath)
            Project.init(projectFilePath, projectKind, self.projectName, self.projectSourceLang, targetlang)
            Lokalize.openProject(projectFilePath)
Example #7
0
# -*- coding: utf-8 -*-
import Kross
import Lokalize
import Project
import Editor
import sys, os, re
from translate.convert import xliff2odf
from translate.storage import factory

Lokalize.busyCursor(True)


class XliffInput:
    def __init__(self, name, contents):
        self.name = name
        self.contents = contents
        self.read = lambda: contents

    def close(self):
        return


def convert():
    if not Editor.isValid() or Editor.currentFile() == '': return

    xliffpathname = Editor.currentFile()
    (path, filename) = os.path.split(xliffpathname)
    if not filename.endswith('.xlf'): return

    store = factory.getobject(xliffpathname)
    odfpathname = store.getfilenames()[0]