diff --git a/bin/getloc.rb b/bin/getloc.rb index 4211e5d9b..17dfa49a8 100755 --- a/bin/getloc.rb +++ b/bin/getloc.rb @@ -1,10 +1,15 @@ #!/usr/bin/env ruby -def lang_mod(lang) +def astrid_code_to_getloc_code(lang) lang.sub("-r", "-") end -def export(tmp_files, src_files, lang, android) +def getloc_code_to_astrid_code(lang) + lang.sub("-", "-r") +end + +def export(tmp_files, lang, android, src_files_block) + src_files = src_files_block.call(lang) for i in 0...tmp_files.length %x(cp #{src_files[i]} #{tmp_files[i]}) if src_files[i] != tmp_files[i] end @@ -21,7 +26,7 @@ def export(tmp_files, src_files, lang, android) %x(curl --form file=@#{f} --user #{@user}:#{@password} https://api.getlocalization.com/astrid/api/update-master/) end else - lang_tmp = lang_mod(lang) + lang_tmp = astrid_code_to_getloc_code(lang) tmp_files.each do |f| puts "Updating language file #{f}" name = File.basename(f) @@ -32,7 +37,7 @@ end -def import(tmp_files, dst_files, lang, android) +def import(tmp_files, lang, android, dst_files_block) if lang == "master" tmp_dir = File.dirname(tmp_files[0]) tmp_all = File.join(tmp_dir, "all.zip") @@ -43,10 +48,13 @@ def import(tmp_files, dst_files, lang, android) %x(tar xzf #{tmp_all} -C #{tmp_all_dir}) # Get all translations - Dir.foreach(tmp_all_dir) do |f| - if (f != "." && f != "..") + Dir.foreach(tmp_all_dir) do |l| + if (l != "." && l != "..") + lang_local = getloc_code_to_astrid_code(l) + dst_files = dst_files_block.call(lang_local) + for i in 0...tmp_files.length - file = File.join(tmp_all_dir, f, File.basename(t)) + file = File.join(tmp_all_dir, l, File.basename(tmp_files[i])) %x(sed -i '' "s/'/\\\\\\'/g" #{file}) if android puts "Moving #{file} to #{dst_files[i]}" %x(mv #{file} #{dst_files[i]}) @@ -56,7 +64,8 @@ def import(tmp_files, dst_files, lang, android) %x(rm -rf #{tmp_all_dir}) %x(rm #{tmp_all}) else - lang_tmp = lang_mod(lang) + lang_tmp = astrid_code_to_getloc_code(lang) + dst_files = dst_files_block.call(lang) for i in 0...tmp_files.length name = File.basename(tmp_files[i]) %x(curl --user #{@user}:#{@password} https://api.getlocalization.com/astrid/api/translations/file/#{name}/#{lang_tmp}/ -o #{tmp_files[i]}) @@ -81,17 +90,18 @@ def getloc(cmd, platform, lang) tmp_files = ["translations/strings.xml", "translations/strings-api.xml"] if lang == "master" && cmd == "export" %x[./bin/catxml astrid/res/values/strings*.xml > #{tmp_files[0]}] - src_files = ["translations/strings.xml", "api/res/values/strings.xml"] + src_files = Proc.new { |l| ["translations/strings.xml", "api/res/values/strings.xml"] } else - src_files = ["astrid/res/values-#{lang}/strings.xml", "api/res/values-#{lang}/strings.xml"] + src_files = Proc.new { |l| ["astrid/res/values-#{l}/strings.xml", "api/res/values-#{l}/strings.xml"] } end when "ios" tmp_files = ["Resources/Localizable.strings"] - lang_tmp = lang - lang_tmp = "en" if lang == "master" - src_files = ["Resources/Localizations/#{lang_tmp}.lproj/Localizable.strings"] - + if lang == "master" && cmd == "export" + src_files = Proc.new { |l| ["Resources/Localizations/en.lproj/Localizable.strings"] } + else + src_files = Proc.new { |l| ["Resources/Localizations/#{l}.lproj/Localizable.strings"] } + end when "web" puts "Web not yet supported." return @@ -103,10 +113,10 @@ def getloc(cmd, platform, lang) case cmd when "export" puts "Exporting #{lang} files" - export(tmp_files, src_files, lang, android) + export(tmp_files, lang, android, src_files) when "import" puts "Importing #{lang} files" - import(tmp_files, src_files, lang, android) + import(tmp_files, lang, android, src_files) else puts "Command #{cmd} not recognized. Should be one of 'export' or 'import'." return