Translations simplified
This commit is contained in:
parent
9447df5a0f
commit
306c20b215
File diff suppressed because it is too large
Load Diff
@ -20,10 +20,10 @@ wwv_flow_api.create_flow_process(
|
||||
,p_process_sql_clob=>wwv_flow_string.join(wwv_flow_t_varchar2(
|
||||
'-- load translations',
|
||||
'FOR c IN (',
|
||||
' SELECT t.name, t.item_name',
|
||||
' FROM translations_mapped t',
|
||||
' SELECT t.item_name',
|
||||
' FROM translated_items t',
|
||||
') LOOP',
|
||||
' app.set_item(c.item_name, app.get_translation(c.name), in_raise => FALSE);',
|
||||
' app.set_item(c.item_name, app.get_translated_item(c.item_name), in_raise => FALSE);',
|
||||
'END LOOP;'))
|
||||
,p_process_clob_language=>'PLSQL'
|
||||
);
|
||||
|
||||
@ -209,15 +209,27 @@ CREATE OR REPLACE PACKAGE app AS
|
||||
|
||||
|
||||
--
|
||||
-- Translate page item
|
||||
-- Translate page/app item
|
||||
--
|
||||
FUNCTION get_translation (
|
||||
in_name translation_items.name%TYPE,
|
||||
in_page_id translation_items.page_id%TYPE := NULL,
|
||||
in_app_id translation_items.app_id%TYPE := NULL,
|
||||
FUNCTION get_translated_item (
|
||||
in_name VARCHAR2,
|
||||
in_page_id navigation.page_id%TYPE := NULL,
|
||||
in_app_id navigation.app_id%TYPE := NULL,
|
||||
in_lang users.lang_id%TYPE := NULL
|
||||
)
|
||||
RETURN translations.value_en%TYPE;
|
||||
RETURN VARCHAR2;
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Translate message
|
||||
--
|
||||
FUNCTION get_translated_message (
|
||||
in_name VARCHAR2,
|
||||
in_app_id navigation.app_id%TYPE := NULL,
|
||||
in_lang users.lang_id%TYPE := NULL
|
||||
)
|
||||
RETURN VARCHAR2;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -247,32 +247,51 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
|
||||
|
||||
|
||||
FUNCTION get_translation (
|
||||
in_name translation_items.name%TYPE,
|
||||
in_page_id translation_items.page_id%TYPE := NULL,
|
||||
in_app_id translation_items.app_id%TYPE := NULL,
|
||||
FUNCTION get_translated_item (
|
||||
in_name VARCHAR2,
|
||||
in_page_id navigation.page_id%TYPE := NULL,
|
||||
in_app_id navigation.app_id%TYPE := NULL,
|
||||
in_lang users.lang_id%TYPE := NULL
|
||||
)
|
||||
RETURN translations.value_en%TYPE
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
out_value translation_items.value_en%TYPE;
|
||||
out_value translated_items.value_en%TYPE;
|
||||
BEGIN
|
||||
-- how often do you add new languages?
|
||||
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
|
||||
WHEN 'CZ' THEN MIN(t.value_cz) KEEP (DENSE_RANK FIRST ORDER BY t.item_name DESC)
|
||||
WHEN 'SK' THEN MIN(t.value_sk) KEEP (DENSE_RANK FIRST ORDER BY t.item_name DESC)
|
||||
WHEN 'PL' THEN MIN(t.value_pl) KEEP (DENSE_RANK FIRST ORDER BY t.item_name DESC)
|
||||
WHEN 'HU' THEN MIN(t.value_hu) KEEP (DENSE_RANK FIRST ORDER BY t.item_name DESC)
|
||||
ELSE MIN(t.value_en) KEEP (DENSE_RANK FIRST ORDER BY t.item_name DESC) END
|
||||
INTO out_value
|
||||
FROM translation_items t
|
||||
FROM translated_items 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;
|
||||
AND t.item_name IN (
|
||||
in_name,
|
||||
REGEXP_REPLACE(in_name, '^([A-Z]+)[_]', '\1' || COALESCE(in_page_id, app.get_page_id()) || '_'),
|
||||
REGEXP_REPLACE(in_name, '^([A-Z]+)[_]', '\1' || '0_')
|
||||
);
|
||||
--
|
||||
RETURN out_value;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
FUNCTION get_translated_message (
|
||||
in_name VARCHAR2,
|
||||
in_app_id navigation.app_id%TYPE := NULL,
|
||||
in_lang users.lang_id%TYPE := NULL
|
||||
)
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
out_value translated_messages.value_en%TYPE;
|
||||
BEGIN
|
||||
-- how often do you add new languages?
|
||||
SELECT
|
||||
CASE COALESCE(in_lang, app.get_user_lang(), 'EN')
|
||||
WHEN 'CZ' THEN t.value_cz
|
||||
@ -281,16 +300,13 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
WHEN 'HU' THEN t.value_hu
|
||||
ELSE t.value_en END
|
||||
INTO out_value
|
||||
FROM translations t
|
||||
FROM translated_messages t
|
||||
WHERE t.app_id = COALESCE(in_app_id, app.get_app_id())
|
||||
AND t.name = in_name;
|
||||
END;
|
||||
AND t.message = in_name;
|
||||
--
|
||||
RETURN out_value;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND THEN
|
||||
-- app.log_warning() ?
|
||||
-- create translation ?
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
@ -2897,7 +2913,7 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
||||
END IF;
|
||||
|
||||
-- translate message
|
||||
out_result.message := NVL(app.get_translation(out_result.message), out_result.message);
|
||||
out_result.message := NVL(app.get_translated_message(out_result.message), out_result.message);
|
||||
|
||||
-- show only the latest error message to common users
|
||||
/*
|
||||
|
||||
@ -365,18 +365,31 @@ CREATE OR REPLACE PACKAGE app_actions AS
|
||||
--
|
||||
-- Update translations
|
||||
--
|
||||
PROCEDURE save_translations_overview (
|
||||
PROCEDURE save_translated_items (
|
||||
in_action CHAR,
|
||||
in_app_id translations_overview.app_id%TYPE,
|
||||
in_old_name translations_overview.old_name%TYPE,
|
||||
in_old_page_id translations_overview.old_page_id%TYPE,
|
||||
in_name translations_overview.name%TYPE,
|
||||
in_page_id translations_overview.page_id%TYPE,
|
||||
in_value_en translations_overview.value_en%TYPE := NULL,
|
||||
in_value_cz translations_overview.value_cz%TYPE := NULL,
|
||||
in_value_sk translations_overview.value_sk%TYPE := NULL,
|
||||
in_value_pl translations_overview.value_pl%TYPE := NULL,
|
||||
in_value_hu translations_overview.value_hu%TYPE := NULL
|
||||
out_item_name IN OUT translated_items_overview.out_item_name%TYPE,
|
||||
in_item_name translated_items_overview.item_name%TYPE,
|
||||
in_value_en translated_items_overview.value_en%TYPE,
|
||||
in_value_cz translated_items_overview.value_cz%TYPE,
|
||||
in_value_sk translated_items_overview.value_sk%TYPE,
|
||||
in_value_pl translated_items_overview.value_pl%TYPE,
|
||||
in_value_hu translated_items_overview.value_hu%TYPE
|
||||
);
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Update translations
|
||||
--
|
||||
PROCEDURE save_translated_messages (
|
||||
in_action CHAR,
|
||||
out_message IN OUT translated_messages_overview.out_message%TYPE,
|
||||
in_message translated_messages_overview.message%TYPE,
|
||||
in_value_en translated_messages_overview.value_en%TYPE,
|
||||
in_value_cz translated_messages_overview.value_cz%TYPE,
|
||||
in_value_sk translated_messages_overview.value_sk%TYPE,
|
||||
in_value_pl translated_messages_overview.value_pl%TYPE,
|
||||
in_value_hu translated_messages_overview.value_hu%TYPE
|
||||
);
|
||||
|
||||
END;
|
||||
|
||||
@ -279,8 +279,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
||||
WHEN app.app_exception THEN
|
||||
RAISE;
|
||||
WHEN OTHERS THEN
|
||||
app.log_error();
|
||||
RAISE;
|
||||
app.raise_error();
|
||||
END;
|
||||
|
||||
|
||||
@ -353,8 +352,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
||||
WHEN app.app_exception THEN
|
||||
RAISE;
|
||||
WHEN OTHERS THEN
|
||||
app.log_error();
|
||||
RAISE;
|
||||
app.raise_error();
|
||||
END;
|
||||
|
||||
|
||||
@ -625,8 +623,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
||||
WHEN app.app_exception THEN
|
||||
RAISE;
|
||||
WHEN OTHERS THEN
|
||||
app.log_error();
|
||||
RAISE;
|
||||
app.raise_error();
|
||||
END;
|
||||
|
||||
|
||||
@ -1141,54 +1138,111 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
|
||||
|
||||
|
||||
|
||||
PROCEDURE save_translations_overview (
|
||||
PROCEDURE save_translated_items (
|
||||
in_action CHAR,
|
||||
in_app_id translations_overview.app_id%TYPE,
|
||||
in_old_name translations_overview.old_name%TYPE,
|
||||
in_old_page_id translations_overview.old_page_id%TYPE,
|
||||
in_name translations_overview.name%TYPE,
|
||||
in_page_id translations_overview.page_id%TYPE,
|
||||
in_value_en translations_overview.value_en%TYPE := NULL,
|
||||
in_value_cz translations_overview.value_cz%TYPE := NULL,
|
||||
in_value_sk translations_overview.value_sk%TYPE := NULL,
|
||||
in_value_pl translations_overview.value_pl%TYPE := NULL,
|
||||
in_value_hu translations_overview.value_hu%TYPE := NULL
|
||||
out_item_name IN OUT translated_items_overview.out_item_name%TYPE,
|
||||
in_item_name translated_items_overview.item_name%TYPE,
|
||||
in_value_en translated_items_overview.value_en%TYPE,
|
||||
in_value_cz translated_items_overview.value_cz%TYPE,
|
||||
in_value_sk translated_items_overview.value_sk%TYPE,
|
||||
in_value_pl translated_items_overview.value_pl%TYPE,
|
||||
in_value_hu translated_items_overview.value_hu%TYPE
|
||||
) AS
|
||||
rec translation_items%ROWTYPE;
|
||||
rec translated_items%ROWTYPE;
|
||||
v_log_id logs.log_id%TYPE;
|
||||
BEGIN
|
||||
app.log_module(in_action, in_old_page_id, in_page_id, in_old_name, in_name);
|
||||
v_log_id := app.log_module_json (
|
||||
'action', in_action,
|
||||
'old_item_name', out_item_name,
|
||||
'item_name', in_item_name
|
||||
);
|
||||
--
|
||||
rec.app_id := in_app_id;
|
||||
rec.page_id := NVL(in_page_id, 0);
|
||||
rec.name := in_name;
|
||||
rec.app_id := app.get_app_id();
|
||||
rec.item_name := in_item_name;
|
||||
rec.value_en := in_value_en;
|
||||
rec.value_cz := in_value_cz;
|
||||
rec.value_sk := in_value_sk;
|
||||
rec.value_pl := in_value_pl;
|
||||
rec.value_hu := in_value_hu;
|
||||
rec.updated_by := app.get_user_id();
|
||||
rec.updated_at := SYSDATE;
|
||||
--
|
||||
IF in_action = 'D' THEN
|
||||
DELETE FROM translation_items t
|
||||
WHERE t.app_id = in_app_id
|
||||
AND t.page_id = in_old_page_id
|
||||
AND t.name = in_old_name;
|
||||
--
|
||||
app.log_success();
|
||||
RETURN;
|
||||
END IF;
|
||||
--
|
||||
UPDATE translation_items t
|
||||
DELETE FROM translated_items t
|
||||
WHERE t.app_id = rec.app_id
|
||||
AND t.item_name = out_item_name;
|
||||
ELSE
|
||||
UPDATE translated_items t
|
||||
SET ROW = rec
|
||||
WHERE t.app_id = in_app_id
|
||||
AND t.page_id = in_old_page_id
|
||||
AND t.name = in_old_name;
|
||||
WHERE t.app_id = rec.app_id
|
||||
AND t.item_name = out_item_name;
|
||||
--
|
||||
IF SQL%ROWCOUNT = 0 THEN
|
||||
INSERT INTO translation_items
|
||||
INSERT INTO translated_items
|
||||
VALUES rec;
|
||||
END IF;
|
||||
END IF;
|
||||
--
|
||||
app.log_success();
|
||||
out_item_name := rec.item_name;
|
||||
--
|
||||
app.log_success(v_log_id);
|
||||
EXCEPTION
|
||||
WHEN app.app_exception THEN
|
||||
RAISE;
|
||||
WHEN OTHERS THEN
|
||||
app.raise_error();
|
||||
END;
|
||||
|
||||
|
||||
|
||||
PROCEDURE save_translated_messages (
|
||||
in_action CHAR,
|
||||
out_message IN OUT translated_messages_overview.out_message%TYPE,
|
||||
in_message translated_messages_overview.message%TYPE,
|
||||
in_value_en translated_messages_overview.value_en%TYPE,
|
||||
in_value_cz translated_messages_overview.value_cz%TYPE,
|
||||
in_value_sk translated_messages_overview.value_sk%TYPE,
|
||||
in_value_pl translated_messages_overview.value_pl%TYPE,
|
||||
in_value_hu translated_messages_overview.value_hu%TYPE
|
||||
) AS
|
||||
rec translated_messages%ROWTYPE;
|
||||
v_log_id logs.log_id%TYPE;
|
||||
BEGIN
|
||||
v_log_id := app.log_module_json (
|
||||
'action', in_action,
|
||||
'old_message', out_message,
|
||||
'message', in_message
|
||||
);
|
||||
--
|
||||
rec.app_id := app.get_app_id();
|
||||
rec.message := in_message;
|
||||
rec.value_en := in_value_en;
|
||||
rec.value_cz := in_value_cz;
|
||||
rec.value_sk := in_value_sk;
|
||||
rec.value_pl := in_value_pl;
|
||||
rec.value_hu := in_value_hu;
|
||||
rec.updated_by := app.get_user_id();
|
||||
rec.updated_at := SYSDATE;
|
||||
--
|
||||
IF in_action = 'D' THEN
|
||||
DELETE FROM translated_messages t
|
||||
WHERE t.app_id = rec.app_id
|
||||
AND t.message = out_message;
|
||||
ELSE
|
||||
UPDATE translated_messages t
|
||||
SET ROW = rec
|
||||
WHERE t.app_id = rec.app_id
|
||||
AND t.message = out_message;
|
||||
--
|
||||
IF SQL%ROWCOUNT = 0 THEN
|
||||
INSERT INTO translated_messages
|
||||
VALUES rec;
|
||||
END IF;
|
||||
END IF;
|
||||
--
|
||||
out_message := rec.message;
|
||||
--
|
||||
app.log_success(v_log_id);
|
||||
EXCEPTION
|
||||
WHEN app.app_exception THEN
|
||||
RAISE;
|
||||
|
||||
@ -327,8 +327,7 @@ CREATE OR REPLACE PACKAGE BODY gen AS
|
||||
DBMS_OUTPUT.PUT_LINE(' WHEN app.app_exception THEN');
|
||||
DBMS_OUTPUT.PUT_LINE(' RAISE;');
|
||||
DBMS_OUTPUT.PUT_LINE(' WHEN OTHERS THEN');
|
||||
DBMS_OUTPUT.PUT_LINE(' app.log_error();');
|
||||
DBMS_OUTPUT.PUT_LINE(' RAISE;');
|
||||
DBMS_OUTPUT.PUT_LINE(' app.raise_error();');
|
||||
DBMS_OUTPUT.PUT_LINE(' END;');
|
||||
END;
|
||||
|
||||
|
||||
33
tables/translated_items.sql
Normal file
33
tables/translated_items.sql
Normal file
@ -0,0 +1,33 @@
|
||||
--DROP TABLE translated_items PURGE;
|
||||
CREATE TABLE translated_items (
|
||||
app_id NUMBER(4) CONSTRAINT nn_translated_items_app_id NOT NULL,
|
||||
item_name VARCHAR2(64) CONSTRAINT nn_translated_items_name NOT NULL,
|
||||
--
|
||||
value_en VARCHAR2(256),
|
||||
value_cz VARCHAR2(256),
|
||||
value_sk VARCHAR2(256),
|
||||
value_pl VARCHAR2(256),
|
||||
value_hu VARCHAR2(256),
|
||||
--
|
||||
updated_by VARCHAR2(30),
|
||||
updated_at DATE,
|
||||
--
|
||||
CONSTRAINT pk_translated_items
|
||||
PRIMARY KEY (app_id, item_name),
|
||||
--
|
||||
CONSTRAINT fk_translated_items_app_id
|
||||
FOREIGN KEY (app_id)
|
||||
REFERENCES apps (app_id)
|
||||
)
|
||||
STORAGE (BUFFER_POOL KEEP);
|
||||
--
|
||||
COMMENT ON TABLE translated_items IS '[CORE] Translations for page/app items';
|
||||
--
|
||||
COMMENT ON COLUMN translated_items.app_id IS 'APEX application ID';
|
||||
COMMENT ON COLUMN translated_items.item_name IS 'Item name (preferrably) to translate';
|
||||
COMMENT ON COLUMN translated_items.value_en IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_items.value_cz IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_items.value_sk IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_items.value_pl IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_items.value_hu IS 'Translated value';
|
||||
|
||||
30
tables/translated_messages.sql
Normal file
30
tables/translated_messages.sql
Normal file
@ -0,0 +1,30 @@
|
||||
--DROP TABLE translated_messages PURGE;
|
||||
CREATE TABLE translated_messages (
|
||||
app_id NUMBER(4) CONSTRAINT nn_translated_messages_app_id NOT NULL,
|
||||
message VARCHAR2(64) CONSTRAINT nn_translated_messages_message NOT NULL,
|
||||
--
|
||||
value_en VARCHAR2(256),
|
||||
value_cz VARCHAR2(256),
|
||||
value_sk VARCHAR2(256),
|
||||
value_pl VARCHAR2(256),
|
||||
value_hu VARCHAR2(256),
|
||||
--
|
||||
updated_by VARCHAR2(30),
|
||||
updated_at DATE,
|
||||
--
|
||||
CONSTRAINT pk_translated_messages
|
||||
PRIMARY KEY (app_id, message)
|
||||
)
|
||||
STORAGE (BUFFER_POOL KEEP);
|
||||
--
|
||||
COMMENT ON TABLE translated_messages IS '[CORE] List of translated messages/notifications';
|
||||
--
|
||||
COMMENT ON COLUMN translated_messages.app_id IS 'APEX application ID';
|
||||
COMMENT ON COLUMN translated_messages.message IS 'Message to translate';
|
||||
--
|
||||
COMMENT ON COLUMN translated_messages.value_en IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_messages.value_cz IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_messages.value_sk IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_messages.value_pl IS 'Translated value';
|
||||
COMMENT ON COLUMN translated_messages.value_hu IS 'Translated value';
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
--DROP TABLE translation_items PURGE;
|
||||
CREATE TABLE translation_items (
|
||||
app_id NUMBER(4) CONSTRAINT nn_translation_items_app_id NOT NULL,
|
||||
page_id NUMBER(6) CONSTRAINT nn_translation_items_page_id NOT NULL,
|
||||
name VARCHAR2(64) CONSTRAINT nn_translation_items_name NOT NULL,
|
||||
--
|
||||
value_en VARCHAR2(256),
|
||||
value_cz VARCHAR2(256),
|
||||
value_sk VARCHAR2(256),
|
||||
value_pl VARCHAR2(256),
|
||||
value_hu VARCHAR2(256),
|
||||
--
|
||||
updated_by VARCHAR2(30),
|
||||
updated_at DATE,
|
||||
--
|
||||
CONSTRAINT pk_translation_items
|
||||
PRIMARY KEY (app_id, page_id, name),
|
||||
--
|
||||
CONSTRAINT fk_translation_items_page_id
|
||||
FOREIGN KEY (app_id, page_id)
|
||||
REFERENCES navigation (app_id, page_id)
|
||||
)
|
||||
STORAGE (BUFFER_POOL KEEP);
|
||||
--
|
||||
COMMENT ON TABLE translation_items IS '[CORE] List of translation_items';
|
||||
--
|
||||
COMMENT ON COLUMN translation_items.app_id IS 'APEX application ID';
|
||||
COMMENT ON COLUMN translation_items.page_id IS 'APEX page ID, 0 for fallback, otherwise priority on page';
|
||||
COMMENT ON COLUMN translation_items.name IS 'Item name (preferrably) to translate';
|
||||
--
|
||||
COMMENT ON COLUMN translation_items.value_en IS 'Translated value';
|
||||
COMMENT ON COLUMN translation_items.value_cz IS 'Translated value';
|
||||
COMMENT ON COLUMN translation_items.value_sk IS 'Translated value';
|
||||
COMMENT ON COLUMN translation_items.value_pl IS 'Translated value';
|
||||
COMMENT ON COLUMN translation_items.value_hu IS 'Translated value';
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
--DROP TABLE translations PURGE;
|
||||
CREATE TABLE translations (
|
||||
app_id NUMBER(4) CONSTRAINT nn_translations_app_id NOT NULL,
|
||||
name VARCHAR2(64) CONSTRAINT nn_translations_name NOT NULL,
|
||||
--
|
||||
value_en VARCHAR2(256),
|
||||
value_cz VARCHAR2(256),
|
||||
value_sk VARCHAR2(256),
|
||||
value_pl VARCHAR2(256),
|
||||
value_hu VARCHAR2(256),
|
||||
--
|
||||
updated_by VARCHAR2(30),
|
||||
updated_at DATE,
|
||||
--
|
||||
CONSTRAINT pk_translations
|
||||
PRIMARY KEY (app_id, name)
|
||||
)
|
||||
STORAGE (BUFFER_POOL KEEP);
|
||||
--
|
||||
COMMENT ON TABLE translations IS '[CORE] List of translations';
|
||||
--
|
||||
COMMENT ON COLUMN translations.app_id IS 'APEX application ID';
|
||||
COMMENT ON COLUMN translations.name IS 'Message to translate';
|
||||
--
|
||||
COMMENT ON COLUMN translations.value_en IS 'Translated value';
|
||||
COMMENT ON COLUMN translations.value_cz IS 'Translated value';
|
||||
COMMENT ON COLUMN translations.value_sk IS 'Translated value';
|
||||
COMMENT ON COLUMN translations.value_pl IS 'Translated value';
|
||||
COMMENT ON COLUMN translations.value_hu IS 'Translated value';
|
||||
|
||||
53
views/translated_items_overview.sql
Normal file
53
views/translated_items_overview.sql
Normal file
@ -0,0 +1,53 @@
|
||||
CREATE OR REPLACE VIEW translated_items_overview AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_app_id() AS app_id,
|
||||
app.get_translation_prefix() AS item_prefix
|
||||
FROM DUAL
|
||||
),
|
||||
t AS (
|
||||
SELECT t.*
|
||||
FROM translated_items t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id
|
||||
),
|
||||
p AS (
|
||||
SELECT t.item_name
|
||||
FROM t
|
||||
JOIN apex_application_page_items i
|
||||
ON i.application_id = t.app_id
|
||||
AND i.page_id = TO_NUMBER(REGEXP_SUBSTR(t.item_name, '\d+'))
|
||||
AND i.item_name = t.item_name
|
||||
),
|
||||
a AS (
|
||||
SELECT t.item_name
|
||||
FROM t
|
||||
JOIN apex_application_items a
|
||||
ON a.application_id = t.app_id
|
||||
AND a.item_name = t.item_name
|
||||
)
|
||||
SELECT
|
||||
t.item_name AS out_item_name,
|
||||
t.item_name,
|
||||
--
|
||||
CASE SUBSTR(t.item_name, 1, 1)
|
||||
WHEN 'H' THEN 'HEADER'
|
||||
WHEN 'B' THEN 'BUTTON'
|
||||
WHEN 'C' THEN 'COLUMN'
|
||||
WHEN 'L' THEN 'LABEL'
|
||||
END AS item_type,
|
||||
--
|
||||
CASE WHEN p.item_name IS NOT NULL THEN 'Y' END AS is_page_item,
|
||||
CASE WHEN a.item_name IS NOT NULL THEN 'Y' END AS is_app_item,
|
||||
--
|
||||
t.value_en,
|
||||
t.value_cz,
|
||||
t.value_sk,
|
||||
t.value_pl,
|
||||
t.value_hu
|
||||
FROM t
|
||||
LEFT JOIN p ON p.item_name = t.item_name
|
||||
LEFT JOIN a ON a.item_name = t.item_name;
|
||||
--
|
||||
COMMENT ON TABLE translated_items_overview IS '[CORE - DASHBOARD] Use page/app items to translate application';
|
||||
|
||||
21
views/translated_messages_overview.sql
Normal file
21
views/translated_messages_overview.sql
Normal file
@ -0,0 +1,21 @@
|
||||
CREATE OR REPLACE VIEW translated_messages_overview AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_app_id() AS app_id
|
||||
FROM DUAL
|
||||
)
|
||||
SELECT
|
||||
t.message AS out_message,
|
||||
t.message,
|
||||
--
|
||||
t.value_en,
|
||||
t.value_cz,
|
||||
t.value_sk,
|
||||
t.value_pl,
|
||||
t.value_hu
|
||||
FROM translated_messages t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id;
|
||||
--
|
||||
COMMENT ON TABLE translated_messages_overview IS '[CORE - DASHBOARD] Translate messages/notifications';
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
CREATE OR REPLACE VIEW translations_mapped AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_app_id() AS app_id,
|
||||
app.get_page_id() AS page_id,
|
||||
app.get_user_lang() AS lang_id,
|
||||
app.get_translation_prefix() AS item_prefix
|
||||
FROM DUAL
|
||||
)
|
||||
SELECT t.name, i.item_name
|
||||
FROM translation_items t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id
|
||||
AND x.page_id IN (0, x.page_id)
|
||||
JOIN apex_application_page_items i
|
||||
ON i.application_id = x.app_id
|
||||
AND i.page_id = x.page_id
|
||||
AND (
|
||||
(i.page_id > 0 AND i.item_name = x.item_prefix || i.page_id || '_' || t.name)
|
||||
OR (i.page_id = 0 AND i.item_name = x.item_prefix || '_' || t.name)
|
||||
)
|
||||
GROUP BY t.name, i.item_name
|
||||
UNION
|
||||
--
|
||||
SELECT t.name, i.item_name
|
||||
FROM translation_items t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id
|
||||
JOIN apex_application_items i
|
||||
ON i.application_id = t.app_id
|
||||
AND i.item_name = x.item_prefix || '_' || t.name
|
||||
GROUP BY t.name, i.item_name;
|
||||
--
|
||||
COMMENT ON TABLE translations_mapped IS '[CORE - DASHBOARD] Translations for startup process';
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
CREATE OR REPLACE VIEW translations_notifications AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_app_id() AS app_id
|
||||
FROM DUAL
|
||||
)
|
||||
SELECT
|
||||
t.app_id,
|
||||
t.name,
|
||||
t.name AS name_old,
|
||||
--
|
||||
t.value_en,
|
||||
t.value_cz,
|
||||
t.value_sk,
|
||||
t.value_pl,
|
||||
t.value_hu
|
||||
FROM translations t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id;
|
||||
--
|
||||
COMMENT ON TABLE translations_notifications IS '[CORE - DASHBOARD] Translate messages/notifications';
|
||||
|
||||
@ -1,109 +0,0 @@
|
||||
CREATE OR REPLACE VIEW translations_overview AS
|
||||
WITH x AS (
|
||||
SELECT /*+ MATERIALIZE */
|
||||
app.get_app_id() AS app_id,
|
||||
app.get_translation_prefix() AS item_prefix
|
||||
FROM DUAL
|
||||
),
|
||||
m AS (
|
||||
SELECT
|
||||
t.app_id,
|
||||
t.page_id,
|
||||
t.name,
|
||||
--
|
||||
NVL(i.item_name, a.item_name) AS item_name,
|
||||
--
|
||||
t.value_en,
|
||||
t.value_cz,
|
||||
t.value_sk,
|
||||
t.value_pl,
|
||||
t.value_hu,
|
||||
--
|
||||
t.name AS old_name,
|
||||
t.page_id AS old_page_id
|
||||
FROM translation_items t
|
||||
JOIN x
|
||||
ON x.app_id = t.app_id
|
||||
LEFT JOIN apex_application_page_items i
|
||||
ON i.application_id = t.app_id
|
||||
AND i.page_id = t.page_id
|
||||
AND (
|
||||
(i.page_id > 0 AND i.item_name = x.item_prefix || i.page_id || '_' || t.name)
|
||||
OR (i.page_id = 0 AND i.item_name = x.item_prefix || '_' || t.name)
|
||||
)
|
||||
LEFT JOIN apex_application_items a
|
||||
ON a.application_id = t.app_id
|
||||
AND a.item_name = x.item_prefix || '_' || t.name
|
||||
AND i.item_name IS NULL
|
||||
)
|
||||
SELECT
|
||||
m.app_id,
|
||||
m.page_id,
|
||||
m.name,
|
||||
m.item_name,
|
||||
--
|
||||
m.value_en,
|
||||
m.value_cz,
|
||||
m.value_sk,
|
||||
m.value_pl,
|
||||
m.value_hu,
|
||||
--
|
||||
m.old_name,
|
||||
m.old_page_id
|
||||
FROM m
|
||||
UNION ALL
|
||||
--
|
||||
SELECT
|
||||
i.application_id,
|
||||
i.page_id,
|
||||
--
|
||||
REGEXP_REPLACE(i.item_name, '^' || x.item_prefix || '\d*_', '') AS name,
|
||||
i.item_name,
|
||||
--
|
||||
NULL, -- 5 languages
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
--
|
||||
REGEXP_REPLACE(i.item_name, '^' || x.item_prefix || '\d*_', '') AS old_name,
|
||||
i.page_id AS old_page_id
|
||||
FROM apex_application_page_items i
|
||||
JOIN x
|
||||
ON x.app_id = i.application_id
|
||||
AND i.item_name LIKE x.item_prefix || i.page_id || '%'
|
||||
LEFT JOIN m
|
||||
ON m.app_id = i.application_id
|
||||
AND m.page_id = i.page_id
|
||||
AND m.item_name = i.item_name
|
||||
WHERE m.name IS NULL
|
||||
AND i.item_name NOT LIKE x.item_prefix || '0\_%' ESCAPE '\'
|
||||
UNION ALL
|
||||
--
|
||||
SELECT
|
||||
i.application_id,
|
||||
0 AS page_id,
|
||||
--
|
||||
REGEXP_REPLACE(i.item_name, '^' || x.item_prefix || '\d*_', '') AS name,
|
||||
i.item_name,
|
||||
--
|
||||
NULL, -- 5 languages
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
--
|
||||
REGEXP_REPLACE(i.item_name, '^' || x.item_prefix || '\d*_', '') AS old_name,
|
||||
0 AS old_page_id
|
||||
FROM apex_application_items i
|
||||
JOIN x
|
||||
ON x.app_id = i.application_id
|
||||
AND i.item_name LIKE x.item_prefix || '\_%' ESCAPE '\'
|
||||
LEFT JOIN m
|
||||
ON m.app_id = i.application_id
|
||||
AND m.page_id = 0
|
||||
AND m.item_name = i.item_name
|
||||
WHERE m.name IS NULL;
|
||||
--
|
||||
COMMENT ON TABLE translations_overview IS '[CORE - DASHBOARD] Use page/app items to translate application';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user