# opkbuild # lib/locale.sh # Locale functions. # # Copyright (C) 2012, 2014 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 2 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 . [ "x${_OH_LOCALE_SM+set}" = 'xset' ] && return 0 _OH_LOCALE_SM=1 oh_use output _OH_DEFAULT_LOCALE='en_US' _OH_TEXT_DOMAIN='opkhelper' _OH_LOCALE_PATH='@localedir@/%s/LC_MESSAGES/%s.ms' oh_load_locale() { # Make sure LC_MESSAGES is set. if [ "x${LC_MESSAGES+set}" != 'xset' ]; then if [ "x${LC_ALL+set}" = 'xset' ]; then LC_MESSAGES="${LC_ALL}" elif [ "x${LANG+set}" = 'xset' ]; then LC_MESSAGES="${LANG}" else LC_MESSAGES="${_OH_DEFAULT_LOCALE}" fi fi # Try to load the messages. if ! _oh_try_load_messages "${LC_MESSAGES%.*}"; then if ! _oh_try_load_messages "${LC_MESSAGES%_*}"; then if ! _oh_try_load_messages "${_OH_DEFAULT_LOCALE}"; then oh_warn 'Cannot load locale messages.' return 1 fi fi fi return 0 } oh_get_msg() { local msgid="${1}" eval "printf '%s' \"\${msg_${_OH_TEXT_DOMAIN}_${msgid}}\"" return 0 } _oh_try_load_messages() { local locale="${1}" local ms= ms="$(printf "${_OH_LOCALE_PATH}" \ "${locale}" "${_OH_TEXT_DOMAIN}")" if [ -f "${ms}" ]; then . "${ms}" else return 1 fi return 0 }