Current section

Files

Jump to
kielet src kielet@database.erl
Raw

src/kielet@database.erl

-module(kielet@database).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, add_language/2, translate_singular/4, translate_plural/6]).
-export_type([database/0]).
-opaque database() :: {database,
gleam@dict:dict(binary(), kielet@language:language())}.
-file("/Users/nicd/svn/kielet/src/kielet/database.gleam", 12).
-spec new() -> database().
new() ->
{database, gleam@dict:new()}.
-file("/Users/nicd/svn/kielet/src/kielet/database.gleam", 17).
-spec add_language(database(), kielet@language:language()) -> database().
add_language(Db, Lang) ->
{database,
gleam@dict:insert(
erlang:element(2, Db),
kielet@language:get_code(Lang),
Lang
)}.
-file("/Users/nicd/svn/kielet/src/kielet/database.gleam", 25).
-spec translate_singular(
database(),
gleam@option:option(binary()),
binary(),
binary()
) -> binary().
translate_singular(Db, Context, Msgid, Language_code) ->
case gleam@dict:get(erlang:element(2, Db), Language_code) of
{ok, Lang} ->
case kielet@language:get_singular_translation(Lang, Context, Msgid) of
{ok, Translation} ->
Translation;
{error, _} ->
Msgid
end;
{error, _} ->
Msgid
end.
-file("/Users/nicd/svn/kielet/src/kielet/database.gleam", 65).
-spec default_pick_plural(binary(), binary(), integer()) -> binary().
default_pick_plural(Msgid, Plural, N) ->
case N of
1 ->
Msgid;
_ ->
Plural
end.
-file("/Users/nicd/svn/kielet/src/kielet/database.gleam", 47).
-spec translate_plural(
database(),
gleam@option:option(binary()),
binary(),
binary(),
integer(),
binary()
) -> binary().
translate_plural(Db, Context, Msgid, Plural, N, Language_code) ->
case gleam@dict:get(erlang:element(2, Db), Language_code) of
{ok, Lang} ->
case kielet@language:get_plural_translation(Lang, Context, Msgid, N) of
{ok, Translation} ->
Translation;
{error, _} ->
default_pick_plural(Msgid, Plural, N)
end;
{error, _} ->
default_pick_plural(Msgid, Plural, N)
end.