From c89c2fcf73a369c0c192f7251d1a10d2722906d8 Mon Sep 17 00:00:00 2001
From: Brooks Travis <brooks.travis@gmail.com>
Date: Thu, 2 Nov 2023 01:56:26 -0500
Subject: [PATCH] Moving i18n_config.py and en.json into main package, and
 adding ability to specify a i18n config directory via environment variable or
 use the current migration project base directory, falling back to packaged.
 Fixes i18n changes require files not included in the package distribution
 #703

---
 conftest.py                                     |  3 ++-
 src/folio_migration_tools/__main__.py           | 17 +++++++++++------
 .../folio_migration_tools/i18n_config.py        |  0
 .../folio_migration_tools/translations}/en.json |  2 +-
 tests/test_basic.py                             |  2 +-
 5 files changed, 15 insertions(+), 9 deletions(-)
 rename i18n_config.py => src/folio_migration_tools/i18n_config.py (100%)
 rename {translations => src/folio_migration_tools/translations}/en.json (99%)

diff --git a/conftest.py b/conftest.py
index 50682fc7..17d30af8 100644
--- a/conftest.py
+++ b/conftest.py
@@ -1,4 +1,5 @@
 from pathlib import Path
+
 import pytest
 
 
@@ -10,7 +11,7 @@ def pytest_addoption(parser):
     # parser.addoption("--folio_release", action="store")
 
 
-i18n_config_file = Path(__file__).parent / "i18n_config.py"
+i18n_config_file = Path(__file__).parent / "src/folio_migration_tools/i18n_config.py"
 
 
 @pytest.fixture(scope="session", autouse=True)
diff --git a/src/folio_migration_tools/__main__.py b/src/folio_migration_tools/__main__.py
index d63dcb76..0b03d9bd 100644
--- a/src/folio_migration_tools/__main__.py
+++ b/src/folio_migration_tools/__main__.py
@@ -1,23 +1,20 @@
 import json
 import logging
 import sys
-from pathlib import Path
 from os import environ
+from pathlib import Path
 
 import httpx
 import humps
+import i18n
 from argparse_prompt import PromptParser
 from pydantic import ValidationError
 
+from folio_migration_tools.config_file_load import merge_load
 from folio_migration_tools.custom_exceptions import TransformationProcessError
 from folio_migration_tools.library_configuration import LibraryConfiguration
 from folio_migration_tools.migration_tasks import *  # noqa: F403, F401
 from folio_migration_tools.migration_tasks import migration_task_base
-from folio_migration_tools.config_file_load import merge_load
-
-import i18n
-
-i18n.load_config(Path(__file__).parents[2] / "i18n_config.py")
 
 
 def parse_args(args):
@@ -68,6 +65,14 @@ def main():
         task_classes = list(inheritors(migration_task_base.MigrationTaskBase))
 
         args = parse_args(sys.argv[1:])
+        try:
+            i18n.load_config(
+                Path(
+                    environ.get(
+                        "FOLIO_MIGRATION_TOOLS_I18N_CONFIG_BASE_PATH"
+                    ) or args.base_folder_path) / "i18n_config.py")
+        except i18n.I18nFileLoadError:
+            i18n.load_config(Path(__file__).parent / "i18n_config.py")
         i18n.set("locale", args.report_language)
         config_file_humped = merge_load(args.configuration_path)
         config_file_humped["libraryInformation"]["okapiPassword"] = args.okapi_password
diff --git a/i18n_config.py b/src/folio_migration_tools/i18n_config.py
similarity index 100%
rename from i18n_config.py
rename to src/folio_migration_tools/i18n_config.py
diff --git a/translations/en.json b/src/folio_migration_tools/translations/en.json
similarity index 99%
rename from translations/en.json
rename to src/folio_migration_tools/translations/en.json
index c755371a..079aa1e6 100644
--- a/translations/en.json
+++ b/src/folio_migration_tools/translations/en.json
@@ -441,4 +441,4 @@
   "legacy id from %{fro}": "legacy id from %{fro}",
   "naturalId mapped from %{fro}": "naturalId mapped from %{fro}",
   "no matching identifier_types in %{names}": "no matching identifier_types in %{names}"
-}
\ No newline at end of file
+}
diff --git a/tests/test_basic.py b/tests/test_basic.py
index 6c706676..19cf03cb 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -52,7 +52,7 @@ def test_dedupe():
 
 
 def test_blurb_internationalization():
-    i18n.load_config(Path(__file__).parents[1] / "i18n_config.py")
+    i18n.load_config(Path(__file__).parents[1] / "src/folio_migration_tools/i18n_config.py")
     assert i18n.t("blurbs.Introduction.title") == "Introduction"