File: generate_accept_languages.py

package info (click to toggle)
chromium 139.0.7258.127-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,122,156 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (53 lines) | stat: -rw-r--r-- 1,933 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This script generates a header containing a dictionary from locales to
# accept language strings from chromium's .xtb files.  It is not very
# robust at the moment, and makes some assumptions about the format of
# the files, including at least the following:
#   * assumes necessary data is contained only with files of the form
#     components/strings/components_locale_settings_${LANG}.xtb
#   * assumes ${LANG} is identified in the lang attribute of the root
#     element of the file's xml data
#   * assumes that there is only one relevant element with the
#     IDS_ACCEPT_LANGUAGES attribute

from __future__ import print_function

import os
import re
import sys
from xml.etree import ElementTree

STRINGS_DIR = sys.argv[2] + 'components/strings/'

# pylint: disable=inconsistent-return-statements
def extract_accept_langs(filename):
  tree = ElementTree.parse(STRINGS_DIR + filename).getroot()
  for child in tree:
    if child.get('id') == 'IDS_ACCEPT_LANGUAGES':
      return tree.get('lang'), child.text
# pylint: enable=inconsistent-return-statements

def gen_accept_langs_table():
  accept_langs_list = [extract_accept_langs(filename)
    for filename in os.listdir(STRINGS_DIR)
    if re.match(r'components_locale_settings_\S+.xtb', filename)]
  return dict(accept_langs for accept_langs in accept_langs_list
    if accept_langs)

HEADER = "static NSDictionary* const acceptLangs = @{"
def LINE(locale, accept_langs):
  return '  @"' + locale + '" : @"' + accept_langs + '",'
FOOTER = "};"

def main():
  with open(sys.argv[1] + "/accept_languages_table.h", "w+") as f:
    print(HEADER, file=f)
    for (locale, accept_langs) in gen_accept_langs_table().items():
      print(LINE(locale, accept_langs), file=f)
    print(FOOTER, file=f)

if __name__ == "__main__":
  main()