From e76d574ea3b9892b70c650f1018c5ff0de2ef306 Mon Sep 17 00:00:00 2001
From: Eike Kettner <eike.kettner@posteo.de>
Date: Fri, 2 Apr 2021 23:30:51 +0200
Subject: [PATCH] Externalize strings for document language

---
 .../main/elm/Comp/CollectiveSettingsForm.elm  |  2 +-
 .../src/main/elm/Comp/ScanMailboxForm.elm     |  3 +-
 .../webapp/src/main/elm/Comp/SourceForm.elm   |  4 +-
 modules/webapp/src/main/elm/Data/Language.elm | 50 ------------------
 .../Messages/CollectiveSettingsFormComp.elm   |  4 ++
 .../src/main/elm/Messages/LanguageData.elm    | 52 +++++++++++++++++++
 .../src/main/elm/Messages/SourceFormComp.elm  |  6 +++
 .../src/main/elm/Messages/UploadPage.elm      |  4 ++
 .../webapp/src/main/elm/Page/Upload/View2.elm |  2 +-
 9 files changed, 72 insertions(+), 55 deletions(-)
 create mode 100644 modules/webapp/src/main/elm/Messages/LanguageData.elm

diff --git a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
index 7ff4c716..3d11b69b 100644
--- a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
@@ -200,7 +200,7 @@ view2 flags texts settings model =
         languageCfg =
             { makeOption =
                 \l ->
-                    { text = Data.Language.toName l
+                    { text = texts.languageLabel l
                     , additional = ""
                     }
             , placeholder = ""
diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
index 10673999..de439fe4 100644
--- a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
@@ -39,6 +39,7 @@ import Html.Attributes exposing (..)
 import Html.Events exposing (onCheck, onClick, onInput)
 import Http
 import Markdown
+import Messages.LanguageData
 import Set exposing (Set)
 import Styles as S
 import Util.Folder exposing (mkFolderOption)
@@ -1054,7 +1055,7 @@ viewMetadata2 flags settings model =
             }
 
         languageCfg =
-            { display = Data.Language.toName
+            { display = Messages.LanguageData.gb
             , icon = \_ -> Nothing
             , style = DS.mainStyleWith "flex-grow mr-2"
             }
diff --git a/modules/webapp/src/main/elm/Comp/SourceForm.elm b/modules/webapp/src/main/elm/Comp/SourceForm.elm
index 1acfc588..9ef9003a 100644
--- a/modules/webapp/src/main/elm/Comp/SourceForm.elm
+++ b/modules/webapp/src/main/elm/Comp/SourceForm.elm
@@ -327,10 +327,10 @@ view2 flags texts settings model =
         languageCfg =
             { makeOption =
                 \a ->
-                    { text = Data.Language.toName a
+                    { text = texts.languageLabel a
                     , additional = ""
                     }
-            , placeholder = "Select…"
+            , placeholder = texts.selectPlaceholder
             , labelColor = \_ -> \_ -> ""
             , style = DS.mainStyle
             }
diff --git a/modules/webapp/src/main/elm/Data/Language.elm b/modules/webapp/src/main/elm/Data/Language.elm
index f0cdac3d..3ea22908 100644
--- a/modules/webapp/src/main/elm/Data/Language.elm
+++ b/modules/webapp/src/main/elm/Data/Language.elm
@@ -3,7 +3,6 @@ module Data.Language exposing
     , all
     , fromString
     , toIso3
-    , toName
     )
 
 
@@ -125,55 +124,6 @@ toIso3 lang =
             "lav"
 
 
-toName : Language -> String
-toName lang =
-    case lang of
-        German ->
-            "German"
-
-        English ->
-            "English"
-
-        French ->
-            "French"
-
-        Italian ->
-            "Italian"
-
-        Spanish ->
-            "Spanish"
-
-        Portuguese ->
-            "Portuguese"
-
-        Czech ->
-            "Czech"
-
-        Danish ->
-            "Danish"
-
-        Finnish ->
-            "Finnish"
-
-        Norwegian ->
-            "Norwegian"
-
-        Swedish ->
-            "Swedish"
-
-        Russian ->
-            "Russian"
-
-        Romanian ->
-            "Romanian"
-
-        Dutch ->
-            "Dutch"
-
-        Latvian ->
-            "Latvian"
-
-
 all : List Language
 all =
     [ German
diff --git a/modules/webapp/src/main/elm/Messages/CollectiveSettingsFormComp.elm b/modules/webapp/src/main/elm/Messages/CollectiveSettingsFormComp.elm
index eeabfe34..a00e604e 100644
--- a/modules/webapp/src/main/elm/Messages/CollectiveSettingsFormComp.elm
+++ b/modules/webapp/src/main/elm/Messages/CollectiveSettingsFormComp.elm
@@ -1,6 +1,8 @@
 module Messages.CollectiveSettingsFormComp exposing (..)
 
+import Data.Language exposing (Language)
 import Messages.ClassifierSettingsFormComp
+import Messages.LanguageData
 
 
 type alias Texts =
@@ -17,6 +19,7 @@ type alias Texts =
     , reindexAllDataHelp : String
     , autoTagging : String
     , startNow : String
+    , languageLabel : Language -> String
     }
 
 
@@ -39,4 +42,5 @@ gb =
             ++ "You must type OK before clicking the button to avoid accidental re-indexing."
     , autoTagging = "Auto-Tagging"
     , startNow = "Start now"
+    , languageLabel = Messages.LanguageData.gb
     }
diff --git a/modules/webapp/src/main/elm/Messages/LanguageData.elm b/modules/webapp/src/main/elm/Messages/LanguageData.elm
new file mode 100644
index 00000000..b55a4ef0
--- /dev/null
+++ b/modules/webapp/src/main/elm/Messages/LanguageData.elm
@@ -0,0 +1,52 @@
+module Messages.LanguageData exposing (..)
+
+import Data.Language exposing (Language(..))
+
+
+gb : Language -> String
+gb lang =
+    case lang of
+        German ->
+            "German"
+
+        English ->
+            "English"
+
+        French ->
+            "French"
+
+        Italian ->
+            "Italian"
+
+        Spanish ->
+            "Spanish"
+
+        Portuguese ->
+            "Portuguese"
+
+        Czech ->
+            "Czech"
+
+        Danish ->
+            "Danish"
+
+        Finnish ->
+            "Finnish"
+
+        Norwegian ->
+            "Norwegian"
+
+        Swedish ->
+            "Swedish"
+
+        Russian ->
+            "Russian"
+
+        Romanian ->
+            "Romanian"
+
+        Dutch ->
+            "Dutch"
+
+        Latvian ->
+            "Latvian"
diff --git a/modules/webapp/src/main/elm/Messages/SourceFormComp.elm b/modules/webapp/src/main/elm/Messages/SourceFormComp.elm
index 9269cd4f..ab941c80 100644
--- a/modules/webapp/src/main/elm/Messages/SourceFormComp.elm
+++ b/modules/webapp/src/main/elm/Messages/SourceFormComp.elm
@@ -1,6 +1,8 @@
 module Messages.SourceFormComp exposing (..)
 
+import Data.Language exposing (Language)
 import Messages.Basics
+import Messages.LanguageData
 
 
 type alias Texts =
@@ -20,6 +22,8 @@ type alias Texts =
     , fileFilterInfo : String
     , language : String
     , languageInfo : String
+    , languageLabel : Language -> String
+    , selectPlaceholder : String
     }
 
 
@@ -58,4 +62,6 @@ Specify a file glob to filter files when uploading archives
     , languageInfo =
         "Used for text extraction and analysis. The collective's "
             ++ "default language is used if not specified here."
+    , languageLabel = Messages.LanguageData.gb
+    , selectPlaceholder = "Select…"
     }
diff --git a/modules/webapp/src/main/elm/Messages/UploadPage.elm b/modules/webapp/src/main/elm/Messages/UploadPage.elm
index 8ca93efa..08524567 100644
--- a/modules/webapp/src/main/elm/Messages/UploadPage.elm
+++ b/modules/webapp/src/main/elm/Messages/UploadPage.elm
@@ -1,7 +1,9 @@
 module Messages.UploadPage exposing (..)
 
+import Data.Language exposing (Language)
 import Messages.Basics
 import Messages.DropzoneComp
+import Messages.LanguageData
 
 
 type alias Texts =
@@ -25,6 +27,7 @@ type alias Texts =
         , resetLine2 : String
         }
     , selectedFiles : String
+    , languageLabel : Language -> String
     }
 
 
@@ -54,6 +57,7 @@ gb =
         , resetLine2 = " to upload more files."
         }
     , selectedFiles = "Selected Files"
+    , languageLabel = Messages.LanguageData.gb
     }
 
 
diff --git a/modules/webapp/src/main/elm/Page/Upload/View2.elm b/modules/webapp/src/main/elm/Page/Upload/View2.elm
index 108d64c4..0cc8cb35 100644
--- a/modules/webapp/src/main/elm/Page/Upload/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Upload/View2.elm
@@ -74,7 +74,7 @@ renderForm : Texts -> Model -> Html Msg
 renderForm texts model =
     let
         languageCfg =
-            { display = Data.Language.toName
+            { display = texts.languageLabel
             , icon = \_ -> Nothing
             , style = DS.mainStyleWith "w-40"
             }