<gh_stars>1000+
# Copyright 2017 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.

# 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

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

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

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

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 >>f, HEADER
    for (locale, accept_langs) in gen_accept_langs_table().items():
      print >>f, LINE(locale, accept_langs)
    print >>f, FOOTER

if __name__ == "__main__":
  main()

# Copyright 2017 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.

# 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

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

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

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

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 >>f, HEADER
    for (locale, accept_langs) in gen_accept_langs_table().items():
      print >>f, LINE(locale, accept_langs)
    print >>f, FOOTER

if __name__ == "__main__":
  main()
# Copyright 2017 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. # 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