Browse Source

mac: Fix en-US locale.

Cheng Zhao 11 years ago
parent
commit
f57bcfc429
3 changed files with 62 additions and 11 deletions
  1. 15 9
      atom.gyp
  2. 45 0
      tools/mac/apply_locales.py
  3. 2 2
      tools/mac/make_locale_dirs.sh

+ 15 - 9
atom.gyp

@@ -221,6 +221,14 @@
       'atom/app/atom_library_main.cc',
       'atom/app/atom_library_main.h',
     ],
+    'locales': [
+      'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB',
+      'en-US', 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he',
+      'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv',
+      'ml', 'mr', 'ms', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru',
+      'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk',
+      'vi', 'zh-CN', 'zh-TW',
+    ],
     'atom_source_root': '<!(python tools/atom_source_root.py)',
     'conditions': [
       ['OS=="win"', {
@@ -232,14 +240,7 @@
         ],
       }],  # OS=="win"
       ['OS=="mac"', {
-        'locales': [
-          'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en_GB',
-          'en_US', 'es_419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he',
-          'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv',
-          'ml', 'mr', 'ms', 'nb', 'nl', 'pl', 'pt_BR', 'pt_PT', 'ro', 'ru',
-          'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk',
-          'vi', 'zh_CN', 'zh_TW',
-        ],
+        'apply_locales_cmd': ['python', 'tools/mac/apply_locales.py'],
       }],  # OS=="mac"
     ],
   },
@@ -332,9 +333,14 @@
               # atom-shell supports those languages.
             {
               'postbuild_name': 'Make Empty Localizations',
+              'variables': {
+                'locale_dirs': [
+                  '>!@(<(apply_locales_cmd) -d ZZLOCALE.lproj <(locales))',
+                ],
+              },
               'action': [
                 'tools/mac/make_locale_dirs.sh',
-                '<@(locales)',
+                '<@(locale_dirs)',
               ],
             },
           ]

+ 45 - 0
tools/mac/apply_locales.py

@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# Copyright (c) 2009 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# TODO: remove this script when GYP has for loops
+
+import sys
+import optparse
+
+def main(argv):
+
+  parser = optparse.OptionParser()
+  usage = 'usage: %s [options ...] format_string locale_list'
+  parser.set_usage(usage.replace('%s', '%prog'))
+  parser.add_option('-d', dest='dash_to_underscore', action="store_true",
+                    default=False,
+                    help='map "en-US" to "en" and "-" to "_" in locales')
+
+  (options, arglist) = parser.parse_args(argv)
+
+  if len(arglist) < 3:
+    print 'ERROR: need string and list of locales'
+    return 1
+
+  str_template = arglist[1]
+  locales = arglist[2:]
+
+  results = []
+  for locale in locales:
+    # For Cocoa to find the locale at runtime, it needs to use '_' instead
+    # of '-' (http://crbug.com/20441).  Also, 'en-US' should be represented
+    # simply as 'en' (http://crbug.com/19165, http://crbug.com/25578).
+    if options.dash_to_underscore:
+      if locale == 'en-US':
+        locale = 'en'
+      locale = locale.replace('-', '_')
+    results.append(str_template.replace('ZZLOCALE', locale))
+
+  # Quote each element so filename spaces don't mess up GYP's attempt to parse
+  # it into a list.
+  print ' '.join(["'%s'" % x for x in results])
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv))

+ 2 - 2
tools/mac/make_locale_dirs.sh

@@ -33,7 +33,7 @@ fi
 cd "${RESOURCES_DIR}"
 
 for dir in "${@}"; do
-  if [[ ! -d "${dir}.lproj" ]]; then
-    mkdir "${dir}.lproj"
+  if [[ ! -d "${dir}" ]]; then
+    mkdir "${dir}"
   fi
 done