Retrieve translation fot item/page/app/lang

This commit is contained in:
Jan Kvetina 2022-02-03 22:50:01 +01:00
parent ccf08623c5
commit fd541348d9
2 changed files with 49 additions and 1 deletions

View File

@ -199,12 +199,26 @@ CREATE OR REPLACE PACKAGE app AS
-- Get user language
--
FUNCTION get_user_lang
RETURN users.lang_id%TYPE;
RETURN users.lang_id%TYPE
RESULT_CACHE;
--
-- Translate page item
--
FUNCTION get_translation (
in_name translations.name%TYPE,
in_page_id translations.page_id%TYPE := NULL,
in_app_id translations.app_id%TYPE := NULL,
in_lang users.lang_id%TYPE := NULL
)
RETURN translations.value_en%TYPE;
--
-- Auth function to check if users account is active
--
FUNCTION is_active_user (
in_user_id users.user_id%TYPE := NULL

View File

@ -232,6 +232,7 @@ CREATE OR REPLACE PACKAGE BODY app AS
FUNCTION get_user_lang
RETURN users.lang_id%TYPE
RESULT_CACHE
AS
out_lang users.lang_id%TYPE;
BEGIN
@ -247,6 +248,39 @@ CREATE OR REPLACE PACKAGE BODY app AS
FUNCTION get_translation (
in_name translations.name%TYPE,
in_page_id translations.page_id%TYPE := NULL,
in_app_id translations.app_id%TYPE := NULL,
in_lang users.lang_id%TYPE := NULL
)
RETURN translations.value_en%TYPE
AS
out_value translations.value_en%TYPE;
BEGIN
SELECT
CASE COALESCE(in_lang, app.get_user_lang(), 'EN')
WHEN 'CZ' THEN MIN(t.value_cz) KEEP (DENSE_RANK FIRST ORDER BY t.page_id DESC)
WHEN 'SK' THEN MIN(t.value_sk) KEEP (DENSE_RANK FIRST ORDER BY t.page_id DESC)
WHEN 'PL' THEN MIN(t.value_pl) KEEP (DENSE_RANK FIRST ORDER BY t.page_id DESC)
WHEN 'HU' THEN MIN(t.value_hu) KEEP (DENSE_RANK FIRST ORDER BY t.page_id DESC)
ELSE MIN(t.value_en) KEEP (DENSE_RANK FIRST ORDER BY t.page_id DESC) END
INTO out_value
FROM translations t
WHERE t.app_id = COALESCE(in_app_id, app.get_app_id())
AND t.page_id IN (0, COALESCE(in_page_id, app.get_page_id()))
AND t.name = in_name;
--
RETURN out_value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- app.log_warning() ?
-- create translation ?
RETURN NULL;
END;
FUNCTION is_active_user (
in_user_id users.user_id%TYPE := NULL
)