Index: icu52/scripts/trim_data.sh |
=================================================================== |
--- icu52/scripts/trim_data.sh (revision 0) |
+++ icu52/scripts/trim_data.sh (revision 0) |
@@ -0,0 +1,130 @@ |
+#!/bin/bash |
+# Copyright (c) 2014 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. |
+ |
+ |
+# Remove display names for languages that are not listed in the accept-language |
+# list of Chromium. |
+function filter_display_language_names { |
+ UI_LANG_PATTERN="(${UI_LANGUAGES})[^a-z]" |
+ |
+ echo "Filtering out display names for non-UI languages in ${langdatapath}" |
+ for lang in $(grep -v '^#' chrome_ui_languages.list) |
+ do |
+ target=${langdatapath}/${lang}.txt |
+ sed -r -i \ |
+ '/^ Keys\{$/,/^ \}$/d |
+ /^ Languages\{$/, /^ \}$/ { |
+ /^ Languages\{$/p |
+ /^ '${UI_LANG_PATTERN}'/p |
+ /^ \}$/p |
+ d |
+ } |
+ /^ Types\{$/,/^ \}$/d |
+ /^ Variants\{$/,/^ \}$/d' ${target} |
+ done |
+} |
+ |
+ |
+# Keep only the minimum locale data for non-UI languages. |
+function abridge_locale_data_for_non_ui_languages { |
+ EXTRA_LANGUAGES=$(egrep -v -e '^#' -e "(${UI_LANGUAGES})" accept_lang.list) |
+ |
+ echo Creating minimum locale data in ${localedatapath} |
+ for lang in ${EXTRA_LANGUAGES} |
+ do |
+ target=${localedatapath}/${lang}.txt |
+ [ -e ${target} ] || { echo "missing ${lang}"; continue; } |
+ echo Overwriting ${target} ... |
+ sed -n -r -i \ |
+ '1, /^'${lang}'\{$/p |
+ /^ AuxExemplarCharacters\{.*\}$/p |
+ /^ AuxExemplarCharacters\{$/, /^ \}$/p |
+ /^ ExemplarCharacters\{.*\}$/p |
+ /^ ExemplarCharacters\{$/, /^ \}$/p |
+ /^ (LocaleScript|layout)\{$/, /^ \}$/p |
+ /^ Version\{.*$/p |
+ /^\}$/p' ${target} |
+ done |
+ |
+ echo Creating minimum locale data in ${langdatapath} |
+ for lang in ${EXTRA_LANGUAGES} |
+ do |
+ target=${langdatapath}/${lang}.txt |
+ [ -e ${target} ] || { echo "missing ${lang}"; continue; } |
+ echo Overwriting ${target} ... |
+ sed -n -r -i \ |
+ '1, /^'${lang}'\{$/p |
+ /^ Languages\{$/, /^ \}$/ { |
+ /^ Languages\{$/p |
+ /^ '${lang}'\{.*\}$/p |
+ /^ \}$/p |
+ } |
+ /^\}$/p' ${target} |
+ done |
+} |
+ |
+# Drop historic currencies. |
+# TODO(jshin): Use ucurr_isAvailable in ICU to drop more currencies. |
+# See also http://en.wikipedia.org/wiki/List_of_circulating_currencies |
+function filter_currency_data { |
+ for currency in $(grep -v '^#' currencies_to_drop.list) |
+ do |
+ OP=${DROPLIST:+|} |
+ DROPLIST=${DROPLIST}${OP}${currency} |
+ done |
+ DROPLIST="(${DROPLIST})\{" |
+ |
+ cd "${dataroot}/curr" |
+ for i in *.txt |
+ do |
+ [ $i != 'supplementalData.txt' ] && \ |
+ sed -r -i '/^ '$DROPLIST'/, /^ }/ d' $i |
+ done |
+} |
+ |
+# Remove the display names for numeric region codes other than |
+# 419 (Latin America) because we don't use them. |
+function filter_region_data { |
+ cd "${dataroot}/region" |
+ sed -i '/[0-35-9][0-9][0-9]{/ d' *.txt |
+} |
+ |
+ |
+ |
+function remove_exemplar_cities { |
+ cd "${dataroot}/zone" |
+ for i in *.txt |
+ do |
+ [ $i != 'root.txt' ] && \ |
+ sed -i '/^ zoneStrings/, /^ "meta:/ { |
+ /^ zoneStrings/ p |
+ /^ "meta:/ p |
+ d |
+ }' $i |
+ done |
+} |
+ |
+dataroot="$(dirname $0)/../source/data" |
+localedatapath="${dataroot}/locales" |
+langdatapath="${dataroot}/lang" |
+ |
+for lang in $(grep -v '^#' chrome_ui_languages.list) |
+do |
+ # Set $OP to '|' only if $UI_LANGUAGES is not empty. |
+ OP=${UI_LANGUAGES:+|} |
+ UI_LANGUAGES="${UI_LANGUAGES}${OP}${lang}" |
+done |
+ |
+ |
+filter_display_language_names |
+abridge_locale_data_for_non_ui_languages |
+filter_currency_data |
+filter_region_data |
+ |
+# Chromium OS needs exemplar cities for timezones, but not Chromium. |
+# It'll save 400kB (uncompressed), but the size difference in |
+# 7z compressed installer is <= 100kB. |
+# TODO(jshin): Make separate data files for CrOS and Chromium. |
+#fremove_exemplar_cities |
Property changes on: icu52/scripts/trim_data.sh |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |
Added: svn:executable |
+ * |