Thursday 29 December 2016

Workflow translation


Introduction:

Recently came across a situation, where in we need to translate workflow notifications to Simplified Chinese. We evaluated multiple methods 

Approach 1:
  1. Set the NLS_LANG on the desktop and edit the workflow  and update messages with Chinese translations.
  2.  Remove all standard and flex fields workflow from the current definition.
  3.  Set NLS_LANG to ”SIMPLIFIED CHINESE_CHINA”.ZHS16GBK and then upload the workflow using WFLOAD

Approach 2:
1.       Open the workflow in notepad and set the language to ZHS.
2.       Remove all standard and flex fields workflow from the current definition
3.       Update message subject and body with Chinese translations
4.       Set NLS_LANG
5.       Upload the .wft using FNDLOAD and using afwfload.lct

Approach 3:
1.       Give a SQL script to update subject and body columns of WF_MESSAGES_TL for ZHS language as we are only translating the messages and not changing any other part.

Finally we went with approach 3 as it is simple and just we need notifications in simplified Chinese but instead of simple update we went with API approach. Here are the steps..


---First, set the session language:
execute immediate 'alter session set nls_language='||''''||'SIMPLIFIED CHINESE'||'''';

-- Secondly, set the WF mode and access levels..
wf_core.upload_mode := 'FORCE';
wf_core.session_level := 100;

-- Prepare tables, if we want to execute the script in patch edition
-- Need to prepare the seed tables
ad_zd_seed.prepare('WF_MESSAGES');
ad_zd_seed.prepare('WF_MESSAGES_TL');
ad_zd_seed.prepare('WF_RESOURCES');

-- Finally call the API with message

WF_LOAD.UPDATE_MESSAGE (
  p_type =>  'XXCSWF', -- wf type
  p_name => 'XXMSGNAME',  -- message name
  p_subject => l_subject,  -- message subject in Chinese
  p_body =>  l_msg_body,  -- message body in Chinese
  p_html_body => l_body ,   -- message html body in Chinese.
  p_level_error => x_level_error);

         -- Commit or rollback based on success/failure

Note: Use 
SET SERVEROUTPUT ON;
SET DEFINE OFF;
SET VERIFY OFF;

to turn off substitution.

No comments:

Post a Comment