forked from bazaar-org/bazaar
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtranslators.sh
More file actions
executable file
·108 lines (89 loc) · 3.77 KB
/
translators.sh
File metadata and controls
executable file
·108 lines (89 loc) · 3.77 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env bash
# Helper script that automates the preparation steps to translate Bazaar.
#
# The script will add the passed language code to the LINGUAS file to avoid
# editing it manually.
# also:
# It will reorder the contents of the file alphabetically;
# It will check if the code is already in the file;
# It will show the contents of the LINGUAS file, allowing a visual check;
# It won't really check if the locale code is valid but will inform you
# that it is not in the list of codes inside /usr/share/locale;
# It will generate a .backup inside /tmp before proceeding and a .tmp file
# before overwriting LINGUAS.
#
translators_helper() {
local lang_input
local lang_f
local po_d
local build_d
local system_langs
local langs_in_file
local temp_file
lang_f="LINGUAS"
po_d="po"
build_d="build"
mapfile -t system_langs < <(find /usr/share/locale/ -maxdepth 1 -type d -printf "%f\n")
temp_file="$(mktemp --suffix=BAZAAR)"
printf "Temporary file: %s\n" "${temp_file}"
printf "Setting im_a_translator to true\n"
meson setup build -Dim_a_translator=true || return 1
pushd "${po_d}" >/dev/null || return 1
langs_in_file="$(wc --lines "${lang_f}" | grep --only-matching --extended-regex "[0-9]{1,}")"
printf "\nNumber of languages currently in file %s\n" "${langs_in_file}"
unset langs_in_file
printf "Language codes currently in %s file.\n" "${lang_f}"
cat --squeeze-blank "${lang_f}"
read -r -n 1 -p "Proceed? (Type y or Y to confirm)" YN
case "$YN" in
[Yy])
printf "\n%s\n" "Proceeding..."
;;
*)
printf "\n%s\n" "Leaving..."
exit 3
;;
esac
printf "\nCopying %s to /tmp/%s\n" "${lang_f}" "${lang_f}.backup"
cp --verbose "${lang_f}" "/tmp/${lang_f}.backup"
read -r -p "Type the language code you want to enable translation for. ex.: pt_BR or es: " lang_input
if [[ "${system_langs[*]}" =~ ${lang_input} ]]; then
printf "Found %s in the system's language code list.\n" "${lang_input}"
sleep 2s
else
printf "Could not find \"%s\" in the system's language code list, but proceeding nonetheless.\n" "${lang_input}"
sleep 2s
fi
if grep --only-matching "${lang_input}" "${lang_f}"; then
printf "%s already in file\n" "${lang_input}"
sleep 2s
else
printf "Language to be added: %s\n" "${lang_input}"
printf "%s\n" "${lang_input}" | tee -p --append "${lang_f}" 2>&1
sleep 2s
fi
cat --squeeze-blank "${lang_f}" | (
sed --unbuffered 1q
sort
) | tee -p "${temp_file}"
cat --squeeze-blank "${temp_file}" >"${lang_f}"
langs_in_file="$(wc --lines "${lang_f}" | grep --only-matching --extended-regex "[0-9]{1,}")"
printf "Number of languages currently in file %s\n" "${langs_in_file}"
unset langs_in_file
cat --squeeze-blank "${temp_file}"
cat --squeeze-blank "${lang_f}"
# $EDITOR LINGUAS
popd || return 1
pushd "${build_d}" || return 1
printf "Generating the main pot (Portable Object Template) file for lang %s...\n" "${lang_input}"
meson compile bazaar-pot
printf "Update and/or create the po (Portable Object) files for %s.\n" "${lang_input}"
meson compile bazaar-update-po
echo "--------------------------------"
printf "\nConfiguration done. Now ready for you to open your \"po\" file in your text editor and begin translating.\n"
printf "When you are done, commit your changes form your fork and submit a pull request on \n%s also, refer to TRANSLATORS.md if needed\e]8;;\e\\ \n\n" "https://github.com/kolunmi/bazaar/blob/master/TRANSLATORS.md"
echo "--------------------------------"
popd || return 1
return 0
}
translators_helper || echo 'An error occurred; review the above output' 2>&1