Index: grit/format/chrome_messages_json.py |
=================================================================== |
--- grit/format/chrome_messages_json.py (revision 202) |
+++ grit/format/chrome_messages_json.py (working copy) |
@@ -1,57 +0,0 @@ |
-#!/usr/bin/env python |
-# Copyright (c) 2012 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. |
- |
-"""Formats as a .json file that can be used to localize Google Chrome |
-extensions.""" |
- |
-from json import JSONEncoder |
-import re |
-import types |
- |
-from grit import util |
-from grit.node import message |
- |
-def Format(root, lang='en', output_dir='.'): |
- """Format the messages as JSON.""" |
- yield '{\n' |
- |
- encoder = JSONEncoder(); |
- format = (' "%s": {\n' |
- ' "message": %s%s\n' |
- ' }') |
- placeholder_format = (' "%i": {\n' |
- ' "content": "$%i"\n' |
- ' }') |
- first = True |
- for child in root.ActiveDescendants(): |
- if isinstance(child, message.MessageNode): |
- id = child.attrs['name'] |
- if id.startswith('IDR_') or id.startswith('IDS_'): |
- id = id[4:] |
- |
- loc_message = encoder.encode(child.ws_at_start + child.Translate(lang) + |
- child.ws_at_end) |
- |
- # Replace $n place-holders with $n$ and add an appropriate "placeholders" |
- # entry. Note that chrome.i18n.getMessage only supports 9 placeholders: |
- # https://developer.chrome.com/extensions/i18n#method-getMessage |
- placeholders = '' |
- for i in range(1, 10): |
- if loc_message.find('$%d' % i) == -1: |
- break |
- loc_message = loc_message.replace('$%d' % i, '$%d$' % i) |
- if placeholders: |
- placeholders += ',\n' |
- placeholders += placeholder_format % (i, i) |
- |
- if not first: |
- yield ',\n' |
- first = False |
- |
- if placeholders: |
- placeholders = ',\n "placeholders": {\n%s\n }' % placeholders |
- yield format % (id, loc_message, placeholders) |
- |
- yield '\n}\n' |