Fix About page crashing when instance language is not supported

Use the languages defined by CLDR on server instead, and fallback to
english if not defined

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2020-11-02 11:22:54 +01:00
parent 05a3160685
commit 9540a486ec
4 changed files with 46 additions and 2 deletions

View File

@@ -157,6 +157,22 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
end
end
def get_list_of_languages(_parent, %{codes: codes}, _resolution) when is_list(codes) do
locale = Gettext.get_locale()
locale = if Cldr.known_locale_name?(locale), do: locale, else: "en"
case Language.known_languages(locale) do
data when is_map(data) ->
data
|> Enum.map(fn {code, elem} -> %{code: code, name: elem.standard} end)
|> Enum.filter(fn %{code: code, name: _name} -> code in codes end)
|> (&{:ok, &1}).()
{:error, err} ->
{:error, err}
end
end
def get_list_of_languages(_parent, _args, _resolution) do
locale = Gettext.get_locale()

View File

@@ -123,6 +123,7 @@ defmodule Mobilizon.GraphQL.Schema.AdminType do
end
field :languages, type: list_of(:language) do
arg(:codes, list_of(:string))
resolve(&Admin.get_list_of_languages/3)
end