From 4008df01afe4af94cf13f5859a9c101c43250de9 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Thu, 26 Mar 2015 17:16:42 +0000 Subject: Add translation gradle tasks --- app/app.iml | 2 ++ app/build.gradle | 1 + app/locale/.gitignore | 1 + config/translations.gradle | 83 ++++++++++++++++++++++++++++++++++++++++++++++ locale/.gitignore | 1 - 5 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 app/locale/.gitignore create mode 100644 config/translations.gradle delete mode 100644 locale/.gitignore diff --git a/app/app.iml b/app/app.iml index 0ee0215..b7eaca7 100644 --- a/app/app.iml +++ b/app/app.iml @@ -61,6 +61,7 @@ + @@ -82,6 +83,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index cd14b7a..d3da188 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'android-sdk-manager' apply plugin: 'com.android.application' apply from: '../config/quality.gradle' +apply from: '../config/translations.gradle' android { compileSdkVersion 20 diff --git a/app/locale/.gitignore b/app/locale/.gitignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/app/locale/.gitignore @@ -0,0 +1 @@ +* diff --git a/config/translations.gradle b/config/translations.gradle new file mode 100644 index 0000000..13d9659 --- /dev/null +++ b/config/translations.gradle @@ -0,0 +1,83 @@ +/* + * ConnectBot: simple, powerful, open-source SSH client for Android + * Copyright 2015 Kenny Root, Jeffrey Sharkey + * + * Licensed 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. + */ + +def localeDir = file('locale') +def launchpadImportBasename = 'launchpad-import' +def launchpadExportFile = getRootProject().file('launchpad-export.tar.gz') + +def android2poExec = 'a2po' +def android2poArgs = ['--groups', 'strings', + '--android', getProjectDir().getPath() + '/src/main/res', + '--gettext', localeDir, + '--template', 'fortune/fortune.pot', + '--layout', "'fortune/fortune-%(locale)s.po'"] + +task ensureLocalDirExists { + localeDir.mkdirs() +} + +task untarTranslations(type: Copy) { + from tarTree(resources.gzip(launchpadExportFile)) + into localeDir +} + +task translationsImport(type: Exec, dependsOn: 'untarTranslations') { + description "Import translations into ConnectBot from Launchpad's export function" + executable = android2poExec + args = ['import'] + android2poArgs + + // Save the output to print out. + standardOutput = new ByteArrayOutputStream() + errorOutput = new ByteArrayOutputStream() + ext.output = { + return standardOutput.toString() + } + ext.errs = { + return errorOutput.toString() + } + + doLast { + println() + println("Translations import output:") + println("${translationsImport.output}") + println("${translationsImport.errs}") + } +} + +task exportFromAndroid(type: Exec) { + executable = android2poExec + args = ['export'] + android2poArgs + + // Save the output to print out. + standardOutput = new ByteArrayOutputStream() + ext.output = { + return standardOutput.toString() + } +} + +task translationsExport(type: Tar, dependsOn: 'exportFromAndroid') { + description "Export translations from ConnectBot in a format suitable to import into Launchpad" + baseName = launchpadImportBasename + from localeDir + compression = Compression.GZIP + doLast { + println() + println('Import file into Launchpad:') + println(getArchivePath()) + println() + } +} diff --git a/locale/.gitignore b/locale/.gitignore deleted file mode 100644 index 72e8ffc..0000000 --- a/locale/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* -- cgit v1.2.3