diff --git a/src/cgi-bin/translate b/src/cgi-bin/translate index 135f994..b7fbc4a 100755 --- a/src/cgi-bin/translate +++ b/src/cgi-bin/translate @@ -17,6 +17,9 @@ require 'cgi' LANGUAGE_PAIRS = %w[en-es es-en] +Encoding.default_internal = Encoding::UTF_8 +Encoding.default_external = Encoding::UTF_8 + class Object def blank? nil? || self&.empty? @@ -74,9 +77,11 @@ ask!('Enter text to translate') if TRANSLATE.blank? require 'open3' -translation, status = Open3.capture2("apertium", LANG_PAIR, stdin_data: TRANSLATE) +translation, status = Open3.capture2({'LC_ALL' => 'C.UTF-8'}, 'apertium', '-un', LANG_PAIR, stdin_data: TRANSLATE, binmode: true) +translation = translation.force_encoding("UTF-8") + temp_fail!("Couldn't get translation") unless status.success? -ok!('text/plain; charset="utf-8"', translation) +ok!('text/plain; charset="utf-8"', ["Source text: #{TRANSLATE}", "Translation: #{translation}"].join("\r\n"))