diff --git a/locale/manifests/init.pp b/locale/manifests/init.pp index 83ece82..cb5ae8d 100644 --- a/locale/manifests/init.pp +++ b/locale/manifests/init.pp @@ -5,44 +5,88 @@ # # $lang: # 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 # # 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 { "centos": { - augeas { "i18n": - context => $::operatingsystemrelease ? { - /^[1-6]\./ => "/files/etc/sysconfig/i18n", - default => "/files/etc/locale.conf", - }, - changes => "set LANG ${lang}", + if versioncmp($::operatingsystemrelease, 7) < 0 { + $config = "/etc/sysconfig/i18n" + } else { + $config = "/etc/locale.conf" } } "fedora": { - augeas { "i18n": - context => $::operatingsystemrelease ? { - /^1[0-7]/ => "/files/etc/sysconfig/i18n", - default => "/files/etc/locale.conf", - }, - changes => "set LANG ${lang}", + if versioncmp($::operatingsystemrelease, 18) < 0 { + $config = "/etc/sysconfig/i18n" + } else { + $config = "/etc/locale.conf" } } "debian","ubuntu": { - augeas { "i18n": - context => "/files/etc/default/locale", - changes => "set LANG ${lang}", - } + $config = "/etc/default/locale" } default: { 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}", + }, + ], + } + }