diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Aura Changelog
 
+## 2.0.3
+
+- Updated Spanish translations. Thanks to Max Ferrer!
+- Fixed bug #543. Thanks to Alexey Kotlyarov!
+
 ## 2.0.2
 
 - Bug fixes and performance improvements.
diff --git a/aura.cabal b/aura.cabal
--- a/aura.cabal
+++ b/aura.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               aura
-version:            2.0.2
+version:            2.0.3
 synopsis:
   A secure package manager for Arch Linux and the AUR, written in Haskell.
 
@@ -46,10 +46,10 @@
 common libexec
   build-depends:
     , errors                       ^>=2.3
-    , fused-effects                >=0.4 && <0.6
+    , fused-effects                >=0.4 && <1.1
     , http-client                  >=0.5 && <0.7
     , nonempty-containers          ^>=0.3
-    , prettyprinter                ^>=1.2
+    , prettyprinter                >=1.2 && < 1.6
     , prettyprinter-ansi-terminal  ^>=1.1
     , transformers                 ^>=0.5
     , typed-process                ^>=0.2
@@ -91,11 +91,11 @@
     , aeson             >=1.2  && <1.5
     , aeson-pretty      ^>=0.8
     , algebraic-graphs  >=0.1  && <0.5
-    , aur               ^>=6.2
+    , aur               ^>=6.3
     , compactable       ^>=0.1
     , directory         ^>=1.3
     , filepath          ^>=1.4
-    , generic-lens      ^>=1.1
+    , generic-lens      >=1.1 && < 1.3
     , http-types        >=0.9  && <0.13
     , language-bash     ^>=0.8
     , megaparsec        ^>=7
@@ -106,7 +106,7 @@
     , semigroupoids     >=5.2  && <5.4
     , stm               ^>=2.5
     , these             ^>=1.0
-    , time              ^>=1.8
+    , time              >=1.8 && < 1.10
     , unliftio          ^>=0.2
 
 executable aura
@@ -121,8 +121,8 @@
   build-depends:
     , aura
     , http-client-tls       ^>=0.3
-    , optparse-applicative  ^>=0.14
-    , pretty-simple         >=2.1  && <2.3
+    , optparse-applicative  >=0.14 && < 0.16
+    , pretty-simple         >=2.1  && <3.3
 
 test-suite aura-test
   import:         commons
diff --git a/doc/aura.8 b/doc/aura.8
--- a/doc/aura.8
+++ b/doc/aura.8
@@ -390,6 +390,10 @@
 .P
 (  Spanish   ) Alejandro Gómez
 .P
+(  Spanish   ) Sergio Conde
+.P
+(  Spanish   ) Max Ferrer
+.P
 ( Portuguese ) Henry "Ingvij" Kupty
 .P
 ( Portuguese ) Thiago "thiagowfx" Perrotta
diff --git a/exec/Settings.hs b/exec/Settings.hs
--- a/exec/Settings.hs
+++ b/exec/Settings.hs
@@ -1,6 +1,6 @@
 {-
 
-Copyright 2012 - 2019 Colin Woodbury <colin@fosskers.ca>
+Copyright 2012 - 2020 Colin Woodbury <colin@fosskers.ca>
 
 This file is part of Aura.
 
diff --git a/exec/aura.hs b/exec/aura.hs
--- a/exec/aura.hs
+++ b/exec/aura.hs
@@ -6,7 +6,7 @@
 
 {-
 
-Copyright 2012 - 2019 Colin Woodbury <colin@fosskers.ca>
+Copyright 2012 - 2020 Colin Woodbury <colin@fosskers.ca>
 
 This file is part of Aura.
 
@@ -72,7 +72,7 @@
 ---
 
 auraVersion :: T.Text
-auraVersion = "2.0.2"
+auraVersion = "2.0.3"
 
 main :: IO ()
 main = do
diff --git a/lib/Aura/Build.hs b/lib/Aura/Build.hs
--- a/lib/Aura/Build.hs
+++ b/lib/Aura/Build.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.Build
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Cache.hs b/lib/Aura/Cache.hs
--- a/lib/Aura/Cache.hs
+++ b/lib/Aura/Cache.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module    : Aura.Cache
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Colour.hs b/lib/Aura/Colour.hs
--- a/lib/Aura/Colour.hs
+++ b/lib/Aura/Colour.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module    : Aura.Colour
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Commands/A.hs b/lib/Aura/Commands/A.hs
--- a/lib/Aura/Commands/A.hs
+++ b/lib/Aura/Commands/A.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module    : Aura.Commands.A
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -37,11 +37,11 @@
 import           Aura.Types
 import           Aura.Utils
 import           BasePrelude hiding ((<+>))
-import           Control.Error.Util (hush)
 import           Control.Effect (Carrier, Member)
 import           Control.Effect.Error (Error)
 import           Control.Effect.Lift (Lift, sendM)
 import           Control.Effect.Reader (Reader, asks)
+import           Control.Error.Util (hush)
 import           Data.Aeson.Encode.Pretty (encodePrettyToTextBuilder)
 import           Data.Generics.Product (field)
 import qualified Data.List.NonEmpty as NEL
@@ -74,7 +74,7 @@
 foreigns ss = S.filter (notIgnored . view (field @"name")) <$> foreignPackages
   where notIgnored p = not . S.member p $ ignoresOf ss
 
-upgrade :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) => 
+upgrade :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) =>
   S.Set PkgName -> NESet SimplePkg -> m ()
 upgrade pkgs fs = do
   ss        <- asks settings
@@ -92,7 +92,7 @@
              sendM . unless (switch ss DryRun) $ saveState ss
              traverse_ I.install . NES.nonEmptySet $ S.fromList names <> pkgs <> devel
 
-possibleUpdates :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) => 
+possibleUpdates :: (Carrier sig m, Member (Reader Env) sig, Member (Error Failure) sig, Member (Lift IO) sig) =>
   NESet SimplePkg -> m [(AurInfo, Versioning)]
 possibleUpdates (NES.toList -> pkgs) = do
   aurInfos <- aurInfo $ fmap (^. field @"name") pkgs
diff --git a/lib/Aura/Commands/B.hs b/lib/Aura/Commands/B.hs
--- a/lib/Aura/Commands/B.hs
+++ b/lib/Aura/Commands/B.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.Commands.B
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Commands/C.hs b/lib/Aura/Commands/C.hs
--- a/lib/Aura/Commands/C.hs
+++ b/lib/Aura/Commands/C.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module    : Aura.Commands.C
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Commands/L.hs b/lib/Aura/Commands/L.hs
--- a/lib/Aura/Commands/L.hs
+++ b/lib/Aura/Commands/L.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module    : Aura.Commands.L
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Commands/O.hs b/lib/Aura/Commands/O.hs
--- a/lib/Aura/Commands/O.hs
+++ b/lib/Aura/Commands/O.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.Commands.O
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -20,8 +20,8 @@
 import           BasePrelude
 import           Control.Effect (Carrier, Member)
 import           Control.Effect.Error (Error)
-import           Control.Effect.Reader (Reader)
 import           Control.Effect.Lift (Lift, sendM)
+import           Control.Effect.Reader (Reader)
 import           Data.Generics.Product (field)
 import           Data.Set.NonEmpty (NESet)
 import qualified Data.Text.IO as T
diff --git a/lib/Aura/Core.hs b/lib/Aura/Core.hs
--- a/lib/Aura/Core.hs
+++ b/lib/Aura/Core.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module    : Aura.Core
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Dependencies.hs b/lib/Aura/Dependencies.hs
--- a/lib/Aura/Dependencies.hs
+++ b/lib/Aura/Dependencies.hs
@@ -11,7 +11,7 @@
 
 -- |
 -- Module    : Aura.Dependencies
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Diff.hs b/lib/Aura/Diff.hs
--- a/lib/Aura/Diff.hs
+++ b/lib/Aura/Diff.hs
@@ -1,6 +1,6 @@
 -- |
 -- Module    : Aura.Diff
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Install.hs b/lib/Aura/Install.hs
--- a/lib/Aura/Install.hs
+++ b/lib/Aura/Install.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module    : Aura.Install
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Languages.hs b/lib/Aura/Languages.hs
--- a/lib/Aura/Languages.hs
+++ b/lib/Aura/Languages.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module    : Aura.Languages.Fields
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -20,7 +20,7 @@
 Denis Kasak / "stranac"                       | Croatian
 Fredrik Haikarainen / Daniel Beecham          | Swedish
 Lukas Niederbremer / Jonas Platte             | German
-Alejandro Gómez / Sergio Conde                | Spanish
+Alejandro Gómez / Sergio Conde / Max Ferrer   | Spanish
 Henry Kupty / Thiago Perrotta / Wagner Amaral | Portuguese
 Ma Jiehong / Fabien Dubosson                  | French
 Kyrylo Silin                                  | Russian
@@ -54,7 +54,7 @@
     , (Croatian,   "Denis Kasak / \"stranac\"")
     , (Swedish,    "Fredrik Haikarainen / Daniel Beecham")
     , (German,     "Lukas Niederbremer / Jonas Platte")
-    , (Spanish,    "Alejandro Gómez / Sergio Conde")
+    , (Spanish,    "Alejandro Gómez / Sergio Conde / Max Ferrer")
     , (Portuguese, "Henry Kupty / Thiago Perrotta / Wagner Amaral")
     , (French,     "Ma Jiehong / Fabien Dubosson")
     , (Russian,    "Kyrylo Silin / Alexey Kotlyarov")
@@ -271,6 +271,7 @@
 buildFail_8 :: Language -> Doc AnsiStyle
 buildFail_8 = \case
     Japanese   -> "makepkgは失敗しました。"
+    Spanish    -> "Ocurrió un error al ejecutar makepkg"
     Portuguese -> "Ocorreu um erro ao executar makepkg"
     Russian    -> "Произошла ошибка makepkg."
     Esperanto  -> "Paneo de makepkg okazis."
@@ -278,17 +279,20 @@
 
 buildFail_9 :: Language -> Doc AnsiStyle
 buildFail_9 = \case
+  Spanish   -> "Error al detectar todos los archivo de paquete (*.pkg.tar.xz)."
   Esperanto -> "Paneis detekti ĉiujn dosierojn de pakaĵoj (*.pkg.tar.xz)."
   _         -> "Failed to detect any built package files (*.pkg.tar.xz)."
 
 buildFail_10 :: Language -> Doc AnsiStyle
 buildFail_10 = \case
+  Spanish   -> "Los paquetes no se pudieron construir."
   Esperanto -> "Ĉiuj pakaĵoj paneis munti."
   _         -> "Every package failed to build."
 
 buildFail_11 :: Language -> Doc AnsiStyle
 buildFail_11 = \case
   Japanese   -> "作成は失敗しました。エラーを見ますか？"
+  Spanish    -> "Construcción fallida. ¿Te gustaría ver el error?"
   Esperanto  -> "Muntado paneis. Ĉu vi volas vidi la eraron?"
   _          -> "Building failed. Would you like to see the error?"
 
@@ -341,22 +345,26 @@
 depError _ (VerConflict s) = s
 depError _ (Ignored s)     = s
 depError l (NonExistant (PkgName s)) = case l of
+  Spanish    -> "La dependencia " <> bt s <> " no pudo ser encontrada."
   Portuguese -> "A dependência " <> bt s <> " não foi encontrada."
   Russian    -> "Зависимость " <> bt s <> " не найдена."
   Esperanto  -> "La dependeco " <> bt s <> " ne povis troviĝi."
   _          -> "The dependency " <> bt s <> " couldn't be found."
 depError l (BrokenProvides (PkgName pkg) (Provides (PkgName pro)) (PkgName n)) = case l of
+  Spanish    -> "El paquete " <> bt pkg <> " necesita " <> bt n <> " que proporciona " <> bt pro <> "."
   Russian    -> "Пакету " <> bt pkg <> " требуется " <> bt n <> ", предоставляющий " <> bt pro <> "."
   Esperanto  -> "La pakaĵo, " <> bt pkg <> " bezonas " <> bt n <> ", kiu donas " <> bt pro <> "."
   _          -> "The package " <> bt pkg <> " needs " <> bt n <> ", which provides " <> bt pro <> "."
 
 missingPkg_3 :: Language -> Doc AnsiStyle
 missingPkg_3 = \case
+  Spanish    -> "Se produjo un error al reorganizar el gráfico de dependencia. Si ves esto, algo está muy mal."
   Esperanto  -> "Eraro okazis kiam reorganizi la grafeo de dependeco. Io estas erarega."
   _          -> "There was an error reorganizing the dependency graph. If you see this, something is very wrong."
 
 missingPkg_4 :: [NonEmpty PkgName] -> Language -> Doc AnsiStyle
 missingPkg_4 pns = \case
+  Spanish    -> vsep $ "Se detectaron los siguientes ciclos de dependencia:" : pns'
   _ -> vsep $ "The following dependency cycles were detected:" : pns'
   where pns' = map (hsep . map pretty . intersperse "=>" . map (view (field @"name")) . toList) pns
 
@@ -683,6 +691,7 @@
 
 reportBadDowngradePkgs_2 :: PkgName -> Language -> Doc AnsiStyle
 reportBadDowngradePkgs_2 (PkgName p) = \case
+  Spanish     -> pretty p <+> "no tiene una versión en la caché."
   _ -> pretty p <+> "has no version in the cache."
 
 upgradeAURPkgs_1 :: Language -> Doc AnsiStyle
@@ -807,6 +816,7 @@
 cleanStates_4 :: Int -> Language -> Doc AnsiStyle
 cleanStates_4 n = \case
   Japanese  -> "現在のパッケージ状態記録：" <> pretty n <> "個。"
+  Spanish   -> "Actualmente tiene " <+> pretty n <+> "estados de paquetes guardados."
   Russian   -> "У вас сейчас " <+> pretty n <+> pluralRussian " сохраненное состояние пакета" " сохраненных состояний пакета" " сохраненных состояний пакетов." n
   Esperanto -> "Vi havas " <+> pretty n <+> " konservajn statojn de pakaĵoj."
   _         -> "You currently have" <+> pretty n <+> "saved package states."
@@ -814,16 +824,19 @@
 cleanStates_5 :: T.Text -> Language -> Doc AnsiStyle
 cleanStates_5 t = \case
   Japanese  -> "一番最近に保存されたのは：" <> pretty t
+  Spanish   -> "Guardado recientemente:" <+> pretty t
   Russian   -> "Последнее сохраненное:" <+> pretty t
   Esperanto -> "Lastaj konservaj:" <+> pretty t
   _         -> "Mostly recently saved:" <+> pretty t
 
 cleanStates_6 :: Int -> Language -> Doc AnsiStyle
 cleanStates_6 n = \case
+  Spanish   -> pretty n <+> "de estos están anclados y no se eliminarán."
   _ -> pretty n <+> "of these are pinned, and won't be removed."
 
 readState_1 :: Language -> Doc AnsiStyle
 readState_1 = \case
+    Spanish    -> "Ese archivo de estado no se pudo analizar. ¿Es un archivo JSON válido?"
     Portuguese -> "O arquivo de estado não pôde ser interpretado. É um arquivo JSON válido?"
     Russian    -> "Это состояние не распознано. Это корректный JSON?"
     Esperanto  -> "Tiu statdosiero paneis sintake analizi. Ĉu ĝi estas valida JSON?"
@@ -1152,6 +1165,7 @@
 -- https://github.com/aurapm/aura/issues/498
 connectionFailure_1 :: Language -> Doc AnsiStyle
 connectionFailure_1 = \case
+  Spanish   -> "No se pudo contactar con el AUR. ¿Tienes conexión a internet?"
   _ -> "Failed to contact the AUR. Do you have an internet connection?"
 
 infoFields :: Language -> [T.Text]
@@ -1271,6 +1285,7 @@
 restoreState_2 :: Language -> Doc AnsiStyle
 restoreState_2 = \case
     Japanese   -> "保存されたパッケージ状態がない。作るには「-B」を。"
+    Spanish    -> "No hay estados guardados para ser restaurados. (Utilice -B para guardar el estado actual)"
     Portuguese -> "Nenhum estado disponível para ser recuperado. (Utilize -B para salvar o estado atual)"
     Russian    -> "Нет сохраненных состояний для восстановления. (Используйте -B для сохранения текущего состояния)"
     Chinese    -> "没有要恢复的已保存状态。（使用 -B 保存当前状态）"
@@ -1303,6 +1318,7 @@
 --------------------------------------
 whoIsBuildUser_1 :: Language -> Doc AnsiStyle
 whoIsBuildUser_1 = \case
+    Spanish    -> "No se puede determinar el usuario que ejecutará la compilación."
     Portuguese -> "Não foi possível determinal o usuário que executará a compilação."
     Russian    -> "Не удается определить, от имени какого пользователя производить сборку."
     Esperanto  -> "Ne povas decidi, per kiu konto de uzanto munti."
@@ -1333,14 +1349,16 @@
 
 confParsing_1 :: Language -> Doc AnsiStyle
 confParsing_1 = \case
+    Spanish    -> "No fue posible analizar su archivo pacman.conf."
     Portuguese -> "Não foi possível interpretar o arquivo pacman.conf ."
     Russian    -> "Не удается распознать формат вашего файла pacman.conf."
     Esperanto  -> "Ne kapablas sintaske analizi vian dosieron, pacman.conf."
     _          -> "Unable to parse your pacman.conf file."
 
-provides_1 :: PkgName -> Doc AnsiStyle
-provides_1 (bt . view (field @"name") -> pro) =
-  pro <+> "is required as a dependency, which is provided by multiple packages. Please select one:"
+provides_1 :: PkgName -> Language -> Doc AnsiStyle
+provides_1 (bt . view (field @"name") -> pro) = \case
+    Spanish    -> pro <+> "se requiere como una dependencia, que es proporcionada por múltiples paquetes. Por favor, seleccione uno:"
+    _          -> pro <+> "is required as a dependency, which is provided by multiple packages. Please select one:"
 
 ----------------------------------
 -- Aura/Pkgbuild/Editing functions
@@ -1387,42 +1405,52 @@
 ------------------------------
 security_1 :: PkgName -> Language -> Doc AnsiStyle
 security_1 (PkgName p) = \case
+  Spanish   -> "El PKGBUILD de" <+> bt p <+> "era demasiado complejo de analizar - puede estar ofuscando código malicioso."
   _ -> "The PKGBUILD of" <+> bt p <+> "was too complex to parse - it may be obfuscating malicious code."
 
 security_2 :: T.Text -> Language -> Doc AnsiStyle
 security_2 (bt -> t) = \case
+  Spanish   -> t <+> "se puede usar para descargar scripts arbitrarios que este PKGBUILD no rastrea."
   _ -> t <+> "can be used to download arbitrary scripts that aren't tracked by this PKGBUILD."
 
 security_3 :: T.Text -> Language -> Doc AnsiStyle
 security_3 (bt -> t) = \case
+  Spanish   -> t <+> "se puede usar para ejecutar código arbitrario que este PKGBUILD no rastrea."
   _ -> t <+> "can be used to execute arbitrary code not tracked by this PKGBUILD."
 
 security_4 :: T.Text -> Language -> Doc AnsiStyle
 security_4 (bt -> t) = \case
+  Spanish   -> t <+> "indica que alguien puede estar intentando obtener acceso de root a su máquina."
   _ -> t <+> "indicates that someone may be trying to gain root access to your machine."
 
 security_5 :: PkgName -> Language -> Doc AnsiStyle
 security_5 (PkgName p) = \case
+  Spanish   -> "ADVERTENCIA: El PKGBUILD de" <+> bt p <+> "contiene expresiones bash en la lista negra."
   _ -> "WARNING: The PKGBUILD of" <+> bt p <+> "contains blacklisted bash expressions."
 
 security_6 :: Language -> Doc AnsiStyle
 security_6 = \case
+  Spanish   -> "¿Desea salir del proceso de compilación?"
   _ -> "Do you wish to quit the build process?"
 
 security_7 :: Language -> Doc AnsiStyle
 security_7 = \case
+  Spanish   -> "Se canceló el procesamiento posterior para evitar el código bash potencialmente malicioso."
   _ -> "Cancelled further processing to avoid potentially malicious bash code."
 
 security_8 :: T.Text -> Language -> Doc AnsiStyle
 security_8 (bt -> t) = \case
+  Spanish   -> t <+> "es un comando bash integrado en los campos de la matriz del PKGBUILD."
   _ -> t <+> "is a bash command inlined in your PKGBUILD array fields."
 
 security_9 :: T.Text -> Language -> Doc AnsiStyle
 security_9 (bt -> t) = \case
+  Spanish   -> t <+> "es algo extraño para tener en sus campos de matriz. ¿Es seguro?"
   _ -> t <+> "is a strange thing to have in your array fields. Is it safe?"
 
 security_10 :: T.Text -> Language -> Doc AnsiStyle
 security_10 (bt -> t) = \case
+  Spanish   -> t <+> "implica que alguien estaba tratando de ser astuto con las variables para ocultar comandos maliciosos."
   _ -> t <+> "implies that someone was trying to be clever with variables to hide malicious commands."
 
 -----------------------
@@ -1443,7 +1471,7 @@
     _          -> "[Y/n]"
 
 yesPattern :: Language -> [T.Text]
-yesPattern = \case
+yesPattern lang = map T.toCaseFold $ case lang of
     Polish     -> ["t", "tak"]
     Croatian   -> ["d", "da"]
     German     -> ["j", "ja"]
diff --git a/lib/Aura/Languages/Fields.hs b/lib/Aura/Languages/Fields.hs
--- a/lib/Aura/Languages/Fields.hs
+++ b/lib/Aura/Languages/Fields.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module    : Aura.Languages.Fields
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -273,6 +273,7 @@
 popularity :: Language -> T.Text
 popularity = \case
     Japanese   -> "人気"
+    Spanish    -> "Popularidad"
     Portuguese -> "Popularidade"
     Esperanto  -> "Populareco"
     _          -> "Popularity"
diff --git a/lib/Aura/Logo.hs b/lib/Aura/Logo.hs
--- a/lib/Aura/Logo.hs
+++ b/lib/Aura/Logo.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module    : Aura.Logo
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/MakePkg.hs b/lib/Aura/MakePkg.hs
--- a/lib/Aura/MakePkg.hs
+++ b/lib/Aura/MakePkg.hs
@@ -3,7 +3,7 @@
 
 -- |
 -- Module    : Aura.State
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Packages/AUR.hs b/lib/Aura/Packages/AUR.hs
--- a/lib/Aura/Packages/AUR.hs
+++ b/lib/Aura/Packages/AUR.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module    : Aura.Packages.AUR
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -35,11 +35,11 @@
 import           BasePrelude hiding (head)
 import           Control.Compactable (fmapEither)
 import           Control.Concurrent.STM.TVar (modifyTVar')
-import           Control.Error.Util (hush, note)
 import           Control.Effect (Carrier, Member)
 import           Control.Effect.Error (Error)
 import           Control.Effect.Lift (Lift, sendM)
 import           Control.Effect.Reader (Reader, asks)
+import           Control.Error.Util (hush, note)
 import           Control.Monad.Trans.Class (lift)
 import           Control.Monad.Trans.Maybe
 import           Control.Scheduler (Comp(..), traverseConcurrently)
diff --git a/lib/Aura/Packages/Repository.hs b/lib/Aura/Packages/Repository.hs
--- a/lib/Aura/Packages/Repository.hs
+++ b/lib/Aura/Packages/Repository.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.Packages.Repository
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -20,7 +20,7 @@
 import           Aura.Core
 import           Aura.Languages (provides_1)
 import           Aura.Pacman (pacmanLines, pacmanOutput)
-import           Aura.Settings (CommonSwitch(..), Settings, shared)
+import           Aura.Settings (CommonSwitch(..), Settings(..), shared)
 import           Aura.Types
 import           Aura.Utils (getSelection, strictText)
 import           BasePrelude hiding (try)
@@ -92,7 +92,7 @@
   traverseConcurrently Par' isInstalled ps >>= maybe f pure . listToMaybe . catMaybes
   where
     f | shared ss NoConfirm = pure . bool a pn $ pn `elem` ps
-      | otherwise = warn ss (provides_1 pn) >> getSelection (^. field @"name") (a :| as)
+      | otherwise = warn ss (provides_1 pn $ langOf ss) >> getSelection (^. field @"name") (a :| as)
 
 -- | The most recent version of a package, if it exists in the respositories.
 mostRecent :: PkgName -> IO (Either PkgName Versioning)
diff --git a/lib/Aura/Pacman.hs b/lib/Aura/Pacman.hs
--- a/lib/Aura/Pacman.hs
+++ b/lib/Aura/Pacman.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.Pacman
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -36,7 +36,7 @@
 import           Aura.Languages
 import           Aura.Types
 import           Aura.Utils (strictText)
-import           BasePrelude hiding (some, try)
+import           BasePrelude hiding (setEnv, some, try)
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy.Char8 as BL
 import qualified Data.Map.Strict as M
@@ -127,19 +127,24 @@
 ----------
 -- ACTIONS
 ----------
+
+-- | Create a pacman process to run.
+pacmanProc :: [String] -> ProcessConfig () () ()
+pacmanProc args = setEnv [("LC_ALL", "C")] $ proc "pacman" args
+
 -- | Run a pacman action that may fail. Will never throw an IO exception.
 pacman :: [T.Text] -> IO (Either Failure ())
 pacman (map T.unpack -> args) = do
-  ec <- runProcess $ proc "pacman" args
+  ec <- runProcess $ pacmanProc args
   pure . bool (Left $ Failure pacmanFailure_1) (Right ()) $ ec == ExitSuccess
 
 -- | Run some `pacman` process, but only care about whether it succeeded.
 pacmanSuccess :: [T.Text] -> IO Bool
-pacmanSuccess = fmap (== ExitSuccess) . runProcess . setStderr closed . setStdout closed . proc "pacman" . map T.unpack
+pacmanSuccess = fmap (== ExitSuccess) . runProcess . setStderr closed . setStdout closed . pacmanProc . map T.unpack
 
 -- | Runs pacman silently and returns only the stdout.
 pacmanOutput :: [T.Text] -> IO BL.ByteString
-pacmanOutput = fmap (^. _2) . readProcess . proc "pacman" . map T.unpack
+pacmanOutput = fmap (^. _2) . readProcess . pacmanProc . map T.unpack
 
 -- | Runs pacman silently and returns the stdout as UTF8-decoded `Text` lines.
 pacmanLines :: [T.Text] -> IO [T.Text]
diff --git a/lib/Aura/Pkgbuild/Base.hs b/lib/Aura/Pkgbuild/Base.hs
--- a/lib/Aura/Pkgbuild/Base.hs
+++ b/lib/Aura/Pkgbuild/Base.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module    : Aura.Pkgbuild.Base
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 
@@ -14,8 +14,9 @@
 
 import           Aura.Types
 import qualified Data.Text as T
-import           System.Path (Absolute, FileExt(..), Path, fromAbsoluteFilePath,
-                              fromUnrootedFilePath, (<.>), (</>))
+import           System.Path
+    (Absolute, FileExt(..), Path, fromAbsoluteFilePath, fromUnrootedFilePath,
+    (<.>), (</>))
 
 ---
 
diff --git a/lib/Aura/Pkgbuild/Editing.hs b/lib/Aura/Pkgbuild/Editing.hs
--- a/lib/Aura/Pkgbuild/Editing.hs
+++ b/lib/Aura/Pkgbuild/Editing.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module    : Aura.Pkgbuild.Base
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Pkgbuild/Fetch.hs b/lib/Aura/Pkgbuild/Fetch.hs
--- a/lib/Aura/Pkgbuild/Fetch.hs
+++ b/lib/Aura/Pkgbuild/Fetch.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module    : Aura.State
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Pkgbuild/Records.hs b/lib/Aura/Pkgbuild/Records.hs
--- a/lib/Aura/Pkgbuild/Records.hs
+++ b/lib/Aura/Pkgbuild/Records.hs
@@ -3,7 +3,7 @@
 
 -- |
 -- Module    : Aura.Pkgbuild.Records
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Pkgbuild/Security.hs b/lib/Aura/Pkgbuild/Security.hs
--- a/lib/Aura/Pkgbuild/Security.hs
+++ b/lib/Aura/Pkgbuild/Security.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module    : Aura.Pkgbuild.Security
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Settings.hs b/lib/Aura/Settings.hs
--- a/lib/Aura/Settings.hs
+++ b/lib/Aura/Settings.hs
@@ -3,7 +3,7 @@
 
 -- |
 -- Module    : Aura.Settings
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/State.hs b/lib/Aura/State.hs
--- a/lib/Aura/State.hs
+++ b/lib/Aura/State.hs
@@ -6,7 +6,7 @@
 
 -- |
 -- Module    : Aura.State
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Types.hs b/lib/Aura/Types.hs
--- a/lib/Aura/Types.hs
+++ b/lib/Aura/Types.hs
@@ -13,7 +13,7 @@
 
 -- |
 -- Module    : Aura.Types
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
diff --git a/lib/Aura/Utils.hs b/lib/Aura/Utils.hs
--- a/lib/Aura/Utils.hs
+++ b/lib/Aura/Utils.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module    : Aura.Utils
--- Copyright : (c) Colin Woodbury, 2012 - 2019
+-- Copyright : (c) Colin Woodbury, 2012 - 2020
 -- License   : GPL3
 -- Maintainer: Colin Woodbury <colin@fosskers.ca>
 --
@@ -202,7 +202,7 @@
 
 -- | An empty response emplies "yes".
 isAffirmative :: Language -> T.Text -> Bool
-isAffirmative l t = T.null t || elem t (yesPattern l)
+isAffirmative l t = T.null t || elem (T.toCaseFold t) (yesPattern l)
 
 -- | Doesn't prompt when `--noconfirm` is used.
 optionalPrompt :: Settings -> (Language -> Doc AnsiStyle) -> IO Bool
