The complete folder structure has been changed or updated
This commit is contained in:
@@ -0,0 +1,435 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
-- =================================================================
|
||||
-- Replaces placeholders like "%term%" to a translated term
|
||||
-- for the choise list column header.
|
||||
--
|
||||
-- Returns: INT Value - 0 = Everything worked well
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 19.09.2025 / MK
|
||||
-- Version Date / Editor: 19.09.2025 / MK
|
||||
-- Version Number: 1.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 19.09.2025 / MK - First Version
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
@pSOURCE_QUERY NVARCHAR(2000),
|
||||
@pLANGUAGE NVARCHAR(5)
|
||||
AS
|
||||
BEGIN TRY
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @SOURCE_QUERY NVARCHAR(2000) = LTRIM(RTRIM(ISNULL(@pSOURCE_QUERY,''))),
|
||||
@LANGUAGE NVARCHAR(5) = UPPER(LTRIM(RTRIM(ISNULL(@pLANGUAGE,'DE-de'))));
|
||||
|
||||
DECLARE @vTB_DICTIONARY TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL,
|
||||
[LANGUAGE] [NVARCHAR](5) NOT NULL,
|
||||
[TERM] [NVARCHAR](150) NOT NULL,
|
||||
[TRANSLATION] [NVARCHAR](150) NOT NULL);
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @TERM NVARCHAR(150),
|
||||
@TRANSLATION NVARCHAR(150),
|
||||
@PERCENT_COUNT TINYINT = 0,
|
||||
@RETURN_STATUS NVARCHAR(50) = 0,
|
||||
@RETURN_STATUS_TEXT NVARCHAR(MAX) = 'START [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120),
|
||||
@RETURN_ERROR_TEXT NVARCHAR(MAX) = '';
|
||||
|
||||
PRINT '====================================================================================================';
|
||||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||||
PRINT 'PARAMETER01 - @SOURCE_QUERY: ' + CONVERT(NVARCHAR(50),@SOURCE_QUERY);
|
||||
PRINT 'PARAMETER02 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),@LANGUAGE);
|
||||
|
||||
--===============================================-- Common translations --=================================================--
|
||||
IF (@LANGUAGE IN ('DE-DE','DE_DE')) BEGIN
|
||||
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
|
||||
SELECT 'DE-de','id','ID'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','selection','Auswahl'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','result','Ergebnis'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','description','Beschreibung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','customer','Kunde'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','vendor','Lieferant'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','number','Nummer'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','payment','Zahlung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','flag','Kennzeichen'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','street','Straße'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','city','Ort'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','postal code','Postleitzahl'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','zip code','PLZ'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','user','Benutzer'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','group','Gruppe'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','VAT-ID','Umsatzsteuer-ID'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','accounting','Kontierung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','history','Historie'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','item','Artikel'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','head','Kopf'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','account','Konto'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','date','Datum'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','quantity','Menge'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','amount','Betrag'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','discount','Rabatt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','charge','Gebühr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','fee','Gebühr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','rate','Rate'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','confirmed','Bestätigt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','rejected','Abgelehnt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','document','Dokument'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','documents','Dokumente'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','approval','Freigabe'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','approvals','Freigaben'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','creditor','Kreditor'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','no','Nr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','name','Name'
|
||||
|
||||
END; ELSE IF (@LANGUAGE IN ('FR-fr','FR_fr')) BEGIN
|
||||
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
|
||||
SELECT 'FR-fr','id','ID'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','selection','Sélection'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','result','Résultat'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','description','Description'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','customer','Client'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','vendor','Fournisseur'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','number','Numéro'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','payment','Paiement'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','flag','Plaque d'+ char(39) +'immatriculation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','street','Rue'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','city','Ville'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','postal code','Code postal'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','zip code','CP'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','user','Utilisateur'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','group','Groupe'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','VAT-ID','Numéro d' + char(39) + 'identification fiscale'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','accounting','Imputation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','history','Historique'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','item','Article'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','head','En-tête'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','account','Compte'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','date','Date'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','quantity','Quantité'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','amount','Montant'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','discount','Remise'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','charge','Frais'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','fee','Frais'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','rate','Taux'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','confirmed','Confirmé'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','rejected','Refusé'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','document','Document'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','documents','Documents'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','approval','Validation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','approvals','Validations'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','creditor','Créditer'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','No','No'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','Name','Nom'
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--==============================================-- Additional ressource 1 --===============================================--
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found further terms for replacement!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
|
||||
IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_NAME = N'TBDD_TRANSLATED_CHOICELIST_COLUMNS') BEGIN
|
||||
|
||||
PRINT 'Getting additional ressources from [TBDD_TRANSLATED_CHOICELIST_COLUMNS]';
|
||||
|
||||
IF ((SELECT COUNT(*) FROM @vTB_DICTIONARY) = 0) BEGIN
|
||||
|
||||
PRINT 'Query additional source table';
|
||||
|
||||
DELETE FROM @vTB_DICTIONARY;
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
SELECT @LANGUAGE, [TERM],[TRANSLATION]
|
||||
FROM [TBDD_TRANSLATED_CHOICELIST_COLUMNS] WITH (SNAPSHOT)
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No content in additional source table!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Additional ressources table [TBDD_TRANSLATED_CHOICELIST_COLUMNS] not found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--==============================================-- Additional ressource 2 --===============================================--
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found further terms for replacement!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
|
||||
IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_NAME = N'TBDD_GUI_LANGUAGE_PHRASE') BEGIN
|
||||
|
||||
PRINT 'Getting additional ressources from [TBDD_GUI_LANGUAGE_PHRASE]';
|
||||
|
||||
IF ((SELECT COUNT(*) FROM @vTB_DICTIONARY) = 0) BEGIN
|
||||
|
||||
PRINT 'Query additional source table';
|
||||
|
||||
DELETE FROM @vTB_DICTIONARY;
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
SELECT @LANGUAGE, [TITLE] as [TERM], [STRING1] as[TRANSLATION]
|
||||
FROM [TBDD_GUI_LANGUAGE_PHRASE] (NOLOCK)
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No content in additional source table!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Additional ressources table [TBDD_GUI_LANGUAGE_PHRASE] not found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=========================================-- Default language will not resolved --========================================--
|
||||
IF (@LANGUAGE IN ('EN-EN','EN_EN','EN-US','EN_US')) BEGIN
|
||||
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found default terms to replace only the "%"!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,'%','');
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================================-- Final steps --=====================================================--
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,'@LANGUAGE',@LANGUAGE);
|
||||
PRINT @SOURCE_QUERY;
|
||||
|
||||
EXECUTE sp_executesql @SOURCE_QUERY;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--======================================================-- Output result --======================================================--
|
||||
SET @RETURN_STATUS = 0;
|
||||
SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120));
|
||||
SET @RETURN_ERROR_TEXT = concat('','');
|
||||
|
||||
PRINT '' + char(13) + @RETURN_STATUS_TEXT;
|
||||
PRINT '====================================================================================================';
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @RETURN_STATUS;
|
||||
|
||||
END TRY BEGIN CATCH
|
||||
|
||||
--======================================================-- Output result --======================================================--
|
||||
SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END;
|
||||
SET @RETURN_STATUS_TEXT = concat('END [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120));
|
||||
SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE()));
|
||||
|
||||
PRINT '' + char(13) + 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT;
|
||||
PRINT '' + char(13) + 'PROCEDURE - ' + @RETURN_STATUS_TEXT;
|
||||
PRINT '====================================================================================================';
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @RETURN_STATUS;
|
||||
|
||||
END CATCH;
|
||||
|
||||
|
||||
---- Example call:
|
||||
---- EXEC [dbo].[PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
---- @pSOURCE_QUERY = N'SELECT [ID] as ''%ID%'',[DESCRIPTION] as ''%DESCRIPTION%'' from [FNCUST_TF_GET_PAYMENT_METHODE](''@LANGUAGE'')',
|
||||
---- @pLANGUAGE = N'de-de'
|
||||
|
||||
---- GO
|
||||
Reference in New Issue
Block a user