LEFT | RIGHT |
1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, |
2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
3 # | 3 # |
4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
7 # | 7 # |
8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 self.connection = urllib3.connection_from_url('https://api.crowdin.com/'
) | 42 self.connection = urllib3.connection_from_url('https://api.crowdin.com/'
) |
43 | 43 |
44 def raw_request(self, request_method, api_endpoint, query_params=(), **kwarg
s): | 44 def raw_request(self, request_method, api_endpoint, query_params=(), **kwarg
s): |
45 url = '/api/project/%s/%s?%s' % ( | 45 url = '/api/project/%s/%s?%s' % ( |
46 urllib.quote(self.project_name), | 46 urllib.quote(self.project_name), |
47 urllib.quote(api_endpoint), | 47 urllib.quote(api_endpoint), |
48 urllib.urlencode((('key', self.api_key),) + query_params), | 48 urllib.urlencode((('key', self.api_key),) + query_params), |
49 ) | 49 ) |
50 try: | 50 try: |
51 response = self.connection.request( | 51 response = self.connection.request( |
52 request_method, str(url), **kwargs, | 52 request_method, str(url), **kwargs |
53 ) | 53 ) |
54 except urllib3.exceptions.HTTPError: | 54 except urllib3.exceptions.HTTPError: |
55 logger.error('Connection to API endpoint %s failed', url) | 55 logger.error('Connection to API endpoint %s failed', url) |
56 raise | 56 raise |
57 if response.status < 200 or response.status >= 300: | 57 if response.status < 200 or response.status >= 300: |
58 logger.error('API call to %s failed:\n%s', url, response.data) | 58 logger.error('API call to %s failed:\n%s', url, response.data) |
59 raise urllib3.exceptions.HTTPError(response.status) | 59 raise urllib3.exceptions.HTTPError(response.status) |
60 return response | 60 return response |
61 | 61 |
62 def request(self, request_method, api_endpoint, data=None, files=None): | 62 def request(self, request_method, api_endpoint, data=None, files=None): |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 os.remove(os.path.join(root, f)) | 264 os.remove(os.path.join(root, f)) |
265 # Then extract the new ones in place | 265 # Then extract the new ones in place |
266 for member in archive.namelist(): | 266 for member in archive.namelist(): |
267 path, file_name = posixpath.split(member) | 267 path, file_name = posixpath.split(member) |
268 ext = posixpath.splitext(file_name)[1] | 268 ext = posixpath.splitext(file_name)[1] |
269 path_parts = path.split(posixpath.sep) | 269 path_parts = path.split(posixpath.sep) |
270 locale, file_path = path_parts[0], path_parts[1:] | 270 locale, file_path = path_parts[0], path_parts[1:] |
271 if ext.lower() == '.json' and locale in inverted_required_locales: | 271 if ext.lower() == '.json' and locale in inverted_required_locales: |
272 output_path = os.path.join( | 272 output_path = os.path.join( |
273 locale_path, inverted_required_locales[locale], | 273 locale_path, inverted_required_locales[locale], |
274 *file_path + [file_name], | 274 *file_path + [file_name] |
275 ) | 275 ) |
276 with archive.open(member) as source_file: | 276 with archive.open(member) as source_file: |
277 locale_file_contents = json.load(source_file) | 277 locale_file_contents = json.load(source_file) |
278 if len(locale_file_contents): | 278 if len(locale_file_contents): |
279 with codecs.open(output_path, 'wb', 'utf-8') as target_f
ile: | 279 with codecs.open(output_path, 'wb', 'utf-8') as target_f
ile: |
280 json.dump(locale_file_contents, target_file, ensure_
ascii=False, | 280 json.dump(locale_file_contents, target_file, ensure_
ascii=False, |
281 sort_keys=True, indent=2, separators=(',',
': ')) | 281 sort_keys=True, indent=2, separators=(',',
': ')) |
282 | 282 |
283 | 283 |
284 def crowdin_sync(source_dir, crowdin_api_key): | 284 def crowdin_sync(source_dir, crowdin_api_key): |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 if __name__ == '__main__': | 329 if __name__ == '__main__': |
330 if len(sys.argv) < 3: | 330 if len(sys.argv) < 3: |
331 print >>sys.stderr, 'Usage: python -m cms.bin.translate www_directory cr
owdin_project_api_key [logging_level]' | 331 print >>sys.stderr, 'Usage: python -m cms.bin.translate www_directory cr
owdin_project_api_key [logging_level]' |
332 sys.exit(1) | 332 sys.exit(1) |
333 | 333 |
334 logging.basicConfig() | 334 logging.basicConfig() |
335 logger.setLevel(sys.argv[3] if len(sys.argv) > 3 else logging.INFO) | 335 logger.setLevel(sys.argv[3] if len(sys.argv) > 3 else logging.INFO) |
336 | 336 |
337 source_dir, crowdin_api_key = sys.argv[1:3] | 337 source_dir, crowdin_api_key = sys.argv[1:3] |
338 crowdin_sync(source_dir, crowdin_api_key) | 338 crowdin_sync(source_dir, crowdin_api_key) |
LEFT | RIGHT |