Fix Klaro translations by forcing Klaro to use a 'zy' language key which DSpace will translate

(cherry picked from commit 6076423907)
This commit is contained in:
Tim Donohue
2024-10-29 13:58:50 -05:00
committed by github-actions[bot]
parent ce010725ac
commit 4353c57cd0
3 changed files with 22 additions and 13 deletions

View File

@@ -101,7 +101,7 @@ describe('BrowserKlaroService', () => {
mockConfig = {
translations: {
zz: {
zy: {
purposes: {},
test: {
testeritis: testKey
@@ -159,8 +159,8 @@ describe('BrowserKlaroService', () => {
it('addAppMessages', () => {
service.addAppMessages();
expect(mockConfig.translations.zz[appName]).toBeDefined();
expect(mockConfig.translations.zz.purposes[purpose]).toBeDefined();
expect(mockConfig.translations.zy[appName]).toBeDefined();
expect(mockConfig.translations.zy.purposes[purpose]).toBeDefined();
});
it('translateConfiguration', () => {

View File

@@ -91,7 +91,7 @@ export class BrowserKlaroService extends KlaroService {
initialize() {
if (!environment.info.enablePrivacyStatement) {
delete this.klaroConfig.privacyPolicy;
this.klaroConfig.translations.zz.consentNotice.description = 'cookies.consent.content-notice.description.no-privacy';
this.klaroConfig.translations.zy.consentNotice.description = 'cookies.consent.content-notice.description.no-privacy';
}
const hideGoogleAnalytics$ = this.configService.findByPropertyName(this.GOOGLE_ANALYTICS_KEY).pipe(
@@ -238,12 +238,12 @@ export class BrowserKlaroService extends KlaroService {
*/
addAppMessages() {
this.klaroConfig.services.forEach((app) => {
this.klaroConfig.translations.zz[app.name] = {
this.klaroConfig.translations.zy[app.name] = {
title: this.getTitleTranslation(app.name),
description: this.getDescriptionTranslation(app.name)
};
app.purposes.forEach((purpose) => {
this.klaroConfig.translations.zz.purposes[purpose] = this.getPurposeTranslation(purpose);
this.klaroConfig.translations.zy.purposes[purpose] = this.getPurposeTranslation(purpose);
});
});
}
@@ -257,7 +257,7 @@ export class BrowserKlaroService extends KlaroService {
*/
this.translateService.setDefaultLang(environment.defaultLanguage);
this.translate(this.klaroConfig.translations.zz);
this.translate(this.klaroConfig.translations.zy);
}
/**

View File

@@ -17,7 +17,7 @@ export const GOOGLE_ANALYTICS_KLARO_KEY = 'google-analytics';
/**
* Klaro configuration
* For more information see https://kiprotect.com/docs/klaro/annotated-config
* For more information see https://klaro.org/docs/integration/annotated-configuration
*/
export const klaroConfiguration: any = {
storageName: ANONYMOUS_STORAGE_NAME_KLARO,
@@ -47,21 +47,30 @@ export const klaroConfiguration: any = {
htmlTexts: true,
/*
Force Klaro to use our custom "zy" lang configs defined below.
*/
lang: 'zy',
/*
You can overwrite existing translations and add translations for your app
descriptions and purposes. See `src/translations/` for a full list of
translations that can be overwritten:
https://github.com/KIProtect/klaro/tree/master/src/translations
https://github.com/klaro-org/klaro-js/tree/master/src/translations
*/
translations: {
/*
The `zz` key contains default translations that will be used as fallback values.
This can e.g. be useful for defining a fallback privacy policy URL.
FOR DSPACE: We use 'zz' to map to our own i18n translations for klaro, see
For DSpace we use this custom 'zy' key to map to our own i18n translations for klaro, see
translateConfiguration() in browser-klaro.service.ts. All the below i18n keys are specified
in your /src/assets/i18n/*.json5 translation pack.
This 'zy' key has no special meaning to Klaro & is not a valid language code. It just
allows DSpace to override Klaro's own translations in favor of DSpace's i18n keys.
NOTE: we do not use 'zz' as that has special meaning to Klaro and is ONLY used as a "fallback"
if no other translations can be found within Klaro. Currently, a bug in Klaro means that
'zz' is never used as there's no way to exclude translations:
https://github.com/klaro-org/klaro-js/issues/515
*/
zz: {
zy: {
acceptAll: 'cookies.consent.accept-all',
acceptSelected: 'cookies.consent.accept-selected',
close: 'cookies.consent.close',