From 86682ca9b3143fe59dfe15ef388fa13a84d1e0bd Mon Sep 17 00:00:00 2001 From: Federico Bond Date: Sun, 31 Aug 2014 21:30:13 -0300 Subject: [PATCH] Fix localization in OS X --- app/src/processing/app/Language.java | 2 ++ app/src/processing/app/Platform.java | 3 ++- .../processing/app/platform/MacPlatform.java | 15 ++++++++++- build/build.xml | 2 ++ build/macosx/language_gen.py | 26 +++++++++++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) create mode 100755 build/macosx/language_gen.py diff --git a/app/src/processing/app/Language.java b/app/src/processing/app/Language.java index 483ad765a..70b1310cc 100644 --- a/app/src/processing/app/Language.java +++ b/app/src/processing/app/Language.java @@ -87,6 +87,7 @@ public class Language { static private String[] listSupported() { // List of languages in alphabetical order. (Add yours here.) + // Also remember to add it to the corresponding build/build.xml rule. final String[] SUPPORTED = { "de", // German, Deutsch "en", // English @@ -147,6 +148,7 @@ public class Language { } catch (Exception e) { e.printStackTrace(); } + Base.getPlatform().saveLanguage(language); } diff --git a/app/src/processing/app/Platform.java b/app/src/processing/app/Platform.java index c5248ec51..4144d3905 100644 --- a/app/src/processing/app/Platform.java +++ b/app/src/processing/app/Platform.java @@ -74,6 +74,7 @@ public class Platform { } } + public void saveLanguage(String languageCode) {} public void init(Base base) { this.base = base; @@ -216,4 +217,4 @@ public class Platform { null); } */ -} \ No newline at end of file +} diff --git a/app/src/processing/app/platform/MacPlatform.java b/app/src/processing/app/platform/MacPlatform.java index 0407fdc6f..0c7a911c9 100644 --- a/app/src/processing/app/platform/MacPlatform.java +++ b/app/src/processing/app/platform/MacPlatform.java @@ -24,6 +24,7 @@ package processing.app.platform; import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; import com.apple.eio.FileManager; @@ -47,6 +48,18 @@ public class MacPlatform extends Platform { } */ + public void saveLanguage(String language) { + String[] cmdarray = new String[]{ + "defaults", "write", + System.getProperty("user.home") + "/Library/Preferences/org.processing.app", + "AppleLanguages", "-array", language + }; + try { + Runtime.getRuntime().exec(cmdarray); + } catch (IOException e) { + Base.log("Error saving platform language: " + e.getMessage()); + } + } public void init(Base base) { super.init(base); @@ -205,4 +218,4 @@ public class MacPlatform extends Platform { protected String getDocumentsFolder() throws FileNotFoundException { return FileManager.findFolder(kUserDomain, kDocumentsFolderType); } -} \ No newline at end of file +} diff --git a/build/build.xml b/build/build.xml index af06d752f..614b9d817 100755 --- a/build/build.xml +++ b/build/build.xml @@ -496,6 +496,8 @@ value="macosx/work/Processing.app/Contents/Java" /> + + diff --git a/build/macosx/language_gen.py b/build/macosx/language_gen.py new file mode 100755 index 000000000..6a55283f2 --- /dev/null +++ b/build/macosx/language_gen.py @@ -0,0 +1,26 @@ +#!/usr/bin/python + +import os, re + +BASEDIR = os.path.dirname(os.path.realpath(__file__)) + +def supported_languages(): + path = "../../app/src/processing/app/languages/languages.txt" + with open(os.path.join(BASEDIR, path)) as f: + lines = f.read().splitlines() + + lines = filter(lambda l: re.match(r'^[a-z]{2}', l), lines) + lines = map(lambda l: re.sub(r'#.*', '', l).strip(), lines) + return lines + +def lproj_directory(lang): + path = "work/Processing.app/Contents/Resources/{}.lproj".format(lang) + return os.path.join(BASEDIR, path) + + +if __name__ == "__main__": + for lang in supported_languages(): + try: + os.mkdir(lproj_directory(lang)) + except OSError: + pass