locale: Add support for defining LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME and LC_MESSAGES.

This commit is contained in:
Timo Makinen 2016-11-17 02:18:35 +02:00
parent 84ff9be696
commit 8c6f0099a0

View file

@ -5,44 +5,88 @@
# #
# $lang: # $lang:
# Value to set into $LANG environment. Defaults to en_US. # Value to set into $LANG environment. Defaults to en_US.
# $collate:
# Value to set for $LC_COLLATE environment.
# $ctype:
# Value to set for $LC_CTYPE environment.
# $monetary:
# Value to set for $LC_MONETARY environment.
# $numeric:
# Value to set for $LC_NUMERIC environment.
# $time:
# Value to set for $LC_TIME environment.
# $messages:
# Value to set for $LC_MESSAGES environment.
# #
# === Sample usage # === Sample usage
# #
# class { "locale": # class { "locale":
# lang => "en_US.ISO8859-1", # lang => "en_US.ISO8859-1",
# ctype => "en_US.UTF-8",
# } # }
# #
class locale($lang="en_US") { class locale(
$lang="en_US",
$collate=undef,
$ctype=undef,
$monetary=undef,
$numeric=undef,
$time=undef,
$messages=undef
) {
case $::operatingsystem { case $::operatingsystem {
"centos": { "centos": {
augeas { "i18n": if versioncmp($::operatingsystemrelease, 7) < 0 {
context => $::operatingsystemrelease ? { $config = "/etc/sysconfig/i18n"
/^[1-6]\./ => "/files/etc/sysconfig/i18n", } else {
default => "/files/etc/locale.conf", $config = "/etc/locale.conf"
},
changes => "set LANG ${lang}",
} }
} }
"fedora": { "fedora": {
augeas { "i18n": if versioncmp($::operatingsystemrelease, 18) < 0 {
context => $::operatingsystemrelease ? { $config = "/etc/sysconfig/i18n"
/^1[0-7]/ => "/files/etc/sysconfig/i18n", } else {
default => "/files/etc/locale.conf", $config = "/etc/locale.conf"
},
changes => "set LANG ${lang}",
} }
} }
"debian","ubuntu": { "debian","ubuntu": {
augeas { "i18n": $config = "/etc/default/locale"
context => "/files/etc/default/locale",
changes => "set LANG ${lang}",
}
} }
default: { default: {
fail("locale module not supported in ${::operatingsystem}") fail("locale module not supported in ${::operatingsystem}")
} }
} }
augeas { "locale":
context => "/files${config}",
changes => [ "set LANG ${lang}",
$collate ? {
undef => "rm LC_COLLATE",
default => "set LC_COLLATE ${collate}",
},
$ctype ? {
undef => "rm LC_CTYPE",
default => "set LC_CTYPE ${ctype}",
},
$monetary ? {
undef => "rm LC_CTYPE",
default => "set LC_CTYPE ${monetary}",
},
$numeric ? {
undef => "rm LC_CTYPE",
default => "set LC_CTYPE ${numeric}",
},
$time ? {
undef => "rm LC_CTYPE",
default => "set LC_CTYPE ${time}",
},
$messages ? {
undef => "rm LC_CTYPE",
default => "set LC_CTYPE ${messages}",
},
],
}
} }