/************************************************************************** OmegaT - Computer Assisted Translation (CAT) tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk Copyright (C) 2006 Didier Briel Home page: http://www.omegat.org/ Support center: http://groups.yahoo.com/group/OmegaT/ This file is part of OmegaT. OmegaT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OmegaT 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **************************************************************************/ package org.omegat.filters2.hhc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import org.htmlparser.Parser; import org.htmlparser.util.ParserException; import org.omegat.filters2.FilterContext; import org.omegat.filters2.Instance; import org.omegat.filters2.TranslationException; import org.omegat.filters2.html2.HTMLFilter2; import org.omegat.util.OStrings; /** * A filter to translate HHC and HHK files. * <p> * * @author Maxym Mykhalchuk * @author Didier Briel */ public class HHCFilter2 extends HTMLFilter2 { @Override protected boolean requirePrevNextFields() { return true; } @Override public void processFile(BufferedReader infile, BufferedWriter outfile, FilterContext fc) throws IOException, TranslationException { StringBuilder all = null; try { all = new StringBuilder(); char[] cbuf = new char[1000]; int len = -1; while ((len = infile.read(cbuf)) > 0) { all.append(cbuf, 0, len); } } catch (OutOfMemoryError e) { // out of memory? all = null; System.gc(); throw new IOException(OStrings.getString("HHC__FILE_TOO_BIG")); } Parser parser = new Parser(); try { parser.setInputHTML(all.toString()); parser.visitAllNodesWith(new HHCFilterVisitor(this, outfile)); } catch (ParserException pe) { System.out.println(pe); } } // //////////////////////////////////////////////////////////////////////// @Override public String getFileFormatName() { return OStrings.getString("HHC__FILTER_NAME"); } @Override public Instance[] getDefaultInstances() { return new Instance[] { new Instance("*.hhc"), new Instance("*.hhk") }; } /** * Returns the editing hint for HHC filter. * <p> * In English, the hint is as follows: <br> * Note: Source File Encoding setting affects only the HHC and HHK files * that have no encoding declaration inside. If a HHC or HHK file has an * encoding declaration, it will be used disregarding any value you set in * this dialog. */ @Override public String getHint() { return OStrings.getString("HHC_NOTE"); } /** * Returns true to indicate that a filter has options. * * @return False, because HHC filter has no options. */ @Override public boolean hasOptions() { return false; } }