diff --git a/README.md b/README.md index fb6073c5..608c119e 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,10 @@ This project is a system for redpill’s preinstallation and recovery environmen xgettext -L Shell --keyword=TEXT *.sh -o lang/rr.pot sed -i 's/charset=CHARSET/charset=UTF-8/' lang/rr.pot # You need to replace the language you need and translate the po file. - msginit -i lang/rr.pot -l zh_CN.UTF-8 -o lang/zh_CN.po + mkdir -p lang/zh_CN/LC_MESSAGES + msginit -i lang/rr.pot -l zh_CN.UTF-8 -o lang/zh_CN/LC_MESSAGES/rr.po # This process will be automatically processed during packaging. - msgfmt lang/zh_CN.po -o lang/zh_CN.mo + msgfmt lang/zh_CN/LC_MESSAGES/rr.po -o lang/zh_CN/LC_MESSAGES/rr.mo ``` * I am not proficient in language, and even my English is very poor. Developers who are familiar with various languages are welcome to submit PR. diff --git a/files/initrd/opt/rr/include/i18n.sh b/files/initrd/opt/rr/include/i18n.sh index 514dafc4..a176cf68 100755 --- a/files/initrd/opt/rr/include/i18n.sh +++ b/files/initrd/opt/rr/include/i18n.sh @@ -1,19 +1,10 @@ [ -z "${WORK_PATH}" -o ! -d "${WORK_PATH}/include" ] && WORK_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")/../" >/dev/null 2>&1 && pwd)" -if [ -d "/usr/share/locale" ]; then - for F in $(ls ${WORK_PATH}/lang/*.mo 2>/dev/null); do - LANG="$(basename "${F}" .mo)" - LOCALE="${LANG%%_*}" - if [ -d "/usr/share/locale/${LANG}" ] || [ ! -d "/usr/share/locale/${LOCALE}" ]; then - mkdir -p "/usr/share/locale/${LANG}/LC_MESSAGES" - install "${F}" "/usr/share/locale/${LANG}/LC_MESSAGES/rr.mo" - else - mkdir -p "/usr/share/locale/${LOCALE}/LC_MESSAGES" - install "${F}" "/usr/share/locale/${LOCALE}/LC_MESSAGES/rr.mo" - fi - done - - if [ -f ${PART1_PATH}/.locale ]; then +if type gettext >/dev/null 2>&1; then + if [ -d "${WORK_PATH}/lang" ]; then + export TEXTDOMAINDIR="${WORK_PATH}/lang" + fi + if [ -f "${PART1_PATH}/.locale" ]; then export LC_ALL="$(cat ${PART1_PATH}/.locale)" fi diff --git a/files/initrd/opt/rr/lang/en_US/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/en_US/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..364097ca Binary files /dev/null and b/files/initrd/opt/rr/lang/en_US/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/en_US.po b/files/initrd/opt/rr/lang/en_US/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/en_US.po rename to files/initrd/opt/rr/lang/en_US/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/lang/ko_KR/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/ko_KR/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..1c1da407 Binary files /dev/null and b/files/initrd/opt/rr/lang/ko_KR/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/ko_KR.po b/files/initrd/opt/rr/lang/ko_KR/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/ko_KR.po rename to files/initrd/opt/rr/lang/ko_KR/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/lang/ru_RU/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/ru_RU/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..49c02b50 Binary files /dev/null and b/files/initrd/opt/rr/lang/ru_RU/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/ru_RU.po b/files/initrd/opt/rr/lang/ru_RU/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/ru_RU.po rename to files/initrd/opt/rr/lang/ru_RU/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/lang/zh_CN/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/zh_CN/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..363b2b65 Binary files /dev/null and b/files/initrd/opt/rr/lang/zh_CN/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/zh_CN.po b/files/initrd/opt/rr/lang/zh_CN/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/zh_CN.po rename to files/initrd/opt/rr/lang/zh_CN/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/lang/zh_HK/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/zh_HK/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..d37c7a77 Binary files /dev/null and b/files/initrd/opt/rr/lang/zh_HK/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/zh_HK.po b/files/initrd/opt/rr/lang/zh_HK/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/zh_HK.po rename to files/initrd/opt/rr/lang/zh_HK/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/lang/zh_TW/LC_MESSAGES/rr.mo b/files/initrd/opt/rr/lang/zh_TW/LC_MESSAGES/rr.mo new file mode 100644 index 00000000..2bc854e7 Binary files /dev/null and b/files/initrd/opt/rr/lang/zh_TW/LC_MESSAGES/rr.mo differ diff --git a/files/initrd/opt/rr/lang/zh_TW.po b/files/initrd/opt/rr/lang/zh_TW/LC_MESSAGES/rr.po similarity index 100% rename from files/initrd/opt/rr/lang/zh_TW.po rename to files/initrd/opt/rr/lang/zh_TW/LC_MESSAGES/rr.po diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index 03124d08..026139fe 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -2186,9 +2186,9 @@ function boot() { function languageMenu() { rm -f "${TMP_PATH}/menu" while read L; do - A="$(echo "$(strings "${WORK_PATH}/lang/${L}.mo" 2>/dev/null | grep "Last-Translator" | sed "s/Last-Translator://")")" + A="$(echo "$(strings "${WORK_PATH}/lang/${L}/LC_MESSAGES/rr.mo" 2>/dev/null | grep "Last-Translator" | sed "s/Last-Translator://")")" echo "${L} \"${A:-"anonymous"}\"" >>"${TMP_PATH}/menu" - done < <(ls ${WORK_PATH}/lang/*.mo 2>/dev/null | sort | sed -r 's/.*\/(.*)\.mo$/\1/') + done < <(ls ${WORK_PATH}/lang/*/LC_MESSAGES/rr.mo 2>/dev/null | sort | sed -r 's/.*\/lang\/(.*)\/LC_MESSAGES\/rr\.mo$/\1/') DIALOG \ --default-item "${LAYOUT}" --menu "$(TEXT "Choose a language")" 0 0 0 --file "${TMP_PATH}/menu" \