| #************************************************************** |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #************************************************************** |
| |
| from l10ntool import AbstractL10nTool |
| from sdf import SdfEntity |
| import sys |
| import shutil |
| |
| class Xtxex(AbstractL10nTool): |
| _resource_type = "xtx" |
| |
| def __init__(self): |
| AbstractL10nTool.__init__(self) |
| |
| def merge_file(self, inputfilename, outputfilename, parsed_file_ref, lang, is_forced_lang, sdfdata): |
| # Special handling for en-US files |
| if lang == "en-US": |
| mod_outputfilename = outputfilename |
| # mod here if needed |
| self.copy_file(inputfilename, mod_outputfilename) |
| return |
| # merge usual lang |
| sdfline = self.prepare_sdf_line(inputfilename,lang) |
| if sdfline.get_id() in sdfdata: |
| line = sdfdata[sdfline.get_id()].text.replace("\\n", '\n') |
| self.make_dirs(outputfilename) |
| try: |
| f = open(outputfilename, "w+") |
| f.write(line) |
| except IOError: |
| print("ERROR: Can not write file " + outputfilename) |
| sys.exit(-1) |
| else: |
| f.close() |
| return |
| # no sdf data found then copy en-US source file |
| if is_forced_lang: |
| self.copy_file(inputfilename, outputfilename) |
| |
| ##### Extract a single File |
| def extract_file(self, inputfile): |
| lines = [] |
| try: |
| f = open(inputfile, "r") |
| lines = f.readlines() |
| except IOError: |
| print("ERROR: Can not open file " + inputfile) |
| sys.exit(-1) |
| else: |
| f.close() |
| # remove legal header |
| lines = [line for line in lines if len(line) > 0 and not line[0] == '#'] |
| # escape all returns |
| lines = [line.replace('\n', "\\n") for line in lines] |
| line = ''.join(lines) |
| test = str(line) |
| if len(test.strip()): |
| sdf_entity = self.prepare_sdf_line(inputfile); |
| sdf_entity.text = line |
| return str(sdf_entity) |
| else: |
| return "" |
| |
| def prepare_sdf_line(self, inputfile="", lang=""): |
| if lang == "": |
| lang = self._source_language |
| return SdfEntity(project=self._options.project_name, source_file=self.get_filename_string(inputfile), |
| resource_type=self._resource_type, gid="none", lid="none", langid=lang,text="") |
| |
| run = Xtxex() |