OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 # Copyright (c) 2014 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2014 The Chromium Authors. All rights reserved. |
3 # 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 |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 | 6 |
| 7 # Remove entries currently not used in Chromium/V8. |
| 8 function filter_locale_data { |
| 9 echo Removing unncessary categories in ${localedatapath} |
| 10 for langpath in ${localedatapath}/*.txt |
| 11 do |
| 12 echo Overwriting ${langpath} ... |
| 13 sed -r -i \ |
| 14 '/^ characterLabel\{$/,/^ \}$/d |
| 15 /^ AuxExemplarCharacters\{.*\}$/d |
| 16 /^ AuxExemplarCharacters\{$/, /^ \}$/d |
| 17 /^ ExemplarCharacters\{.*\}$/d |
| 18 /^ ExemplarCharacters\{$/, /^ \}$/d |
| 19 /^ (mon|tue|wed|thu|fri|sat|sun|quarter)(|-short|-narrow)\{$/, /^
\}$/d' ${langpath} |
| 20 done |
| 21 } |
| 22 |
7 # Remove display names for languages that are not listed in the accept-language | 23 # Remove display names for languages that are not listed in the accept-language |
8 # list of Chromium. | 24 # list of Chromium. |
9 function filter_display_language_names { | 25 function filter_display_language_names { |
10 for lang in $(grep -v '^#' "${scriptdir}/accept_lang.list") | 26 for lang in $(grep -v '^#' "${scriptdir}/accept_lang.list") |
11 do | 27 do |
12 # Set $OP to '|' only if $ACCEPT_LANG_PATTERN is not empty. | 28 # Set $OP to '|' only if $ACCEPT_LANG_PATTERN is not empty. |
13 OP=${ACCEPT_LANG_PATTERN:+|} | 29 OP=${ACCEPT_LANG_PATTERN:+|} |
14 ACCEPT_LANG_PATTERN="${ACCEPT_LANG_PATTERN}${OP}${lang}" | 30 ACCEPT_LANG_PATTERN="${ACCEPT_LANG_PATTERN}${OP}${lang}" |
15 done | 31 done |
16 ACCEPT_LANG_PATTERN="(${ACCEPT_LANG_PATTERN})[^a-z]" | 32 ACCEPT_LANG_PATTERN="(${ACCEPT_LANG_PATTERN})[^a-z]" |
17 | 33 |
18 echo "Filtering out display names for non-A-L languages ${langdatapath}" | 34 echo "Filtering out display names for non-A-L languages in ${langdatapath}" |
19 for lang in $(grep -v '^#' "${scriptdir}/chrome_ui_languages.list") | 35 for langpath in ${langdatapath}/*.txt |
20 do | 36 do |
21 target=${langdatapath}/${lang}.txt | 37 target=${langpath} |
22 echo Overwriting ${target} ... | 38 echo Overwriting ${target} ... |
23 sed -r -i \ | 39 sed -r -i \ |
24 '/^ Keys\{$/,/^ \}$/d | 40 '/^ Keys\{$/,/^ \}$/d |
25 /^ Languages\{$/, /^ \}$/ { | 41 /^ Languages\{$/, /^ \}$/ { |
26 /^ Languages\{$/p | 42 /^ Languages\{$/p |
27 /^ '${ACCEPT_LANG_PATTERN}'/p | 43 /^ '${ACCEPT_LANG_PATTERN}'/p |
28 /^ \}$/p | 44 /^ \}$/p |
29 d | 45 d |
30 } | 46 } |
31 /^ Types\{$/,/^ \}$/d | 47 /^ Types\{$/,/^ \}$/d |
| 48 /^ Types%short\{$/,/^ \}$/d |
| 49 /^ characterLabelPattern\{$/,/^ \}$/d |
32 /^ Variants\{$/,/^ \}$/d' ${target} | 50 /^ Variants\{$/,/^ \}$/d' ${target} |
33 | 51 |
34 # Delete an empty "Languages" block. Otherwise, getting the display | 52 # Delete an empty "Languages" block. Otherwise, getting the display |
35 # name for all the language in a given locale (e.g. en_GB) would fail | 53 # name for all the language in a given locale (e.g. en_GB) would fail |
36 # when the above filtering sed command results in an empty "Languages" | 54 # when the above filtering sed command results in an empty "Languages" |
37 # block. | 55 # block. |
38 sed -r -i \ | 56 sed -r -i \ |
39 '/^ Languages\{$/ { | 57 '/^ Languages\{$/ { |
40 N | 58 N |
41 /^ Languages\{\n \}/ d | 59 /^ Languages\{\n \}/ d |
42 }' ${target} | 60 }' ${target} |
43 done | 61 done |
44 } | 62 } |
45 | 63 |
46 | 64 |
47 # Keep only the minimum locale data for non-UI languages. | 65 # Keep only the minimum locale data for non-UI languages. |
48 function abridge_locale_data_for_non_ui_languages { | 66 function abridge_locale_data_for_non_ui_languages { |
49 for lang in $(grep -v '^#' "${scriptdir}/chrome_ui_languages.list") | 67 for lang in $(grep -v '^#' "${scriptdir}/chrome_ui_languages.list") |
50 do | 68 do |
51 # Set $OP to '|' only if $UI_LANGUAGES is not empty. | 69 # Set $OP to '|' only if $UI_LANGUAGES is not empty. |
52 OP=${UI_LANGUAGES:+|} | 70 OP=${UI_LANGUAGES:+|} |
53 UI_LANGUAGES="${UI_LANGUAGES}${OP}${lang}" | 71 UI_LANGUAGES="${UI_LANGUAGES}${OP}${lang}" |
54 done | 72 done |
55 | 73 |
56 EXTRA_LANGUAGES=$(egrep -v -e '^#' -e "(${UI_LANGUAGES})" \ | 74 EXTRA_LANGUAGES=$(egrep -v -e '^#' -e "(${UI_LANGUAGES})" \ |
57 "${scriptdir}/accept_lang.list") | 75 "${scriptdir}/accept_lang.list") |
58 | 76 |
59 echo Creating minimum locale data in ${localedatapath} | 77 echo Creating minimum locale data in ${localedatapath} |
60 for lang in ${EXTRA_LANGUAGES} | 78 for lang in ${EXTRA_LANGUAGES} |
61 do | 79 do |
62 target=${localedatapath}/${lang}.txt | 80 target=${localedatapath}/${lang}.txt |
63 [ -e ${target} ] || { echo "missing ${lang}"; continue; } | 81 [ -e ${target} ] || { echo "missing ${lang}"; continue; } |
64 echo Overwriting ${target} ... | 82 echo Overwriting ${target} ... |
65 | 83 |
66 # Do not include '%%Parent' line on purpose. | 84 # Do not include '%%Parent' line on purpose. |
67 sed -n -r -i \ | 85 sed -n -r -i \ |
68 '1, /^'${lang}'\{$/p | 86 '1, /^'${lang}'\{$/p |
69 /^ "%%ALIAS"\{/p | 87 /^ "%%ALIAS"\{/p |
70 /^ AuxExemplarCharacters\{.*\}$/p | |
71 /^ AuxExemplarCharacters\{$/, /^ \}$/p | |
72 /^ ExemplarCharacters\{.*\}$/p | |
73 /^ ExemplarCharacters\{$/, /^ \}$/p | |
74 /^ (LocaleScript|layout)\{$/, /^ \}$/p | 88 /^ (LocaleScript|layout)\{$/, /^ \}$/p |
75 /^ Version\{.*$/p | 89 /^ Version\{.*$/p |
76 /^\}$/p' ${target} | 90 /^\}$/p' ${target} |
77 done | 91 done |
78 | 92 |
79 echo Creating minimum locale data in ${langdatapath} | 93 echo Creating minimum locale data in ${langdatapath} |
80 for lang in ${EXTRA_LANGUAGES} | 94 for lang in ${EXTRA_LANGUAGES} |
81 do | 95 do |
82 target=${langdatapath}/${lang}.txt | 96 target=${langdatapath}/${lang}.txt |
83 [ -e ${target} ] || { echo "missing ${lang}"; continue; } | 97 [ -e ${target} ] || { echo "missing ${lang}"; continue; } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 } | 196 } |
183 | 197 |
184 treeroot="$(dirname "$0")/.." | 198 treeroot="$(dirname "$0")/.." |
185 dataroot="${treeroot}/source/data" | 199 dataroot="${treeroot}/source/data" |
186 scriptdir="${treeroot}/scripts" | 200 scriptdir="${treeroot}/scripts" |
187 localedatapath="${dataroot}/locales" | 201 localedatapath="${dataroot}/locales" |
188 langdatapath="${dataroot}/lang" | 202 langdatapath="${dataroot}/lang" |
189 | 203 |
190 | 204 |
191 | 205 |
| 206 filter_locale_data |
192 filter_display_language_names | 207 filter_display_language_names |
193 abridge_locale_data_for_non_ui_languages | 208 abridge_locale_data_for_non_ui_languages |
194 filter_currency_data | 209 filter_currency_data |
195 filter_region_data | 210 filter_region_data |
196 remove_legacy_chinese_codepoint_collation | 211 remove_legacy_chinese_codepoint_collation |
197 filter_unit_data | 212 filter_unit_data |
198 | 213 |
199 # Chromium OS needs exemplar cities for timezones, but not Chromium. | 214 # Chromium OS needs exemplar cities for timezones, but not Chromium. |
200 # It'll save 400kB (uncompressed), but the size difference in | 215 # It'll save 400kB (uncompressed), but the size difference in |
201 # 7z compressed installer is <= 100kB. | 216 # 7z compressed installer is <= 100kB. |
202 # TODO(jshin): Make separate data files for CrOS and Chromium. | 217 # TODO(jshin): Make separate data files for CrOS and Chromium. |
203 #remove_exemplar_cities | 218 #remove_exemplar_cities |
OLD | NEW |