# opkbuild # lib/locale # Locale functions. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . [ -n "${_OB_LOCALE_SM}" ] && return 0 _OB_LOCALE_SM='true' _OB_DEFAULT_LOCALE='en_US' ob_set_locale() { _obsl_locale= _obsl_domain= if [ ${#} -eq 1 ]; then _obsl_locale= _obsl_domain="${1}" elif [ ${#} -eq 2 ]; then _obsl_locale="${1}" _obsl_domain="${2}" else unset _obsl_locale _obsl_domain return 125 fi # Detect the system locale. # The test command's -z option doesn't work here? if [ ${#_obsl_locale} -eq 0 ]; then if [ -n "${LC_ALL}" ]; then _obsl_locale="${LC_ALL}" elif [ -n "${LC_MESSAGES}" ]; then _obsl_locale="${LC_MESSAGES}" elif [ -n "${LANG}" ]; then _obsl_locale="${LANG}" else _obsl_locale="${_OB_DEFAULT_LOCALE}" fi fi # Try to load the locale. if ! _ob_try_load_locale "${_locale%.*}" "${obsl_domain}"; then if ! _ob_try_load_locale "${_locale%_*}" "${_obsl_domain}"; then if ! _ob_try_load_locale "${_OB_DEFAULT_LOCALE}" \ "${_obsl_domain}"; then printf 'Error: cannot load locale file\n' unset _obsl_locale _obsl_domain return 1 fi fi fi unset _obsl_locale _obsl_domain return 0 } _ob_try_load_locale() { _obtll_locale="${1}" _obtll_domain="${2}" _obtll_ms="@@LOCALEDIR@@/${_obtll_locale}/LC_MESSAGES/${_obtll_domain}.ms" if [ -f "${_obtll_ms}" ]; then . "${_obtll_ms}" else unset _obtll_locale _obtll_domain _obtll_ms return 1 fi unset _obtll_locale _obtll_domain _obtll_ms return 0 }