Current section

Files

Jump to
gettext_llm lib gettext gettext_helper.ex
Raw

lib/gettext/gettext_helper.ex

defmodule GettextLLM.Gettext.GettextHelper do
@moduledoc """
Gettext Test helper. To be moved to the test folder soon.
"""
@lc_messages "LC_MESSAGES"
@spec setup_folder(%{
samples_folder_path: String.t(),
language_dirs:
list(%{
language_code: String.t(),
files:
list(%{
name: String.t(),
content: binary()
})
})
}) :: {:ok, non_neg_integer()} | {:error, any()}
def setup_folder(opts) do
# Create root
:ok = File.mkdir(opts.samples_folder_path)
# Create language dirs
Enum.each(opts.language_dirs, fn language_dir ->
:ok = File.mkdir(Path.join([opts.samples_folder_path, language_dir.language_code]))
:ok =
File.mkdir(
Path.join([opts.samples_folder_path, language_dir.language_code, @lc_messages])
)
Enum.each(language_dir.files, fn file ->
:ok =
File.write(
Path.join([
opts.samples_folder_path,
language_dir.language_code,
@lc_messages,
"#{file.name}.po"
]),
file.content
)
end)
end)
{:ok, Enum.count(opts.language_dirs)}
end
def cleanup_folder(folder_path) do
_ = File.rm_rf(folder_path)
end
@spec read_translation_file(String.t(), String.t(), String.t()) ::
{:ok, binary()} | {:error, any()}
def read_translation_file(samples_folder_path, language_code, domain) do
File.read(Path.join([samples_folder_path, language_code, @lc_messages, "#{domain}.po"]))
end
end