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

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

Issue 2948893002: Revert of Skip missing translations when generating JSON resources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 3 years, 6 months 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
« no previous file with comments | « no previous file | tools/grit/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
1 #!/usr/bin/env python
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 4 # found in the LICENSE file.
4 5
5 """Formats as a .json file that can be used to localize Google Chrome 6 """Formats as a .json file that can be used to localize Google Chrome
6 extensions.""" 7 extensions."""
7 8
8 from json import JSONEncoder 9 from json import JSONEncoder
9 import re 10 import re
10 import types 11 import types
(...skipping 12 matching lines...) Expand all
23 placeholder_format = (' "%i": {\n' 24 placeholder_format = (' "%i": {\n'
24 ' "content": "$%i"\n' 25 ' "content": "$%i"\n'
25 ' }') 26 ' }')
26 first = True 27 first = True
27 for child in root.ActiveDescendants(): 28 for child in root.ActiveDescendants():
28 if isinstance(child, message.MessageNode): 29 if isinstance(child, message.MessageNode):
29 id = child.attrs['name'] 30 id = child.attrs['name']
30 if id.startswith('IDR_') or id.startswith('IDS_'): 31 if id.startswith('IDR_') or id.startswith('IDS_'):
31 id = id[4:] 32 id = id[4:]
32 33
33 translation_missing = child.GetCliques()[0].clique.get(lang) is None;
34 if child.ShouldFallbackToEnglish() and translation_missing:
35 # Skip the string if it's not translated. Chrome will fallback
36 # to English automatically.
37 continue
38
39 loc_message = encoder.encode(child.ws_at_start + child.Translate(lang) + 34 loc_message = encoder.encode(child.ws_at_start + child.Translate(lang) +
40 child.ws_at_end) 35 child.ws_at_end)
41 36
42 # Replace $n place-holders with $n$ and add an appropriate "placeholders" 37 # Replace $n place-holders with $n$ and add an appropriate "placeholders"
43 # entry. Note that chrome.i18n.getMessage only supports 9 placeholders: 38 # entry. Note that chrome.i18n.getMessage only supports 9 placeholders:
44 # https://developer.chrome.com/extensions/i18n#method-getMessage 39 # https://developer.chrome.com/extensions/i18n#method-getMessage
45 placeholders = '' 40 placeholders = ''
46 for i in range(1, 10): 41 for i in range(1, 10):
47 if loc_message.find('$%d' % i) == -1: 42 if loc_message.find('$%d' % i) == -1:
48 break 43 break
49 loc_message = loc_message.replace('$%d' % i, '$%d$' % i) 44 loc_message = loc_message.replace('$%d' % i, '$%d$' % i)
50 if placeholders: 45 if placeholders:
51 placeholders += ',\n' 46 placeholders += ',\n'
52 placeholders += placeholder_format % (i, i) 47 placeholders += placeholder_format % (i, i)
53 48
54 if not first: 49 if not first:
55 yield ',\n' 50 yield ',\n'
56 first = False 51 first = False
57 52
58 if placeholders: 53 if placeholders:
59 placeholders = ',\n "placeholders": {\n%s\n }' % placeholders 54 placeholders = ',\n "placeholders": {\n%s\n }' % placeholders
60 yield format % (id, loc_message, placeholders) 55 yield format % (id, loc_message, placeholders)
61 56
62 yield '\n}\n' 57 yield '\n}\n'
OLDNEW
« no previous file with comments | « no previous file | tools/grit/grit/format/chrome_messages_json_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698