Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Side by Side Diff: grit/format/chrome_messages_json.py

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « grit/format/c_format_unittest.py ('k') | grit/format/chrome_messages_json_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Formats as a .json file that can be used to localize Google Chrome
7 extensions."""
8
9 from json import JSONEncoder
10 import re
11 import types
12
13 from grit import util
14 from grit.node import message
15
16 def Format(root, lang='en', output_dir='.'):
17 """Format the messages as JSON."""
18 yield '{\n'
19
20 encoder = JSONEncoder();
21 format = (' "%s": {\n'
22 ' "message": %s%s\n'
23 ' }')
24 placeholder_format = (' "%i": {\n'
25 ' "content": "$%i"\n'
26 ' }')
27 first = True
28 for child in root.ActiveDescendants():
29 if isinstance(child, message.MessageNode):
30 id = child.attrs['name']
31 if id.startswith('IDR_') or id.startswith('IDS_'):
32 id = id[4:]
33
34 loc_message = encoder.encode(child.ws_at_start + child.Translate(lang) +
35 child.ws_at_end)
36
37 # Replace $n place-holders with $n$ and add an appropriate "placeholders"
38 # entry. Note that chrome.i18n.getMessage only supports 9 placeholders:
39 # https://developer.chrome.com/extensions/i18n#method-getMessage
40 placeholders = ''
41 for i in range(1, 10):
42 if loc_message.find('$%d' % i) == -1:
43 break
44 loc_message = loc_message.replace('$%d' % i, '$%d$' % i)
45 if placeholders:
46 placeholders += ',\n'
47 placeholders += placeholder_format % (i, i)
48
49 if not first:
50 yield ',\n'
51 first = False
52
53 if placeholders:
54 placeholders = ',\n "placeholders": {\n%s\n }' % placeholders
55 yield format % (id, loc_message, placeholders)
56
57 yield '\n}\n'
OLDNEW
« no previous file with comments | « grit/format/c_format_unittest.py ('k') | grit/format/chrome_messages_json_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698