Skip to content

Commit

Permalink
Fix Klaro translations by forcing Klaro to use a 'zy' language key wh…
Browse files Browse the repository at this point in the history
…ich DSpace will translate
  • Loading branch information
tdonohue committed Oct 29, 2024
1 parent 13cbcd3 commit acca5cb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 13 deletions.
6 changes: 3 additions & 3 deletions src/app/shared/cookies/browser-klaro.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ describe('BrowserKlaroService', () => {

mockConfig = {
translations: {
zz: {
zy: {
purposes: {},
test: {
testeritis: testKey,
Expand Down Expand Up @@ -166,8 +166,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', () => {
Expand Down
8 changes: 4 additions & 4 deletions src/app/shared/cookies/browser-klaro.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,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(
Expand Down Expand Up @@ -258,12 +258,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);
});
});
}
Expand All @@ -277,7 +277,7 @@ export class BrowserKlaroService extends KlaroService {
*/
this.translateService.setDefaultLang(environment.defaultLanguage);

this.translate(this.klaroConfig.translations.zz);
this.translate(this.klaroConfig.translations.zy);
}

/**
Expand Down
21 changes: 15 additions & 6 deletions src/app/shared/cookies/klaro-configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,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,
Expand Down Expand Up @@ -53,21 +53,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',
Expand Down

0 comments on commit acca5cb

Please sign in to comment.