Index: build/mac/generate_localizer |
=================================================================== |
--- build/mac/generate_localizer (revision 30217) |
+++ build/mac/generate_localizer (working copy) |
@@ -1,133 +0,0 @@ |
-#!/usr/bin/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. |
- |
-# Usage: generate_localizer [xib_path] [output_dot_h_path] [output_dot_mm_path] |
-# |
-# Extracts all the localizable strings that start with "^IDS" from the given |
-# xib file, and then generates a localizer to process those strings. |
- |
-import os.path |
-import plistlib |
-import subprocess |
-import sys |
- |
-generate_localizer = "me" |
- |
-localizer_template_h = \ |
-'''// ---------- WARNING ---------- |
-// THIS IS A GENERATED FILE, DO NOT EDIT IT DIRECTLY! |
-// |
-// This header includes the table used by ui_localizer.mm. Nothing else should |
-// be including this file. |
-// |
-// Generated by %(generate_localizer)s. |
-// Generated from: |
-// %(xib_files)s |
-// |
- |
-#ifndef UI_LOCALIZER_TABLE_H_ |
-#define UI_LOCALIZER_TABLE_H_ |
- |
-static const UILocalizerResourceMap kUIResources[] = { |
-%(resource_map_list)s }; |
-static const size_t kUIResourcesSize = arraysize(kUIResources); |
- |
-#endif // UI_LOCALIZER_TABLE_H_ |
-''' |
- |
-def xib_localizable_strings(xib_path): |
- """Runs ibtool to extract the localizable strings data from the xib.""" |
- ibtool_cmd = subprocess.Popen(['/usr/bin/ibtool', '--localizable-strings', |
- xib_path], |
- stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
- (cmd_out, cmd_err) = ibtool_cmd.communicate() |
- if ibtool_cmd.returncode: |
- sys.stderr.write('%s:0: error: ibtool on "%s" failed (%d):\n%s\n' % |
- (generate_localizer, xib_path, ibtool_cmd.returncode, |
- cmd_err)) |
- return None |
- return cmd_out |
- |
-def extract_resource_constants(plist_localizable_strings_dict, xib_path): |
- """Extracts all the values that start with ^IDS from the localizable |
- strings plist entry.""" |
- constants_list = [] |
- for item_dict in plist_localizable_strings_dict.itervalues(): |
- for item_value in item_dict.itervalues(): |
- if item_value.startswith('^IDS'): |
- constants_list.append(item_value) |
- elif item_value.startswith('IDS'): |
- sys.stderr.write( |
- '%s:0: warning: %s found a string with questionable prefix, "%s"\n' |
- % (xib_path, generate_localizer, item_value)); |
- return constants_list |
- |
-def generate_file_contents(constants_list, xib_paths): |
- """Generates the header listing the constants.""" |
- # Bounce through a set to uniq the strings, sort the list, then build the |
- # values we need from it. |
- constants_list = sorted(set(constants_list)) |
- constant_list_str = '' |
- for item in constants_list: |
- parts = item.split('$', 1) |
- label_id = parts[0] |
- if len(parts) == 2: |
- label_arg_id = parts[1] |
- else: |
- label_arg_id = '0' |
- constant_list_str += ' { "%s", %s, %s },\n' % \ |
- ( item, label_id[1:], label_arg_id) |
- # Assemble the contents from the templates. |
- values_dict = { |
- 'resource_map_list': constant_list_str, |
- 'generate_localizer': generate_localizer, |
- 'xib_files': "\n// ".join(xib_paths), |
- } |
- h_file = localizer_template_h % values_dict |
- return h_file |
- |
- |
-def Main(argv=None): |
- global generate_localizer |
- generate_localizer = os.path.basename(argv[0]) |
- |
- # Args |
- if len(argv) < 3: |
- sys.stderr.write('%s:0: error: Expected output file and then xibs\n' % |
- generate_localizer); |
- return 1 |
- output_path = argv[1]; |
- xib_paths = argv[2:] |
- |
- full_constants_list = [] |
- for xib_path in xib_paths: |
- # Run ibtool and convert to something Python can deal with |
- plist_string = xib_localizable_strings(xib_path) |
- if not plist_string: |
- return 2 |
- plist = plistlib.readPlistFromString(plist_string) |
- |
- # Extract the resource constant strings |
- localizable_strings = plist['com.apple.ibtool.document.localizable-strings'] |
- constants_list = extract_resource_constants(localizable_strings, xib_path) |
- if not constants_list: |
- sys.stderr.write("%s:0: warning: %s didn't find any resource strings\n" % |
- (xib_path, generate_localizer)); |
- full_constants_list.extend(constants_list) |
- |
- # Generate our file contents |
- h_file_content = \ |
- generate_file_contents(full_constants_list, xib_paths) |
- |
- # Write out the file |
- file_fd = open(output_path, 'w') |
- file_fd.write(h_file_content) |
- file_fd.close() |
- |
- return 0 |
- |
-if __name__ == '__main__': |
- sys.exit(Main(sys.argv)) |