From 023d53b986171272361f43e436117f5b62cdc3be Mon Sep 17 00:00:00 2001 From: Piotr Dziwinski Date: Tue, 12 May 2015 18:58:57 +0200 Subject: [PATCH] Fix mixed path separators on Windows --- i18n-tools/scripts/common.py | 15 ++++++++++++++- i18n-tools/scripts/process_translations.py | 16 ++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/i18n-tools/scripts/common.py b/i18n-tools/scripts/common.py index 3fab2607..cc953757 100644 --- a/i18n-tools/scripts/common.py +++ b/i18n-tools/scripts/common.py @@ -3,6 +3,19 @@ import io import os import polib +""" + Conversion functions to avoid mixed \ and / path separators under Windows +""" +def convert_input_path(slash_path): + if not slash_path: + return None + return slash_path.replace('/', os.sep) + +def convert_output_path(system_path): + if not system_path: + return None + return system_path.replace(os.sep, '/') + """ Works like shell's "mkdir -p" and also behaves nicely if given None argument """ @@ -55,7 +68,7 @@ class TemplateFile: """ def insert_entry(self, text, occurrence, type_comment): entry = self.current_catalog.find(text) - relative_file_name = os.path.relpath(occurrence.file_name, self.dir_name) + relative_file_name = convert_output_path(os.path.relpath(occurrence.file_name, self.dir_name)) occurrence = (relative_file_name, occurrence.line_number) if entry: entry.comment = self._merge_comment(entry.comment, type_comment) diff --git a/i18n-tools/scripts/process_translations.py b/i18n-tools/scripts/process_translations.py index 984e3ba8..c652dd41 100755 --- a/i18n-tools/scripts/process_translations.py +++ b/i18n-tools/scripts/process_translations.py @@ -4,7 +4,7 @@ import argparse import os import sys -from common import create_template_and_language_files, nice_mkdir +from common import create_template_and_language_files, nice_mkdir, convert_input_path, convert_output_path from translate_help import create_help_translation_jobs from translate_level import create_level_translation_jobs from translate_chaptertitles import create_chaptertitles_translation_jobs @@ -33,7 +33,15 @@ def parse_args(): parser.add_argument('--signal_file', help = 'Signal file to indicate successful operation') - return parser.parse_args() + args = parser.parse_args() + + args.input_dir = convert_input_path(args.input_dir) + args.po_dir = convert_input_path(args.po_dir) + args.output_dir = convert_input_path(args.output_dir) + args.output_subdir = convert_input_path(args.output_subdir) + args.signal_file = convert_input_path(args.signal_file) + + return args def preprocess_args(args): if not os.path.isdir(args.input_dir): @@ -73,8 +81,8 @@ def print_files(translation_jobs): input_files = [] output_files = [] for translation_job in translation_jobs: - input_files.append(translation_job.get_input_file_name()) - output_files.append(translation_job.get_output_file_name()) + input_files.append(convert_output_path(translation_job.get_input_file_name())) + output_files.append(convert_output_path(translation_job.get_output_file_name())) sys.stdout.write(';'.join(input_files)) sys.stdout.write('\n')