# 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' . '@@LIBOPKBUILD@@/output.sm' _OB_DEFAULT_LOCALE='en_US' ob_add_text_domain() { _obatd_domain= if [ ${#} -eq 1 ]; then _obatd_domain="${1}" else unset _obatd_domain return 125 fi # Make sure LC_MESSAGES is set. if [ -z "${LC_MESSAGES}" ]; then if [ -n "${LC_ALL}" ]; then LC_MESSAGES="${LC_ALL}" elif [ -n "${LANG}" ]; then LC_MESSAGES="${LANG}" else LC_MESSAGES="${_OB_DEFAULT_LOCALE}" fi fi # TODO: Exit early if domain's messages have already been loaded. # Try to load the messages. if ! _ob_try_load_messages "${LC_MESSAGES%.*}" "${obsl_domain}"; then if ! _ob_try_load_messages "${LC_MESSAGES%_*}" "${_obatd_domain}"; then if ! _ob_try_load_messages "${_OB_DEFAULT_LOCALE}" \ "${_obatd_domain}"; then ob_warn 'Cannot load messages in "%s" domain.' \ "${_obatd_domain}" unset _obatd_domain return 1 fi fi fi unset _obatd_domain return 0 } _ob_try_load_messages() { _obtlm_locale="${1}" _obtlm_domain="${2}" _obtlm_ms="@@LOCALEDIR@@/${_obtlm_locale}/LC_MESSAGES/${_obtlm_domain}.ms" if [ -f "${_obtlm_ms}" ]; then . "${_obtlm_ms}" else unset _obtlm_locale _obtlm_domain _obtlm_ms return 1 fi unset _obtlm_locale _obtlm_domain _obtlm_ms return 0 }