Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz870876 add offlinepo strategy for reversible mapping of po files …
Browse files Browse the repository at this point in the history
…from non-po projects
  • Loading branch information
davidmason committed Feb 28, 2013
1 parent a3ab9da commit d335688
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 3 deletions.
Expand Up @@ -60,6 +60,8 @@ public abstract class PushPullCommand<O extends PushPullOptions> extends Configu
{
private static final Logger log = LoggerFactory.getLogger(PushPullCommand.class);

protected static final String PROJECT_TYPE_OFFLINE_PO = "offlinepo";

protected final ISourceDocResource sourceDocResource;
protected final ITranslatedDocResource translationResources;
protected URI uri;
Expand Down
@@ -0,0 +1,46 @@
/*
* Copyright 2013, Red Hat, Inc. and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.zanata.client.commands.pull;

import org.zanata.adapter.po.PoWriter2;

/**
* Similar to {@link GettextDirStrategy} but uses msgctxt to map text flow id.
*
* @author David Mason, <a href="mailto:damason@redhat.com">damason@redhat.com</a>
*/
public class OfflinePoStrategy extends GettextDirStrategy
{
private PoWriter2 poWriter;

public OfflinePoStrategy(PullOptions opts)
{
super(opts);
poWriter = new PoWriter2(opts.getEncodeTabs(), true);
}

@Override
protected PoWriter2 getPoWriter()
{
return poWriter;
}

}
Expand Up @@ -53,6 +53,7 @@ public class PullCommand extends PushPullCommand<PullOptions>
strategies.put(PROJECT_TYPE_PUBLICAN, GettextDirStrategy.class);
strategies.put(PROJECT_TYPE_XLIFF, XliffStrategy.class);
strategies.put(PROJECT_TYPE_XML, XmlStrategy.class);
strategies.put(PROJECT_TYPE_OFFLINE_PO, OfflinePoStrategy.class);
}

public PullCommand(PullOptions opts)
Expand Down
Expand Up @@ -43,7 +43,7 @@

public abstract class AbstractGettextPushStrategy extends AbstractPushStrategy
{
PoReader2 poReader = new PoReader2();
private PoReader2 poReader;

public AbstractGettextPushStrategy()
{
Expand Down Expand Up @@ -79,7 +79,7 @@ public Resource loadSrcDoc(File sourceDir, String docName) throws IOException
InputSource potInputSource = new InputSource(bis);
potInputSource.setEncoding("utf8");
// load 'srcDoc' from pot/${docID}.pot
return poReader.extractTemplate(potInputSource, new LocaleId(getOpts().getSourceLang()), docName);
return getPoReader().extractTemplate(potInputSource, new LocaleId(getOpts().getSourceLang()), docName);
}
finally
{
Expand All @@ -100,7 +100,7 @@ public void visitTranslationResources(String docName, Resource srcDoc, Translati
{
InputSource inputSource = new InputSource(bis);
inputSource.setEncoding("utf8");
TranslationsResource targetDoc = poReader.extractTarget(inputSource);
TranslationsResource targetDoc = getPoReader().extractTarget(inputSource);
callback.visit(locale, targetDoc);
}
finally
Expand All @@ -111,4 +111,13 @@ public void visitTranslationResources(String docName, Resource srcDoc, Translati
}
}

protected PoReader2 getPoReader()
{
if (poReader == null)
{
poReader = new PoReader2();
}
return poReader;
}

}
@@ -0,0 +1,44 @@
/*
* Copyright 2013, Red Hat, Inc. and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.zanata.client.commands.push;

import org.zanata.adapter.po.PoReader2;

/**
* Similar to {@link GettextDirStrategy} but uses msgctxt to map text flow id.
*
* @author David Mason, <a href="mailto:damason@redhat.com">damason@redhat.com</a>
*/
public class OfflinePoStrategy extends GettextDirStrategy
{
private PoReader2 poReader;

public OfflinePoStrategy()
{
poReader = new PoReader2(true);
}

@Override
protected PoReader2 getPoReader()
{
return poReader;
}
}
Expand Up @@ -71,6 +71,7 @@ public static interface TranslationResourcesVisitor
strategies.put(PROJECT_TYPE_PUBLICAN, new GettextDirStrategy());
strategies.put(PROJECT_TYPE_XLIFF, new XliffStrategy());
strategies.put(PROJECT_TYPE_XML, new XmlStrategy());
strategies.put(PROJECT_TYPE_OFFLINE_PO, new OfflinePoStrategy());
}

public PushCommand(PushOptions opts)
Expand Down

0 comments on commit d335688

Please sign in to comment.