feat: complete change to gettext from homebrew i18n solution
This commit is contained in:
@@ -3,7 +3,6 @@ defmodule BDS.Rendering.Filters do
|
||||
|
||||
use Liquex.Filter
|
||||
|
||||
alias BDS.I18n
|
||||
alias BDS.Slug
|
||||
|
||||
def i18n(value, language, _context) do
|
||||
@@ -12,7 +11,7 @@ defmodule BDS.Rendering.Filters do
|
||||
if key == "" do
|
||||
""
|
||||
else
|
||||
I18n.translate(language, key)
|
||||
BDS.Gettext.lgettext(language, "render", key)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -59,7 +58,7 @@ defmodule BDS.Rendering.Filters do
|
||||
default_macro_title(
|
||||
Map.get(params, "title"),
|
||||
language,
|
||||
"render.video.youtubeTitle"
|
||||
"YouTube video"
|
||||
)
|
||||
},
|
||||
context
|
||||
@@ -71,7 +70,7 @@ defmodule BDS.Rendering.Filters do
|
||||
%{
|
||||
"id" => Map.get(params, "id", ""),
|
||||
"title" =>
|
||||
default_macro_title(Map.get(params, "title"), language, "render.video.vimeoTitle")
|
||||
default_macro_title(Map.get(params, "title"), language, "Vimeo video")
|
||||
},
|
||||
context
|
||||
)
|
||||
@@ -82,13 +81,17 @@ defmodule BDS.Rendering.Filters do
|
||||
end)
|
||||
end
|
||||
|
||||
defp default_macro_title(nil, language, translation_key),
|
||||
do: I18n.translate(language, translation_key)
|
||||
defp default_macro_title(nil, language, translation),
|
||||
do: translated_macro_title(language, translation)
|
||||
|
||||
defp default_macro_title("", language, translation_key),
|
||||
do: I18n.translate(language, translation_key)
|
||||
defp default_macro_title("", language, translation),
|
||||
do: translated_macro_title(language, translation)
|
||||
|
||||
defp default_macro_title(title, _language, _translation_key), do: title
|
||||
defp default_macro_title(title, _language, _translation), do: title
|
||||
|
||||
defp translated_macro_title(language, translation) do
|
||||
BDS.Gettext.lgettext(language, "render", translation)
|
||||
end
|
||||
|
||||
defp parse_macro_params(nil), do: %{}
|
||||
defp parse_macro_params(""), do: %{}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
defmodule BDS.Rendering.I18n do
|
||||
@moduledoc false
|
||||
|
||||
defdelegate supported_languages(), to: BDS.I18n
|
||||
defdelegate normalize_language(language), to: BDS.I18n
|
||||
defdelegate translate(language, key), to: BDS.I18n
|
||||
defdelegate flag(language), to: BDS.I18n
|
||||
end
|
||||
88
lib/bds/rendering/labels.ex
Normal file
88
lib/bds/rendering/labels.ex
Normal file
@@ -0,0 +1,88 @@
|
||||
defmodule BDS.Rendering.Labels do
|
||||
@moduledoc """
|
||||
Pre-translated render labels passed into Liquid template context.
|
||||
|
||||
All strings use constant msgids so mix gettext.extract can discover them.
|
||||
The render locale is bound explicitly via Gettext.with_locale/3.
|
||||
"""
|
||||
|
||||
use Gettext, backend: BDS.Gettext
|
||||
|
||||
def for_language(language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn ->
|
||||
%{
|
||||
taxonomy_label: dgettext("render", "Taxonomy"),
|
||||
backlinks_label: dgettext("render", "Backlinks"),
|
||||
linked_from_label: dgettext("render", "Linked from"),
|
||||
archive_label: dgettext("render", "Archive"),
|
||||
pagination_label: dgettext("render", "Pagination"),
|
||||
newer_label: dgettext("render", "newer"),
|
||||
older_label: dgettext("render", "older"),
|
||||
calendar_open_label: dgettext("render", "Open calendar"),
|
||||
calendar_loading_label: dgettext("render", "Loading calendar…"),
|
||||
calendar_error_label: dgettext("render", "Calendar data could not be loaded."),
|
||||
calendar_title_label: dgettext("render", "Archive calendar"),
|
||||
calendar_close_label: dgettext("render", "Close calendar"),
|
||||
language_switcher_label: dgettext("render", "Language"),
|
||||
site_search_label: dgettext("render", "Site search"),
|
||||
search_placeholder: dgettext("render", "Search..."),
|
||||
not_found_message: dgettext("render", "The requested preview page could not be found."),
|
||||
not_found_back_label: dgettext("render", "Back to preview home"),
|
||||
youtube_video: dgettext("render", "YouTube video"),
|
||||
vimeo_video: dgettext("render", "Vimeo video")
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
def month_name(nil, _language), do: nil
|
||||
|
||||
def month_name(1, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "January") end)
|
||||
end
|
||||
|
||||
def month_name(2, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "February") end)
|
||||
end
|
||||
|
||||
def month_name(3, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "March") end)
|
||||
end
|
||||
|
||||
def month_name(4, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "April") end)
|
||||
end
|
||||
|
||||
def month_name(5, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "May") end)
|
||||
end
|
||||
|
||||
def month_name(6, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "June") end)
|
||||
end
|
||||
|
||||
def month_name(7, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "July") end)
|
||||
end
|
||||
|
||||
def month_name(8, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "August") end)
|
||||
end
|
||||
|
||||
def month_name(9, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "September") end)
|
||||
end
|
||||
|
||||
def month_name(10, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "October") end)
|
||||
end
|
||||
|
||||
def month_name(11, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "November") end)
|
||||
end
|
||||
|
||||
def month_name(12, language) do
|
||||
Gettext.with_locale(BDS.Gettext, language, fn -> dgettext("render", "December") end)
|
||||
end
|
||||
|
||||
def month_name(_month, _language), do: nil
|
||||
end
|
||||
@@ -1,13 +1,14 @@
|
||||
defmodule BDS.Rendering.ListArchive do
|
||||
@moduledoc false
|
||||
|
||||
alias BDS.I18n
|
||||
alias BDS.MapUtils
|
||||
alias BDS.Persistence
|
||||
alias BDS.Rendering.Labels
|
||||
alias BDS.Rendering.LinksAndLanguages
|
||||
alias BDS.Rendering.Metadata, as: RenderMetadata
|
||||
alias BDS.Rendering.PostRendering
|
||||
alias BDS.Rendering.TemplateSelection
|
||||
use Gettext, backend: BDS.Gettext
|
||||
|
||||
def list_assigns(project_id, assigns) do
|
||||
metadata = RenderMetadata.project_metadata(project_id)
|
||||
@@ -95,7 +96,9 @@ defmodule BDS.Rendering.ListArchive do
|
||||
canonical_media_path_by_source_path: canonical_media_paths,
|
||||
post_data_json_by_id:
|
||||
Enum.into(posts, %{}, fn post -> {post.id, PostRendering.post_data_json_value(post)} end),
|
||||
day_blocks: day_blocks
|
||||
day_blocks: day_blocks,
|
||||
archive_month_name: Labels.month_name(Map.get(normalized_archive_context, :month), language),
|
||||
labels: Labels.for_language(language)
|
||||
}
|
||||
end
|
||||
|
||||
@@ -145,7 +148,7 @@ defmodule BDS.Rendering.ListArchive do
|
||||
Map.get(
|
||||
assigns,
|
||||
"not_found_message",
|
||||
I18n.translate(language, "render.notFound.message")
|
||||
BDS.Gettext.lgettext(language, "render", "The requested preview page could not be found.")
|
||||
)
|
||||
),
|
||||
not_found_back_label:
|
||||
@@ -155,9 +158,10 @@ defmodule BDS.Rendering.ListArchive do
|
||||
Map.get(
|
||||
assigns,
|
||||
"not_found_back_label",
|
||||
I18n.translate(language, "render.notFound.back")
|
||||
BDS.Gettext.lgettext(language, "render", "Back to preview home")
|
||||
)
|
||||
)
|
||||
),
|
||||
labels: Labels.for_language(language)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ defmodule BDS.Rendering.PostRendering do
|
||||
@moduledoc false
|
||||
|
||||
alias BDS.Rendering.Filters
|
||||
alias BDS.Rendering.Labels
|
||||
alias BDS.Rendering.LinksAndLanguages
|
||||
alias BDS.Rendering.Metadata, as: RenderMetadata
|
||||
alias BDS.Rendering.TemplateSelection
|
||||
@@ -95,7 +96,8 @@ defmodule BDS.Rendering.PostRendering do
|
||||
canonical_post_path_by_slug: canonical_post_paths,
|
||||
canonical_media_path_by_source_path: canonical_media_paths,
|
||||
post_data_json_by_id: post_data_json(post_assigns, post_record),
|
||||
post: build_post_context(post_assigns, post_record, incoming_links, outgoing_links)
|
||||
post: build_post_context(post_assigns, post_record, incoming_links, outgoing_links),
|
||||
labels: Labels.for_language(language)
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user