def self.guess_internal_locale
cmd = Mixlib::ShellOut.new("locale -a").run_command
cmd.error!
locales = cmd.stdout.split
case
when locales.include?("C.UTF-8")
"C.UTF-8"
when locales.include?("en_US.UTF-8"), locales.include?("en_US.utf8")
"en_US.UTF-8"
when locales.include?("en.UTF-8")
"en.UTF-8"
else
guesses = locales.select { |l| l =~ /^en_.*UTF-?8$/i }
unless guesses.empty?
guessed_locale = guesses.first
guessed_locale.gsub(/UTF-?8$/i, "UTF-8")
else
ChefConfig.logger.warn "Please install an English UTF-8 locale for Chef to use, falling back to C locale and disabling UTF-8 support."
"C"
end
end
rescue
if ChefConfig.windows?
ChefConfig.logger.trace "Defaulting to locale en_US.UTF-8 on Windows, until it matters that we do something else."
else
ChefConfig.logger.trace "No usable locale -a command found, assuming you have en_US.UTF-8 installed."
end
"en_US.UTF-8"
end