summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2012-07-31 10:50:22 (EDT)
committer P. J. McDermott <pjm@nac.net>2012-07-31 10:50:22 (EDT)
commit710ca0fbb707828b9317dc09686b0accc0d6a5d6 (patch)
tree8047bc95bba63405ccb1ed81866de0773d4c409f
parent0e0a7b8e649283837c3126c1160c977b32191656 (diff)
Support locale setting.
-rw-r--r--.gitignore2
-rw-r--r--lib/locale.sh48
-rw-r--r--locale/en_US.sh (renamed from strings/en.sh)2
-rw-r--r--src/opkbuild.sh8
4 files changed, 55 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index c37743b..8dbcd4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,5 +11,5 @@ sedscript
src/*[^.]??
lib/*[^.]??
man/*[^.]??
-strings/*[^.]??
+locale/*[^.]??
opkhelper-*.tar.*
diff --git a/lib/locale.sh b/lib/locale.sh
new file mode 100644
index 0000000..3f33b67
--- /dev/null
+++ b/lib/locale.sh
@@ -0,0 +1,48 @@
+#!@@SHELL@@
+#
+# opkhelper
+# 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 <http://www.gnu.org/licenses/>.
+
+
+oh_locale_set()
+{
+ _locale="${1}"
+
+ # Detect the system locale.
+ if [ -z "{_locale}" ]; then
+ if [ -n "${LC_ALL}" ]; then
+ _locale="${LC_ALL}"
+ elif [ -n "${LC_MESSAGES}" ]; then
+ _locale="${LC_MESSAGES}"
+ elif [ -n "${LANG}" ]; then
+ _locale="${LANG}"
+ else
+ _locale='en_US'
+ fi
+ fi
+
+ # Try to load the locale.
+ if [ -f "@@LOCALEDIR@@/${_locale%.}" ]; then
+ . "@@LOCALEDIR@@/${_locale%.}"
+ elif [ -f "@@LOCALEDIR@@/${_locale%_}" ]; then
+ . "@@LOCALEDIR@@/${_locale%_}"
+ else
+ . @@LOCALEDIR@@/en_US
+ fi
+}
diff --git a/strings/en.sh b/locale/en_US.sh
index 12c9248..80c0129 100644
--- a/strings/en.sh
+++ b/locale/en_US.sh
@@ -1,5 +1,5 @@
# opkhelper
-# strings/en
+# locale/en_US
# English message strings.
#
# Copyright (C) 2012 Patrick "P. J." McDermott
diff --git a/src/opkbuild.sh b/src/opkbuild.sh
index 865c350..54a22f3 100644
--- a/src/opkbuild.sh
+++ b/src/opkbuild.sh
@@ -19,9 +19,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-. @@LIBDIR@@/opkhelper/messages
-. @@LIBDIR@@/opkhelper/strings/en
-. @@LIBDIR@@/opkhelper/changelog
+. @@LIBDIR@@/messages
+. @@LIBDIR@@/locale
+. @@LIBDIR@@/changelog
# Environment variables:
export OH_SOURCE=
@@ -74,6 +74,8 @@ OPT_UID0_CMD=
main()
{
+ oh_locale_set
+
get_options
test_uid0_cmd