steering-wheel/TouchGFX/Middlewares/ST/touchgfx/framework/tools/textconvert/translations.rb

72 lines
2.2 KiB
Ruby

#!env ruby
# Copyright (c) 2018(-2023) STMicroelectronics.
# All rights reserved.
#
# This file is part of the TouchGFX 4.21.2 distribution.
#
# This software is licensed under terms that can be found in the LICENSE file in
# the root directory of this software component.
# If no LICENSE file comes with this software, it is provided AS-IS.
#
###############################################################################/
$:.unshift File.dirname(__FILE__)
require 'lib/text_database_validator'
require 'lib/translation_io'
require 'lib/version'
WINDOWS_LINE_ENDINGS = "\r\n"
UNIX_LINE_ENDINGS = "\n"
#on windows/mingw file.write will it self translate \n to \r\n, on linux not
LINE_ENDINGS = RUBY_PLATFORM.match(/linux/) ? WINDOWS_LINE_ENDINGS : UNIX_LINE_ENDINGS
def root_dir
# Get the dirname of this (main.rb) file:
@root_dir ||= File.dirname(__FILE__)
end
class Main
def self.banner
<<-BANNER
Export and import the text database for translation using e.g. Excel
Usage: #{File.basename($0)} {export|import} assets/texts/texts.xml translations.xlsx [language]*
Export: Will create the "translations.xlsx" by extracting the texts for
all languages from the given assets/texts/texts.xml
Import: Will merge the text translations from "translations.xlsx" into
the given assets/texts/texts.xml. Only the actual texts are
imported, not alignment and text direction.
If no languages are specified, all languages will be handled,
otherwise only the specified languages are imported/exported.
BANNER
end
abort self.banner if ARGV.count < 3
option = ARGV.shift
abort self.banner if option!='import' && option!='export'
file_name = ARGV.shift # texts.xml
translation_name = ARGV.shift # translations.xlsx
languages = ARGV # Remaining arguments are the languages
begin
TextDatabaseValidator.new.validate(file_name)
translation_io = TranslationIO.new(file_name, translation_name)
if option == 'export'
translation_io.exportExcel(languages)
else option=='import'
translation_io.importExcel(languages)
end
rescue SystemExit => e
rescue Exception => e
STDERR.puts e
STDERR.puts e.backtrace if ENV['DEBUG']
abort "An error occurred during translations #{option}!"
end
end