diff --git a/README.md b/README.md index e47257df..3a378c86 100644 --- a/README.md +++ b/README.md @@ -295,6 +295,7 @@ initLmcCookieConsentManager( // when loaded as a module, these options are passe ### Supported languages Translation of the user interface is provided in the following languages: +- Bosnian (`bs`) - Czech (`cs`) - German (`de`) - English (`en`) diff --git a/examples/languages.html b/examples/languages.html index 20b020b2..430ba480 100644 --- a/examples/languages.html +++ b/examples/languages.html @@ -98,6 +98,10 @@
Bolje razumijevanje onoga što vas zanima, pokazat ćemo vam relevantniji sadržaj.
++ Klikom na dugme „Prihvati sve“, dajete + kompanijama + test1, test2 i test3 + svoju saglasnost za korištenje kolačića za personalizaciju, analitiku i ciljani marketing. + Možete prilagoditi upotrebu kolačića u svojim prilagođenim postavkama. +
", + "primary_btn": { + "role": "accept_all", + "text": "Prihvati sve", + }, + "secondary_btn": { + "role": "accept_necessary", + "text": "Prihvatiti neophodno", + }, + "title": "Kolačići čine našu stranicu još boljom", + }, + "settings_modal": { + "accept_all_btn": "Prihvati sve", + "blocks": [ + { + "description": "Ako želite da izvučete maksimum iz naše web stranice, najbolje je dozvoliti sve vrste kolačića. + Više informacija o tome šta su kolačići i kako radimo s njima možete pronaći na stranici Politika privatnosti.", + }, + { + "description": "Ovi kolačići su neophodni za pravilno funkcioniranje naše web stranice i stoga se ne mogu onemogućiti. Bez njih ne bi bilo moguće npr. za prikaz bilo kojeg sadržaja ili za prijavu na našu web stranicu.", + "title": "Tehnički potrebni kolačići", + "toggle": { + "enabled": true, + "readonly": true, + "value": "necessary", + }, + }, + { + "description": "To nam pomaže da pratimo koliko ljudi posjeti našu web stranicu i kako je koriste. Ove informacije nam zatim omogućavaju da kontinuirano poboljšavamo web stranicu i druge usluge.", + "title": "Analitički kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "analytics", + }, + }, + { + "description": "Naša web stranica je još efikasnija i radi bolje zahvaljujući ovim kolačićima. Na primjer, omogućavaju nam korištenje usluge chata i brzo i jednostavno odgovaranje na vaša pitanja.", + "title": "Funkcionalni kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "functionality", + }, + }, + { + "description": "Ovi kolačići nam pomažu da izmjerimo učinkovitost našeg oglašavanja i ciljanih ponuda usluga. Marketinški kolačići nam omogućavaju da vam donesemo vijesti koje bi vas mogle zanimati na Internetu.", + "title": "Marketinški kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "ad", + }, + }, + { + "description": "Naše usluge bolje funkcioniraju ako ih možemo prilagoditi određenim korisnicima. Dopuštanjem kolačića za personalizaciju povećavate svoje šanse da pronađete sadržaj koji želite.", + "title": "Kolačići za personalizaciju", + "toggle": { + "enabled": false, + "readonly": false, + "value": "personalization", + }, + }, + ], + "cookie_table_headers": [ + { + "name": "Naziv", + }, + { + "description": "Opis", + }, + { + "expiration": "Isticanje", + }, + ], + "reject_all_btn": "Prihvatiti neophodno", + "save_settings_btn": "Sačuvaj postavke", + "title": "Prilagođenim postavkama kolačića", + }, +} +`; + +exports[`config bs should return localization object for showSettings button mode 1`] = ` +{ + "consent_modal": { + "description": " +Bolje razumijevanje onoga što vas zanima, pokazat ćemo vam relevantniji sadržaj.
++ Klikom na dugme „Prihvati sve“, dajete + kompanijama + test1, test2 i test3 + svoju saglasnost za korištenje kolačića za personalizaciju, analitiku i ciljani marketing. + +
", + "primary_btn": { + "role": "accept_all", + "text": "Prihvati sve", + }, + "secondary_btn": { + "role": "settings", + "text": "Prilagođenim postavkama", + }, + "title": "Kolačići čine našu stranicu još boljom", + }, + "settings_modal": { + "accept_all_btn": "Prihvati sve", + "blocks": [ + { + "description": "Ako želite da izvučete maksimum iz naše web stranice, najbolje je dozvoliti sve vrste kolačića. + Više informacija o tome šta su kolačići i kako radimo s njima možete pronaći na stranici Politika privatnosti.", + }, + { + "description": "Ovi kolačići su neophodni za pravilno funkcioniranje naše web stranice i stoga se ne mogu onemogućiti. Bez njih ne bi bilo moguće npr. za prikaz bilo kojeg sadržaja ili za prijavu na našu web stranicu.", + "title": "Tehnički potrebni kolačići", + "toggle": { + "enabled": true, + "readonly": true, + "value": "necessary", + }, + }, + { + "description": "To nam pomaže da pratimo koliko ljudi posjeti našu web stranicu i kako je koriste. Ove informacije nam zatim omogućavaju da kontinuirano poboljšavamo web stranicu i druge usluge.", + "title": "Analitički kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "analytics", + }, + }, + { + "description": "Naša web stranica je još efikasnija i radi bolje zahvaljujući ovim kolačićima. Na primjer, omogućavaju nam korištenje usluge chata i brzo i jednostavno odgovaranje na vaša pitanja.", + "title": "Funkcionalni kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "functionality", + }, + }, + { + "description": "Ovi kolačići nam pomažu da izmjerimo učinkovitost našeg oglašavanja i ciljanih ponuda usluga. Marketinški kolačići nam omogućavaju da vam donesemo vijesti koje bi vas mogle zanimati na Internetu.", + "title": "Marketinški kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "ad", + }, + }, + { + "description": "Naše usluge bolje funkcioniraju ako ih možemo prilagoditi određenim korisnicima. Dopuštanjem kolačića za personalizaciju povećavate svoje šanse da pronađete sadržaj koji želite.", + "title": "Kolačići za personalizaciju", + "toggle": { + "enabled": false, + "readonly": false, + "value": "personalization", + }, + }, + ], + "cookie_table_headers": [ + { + "name": "Naziv", + }, + { + "description": "Opis", + }, + { + "expiration": "Isticanje", + }, + ], + "reject_all_btn": "Prihvatiti neophodno", + "save_settings_btn": "Sačuvaj postavke", + "title": "Prilagođenim postavkama kolačića", + }, +} +`; + +exports[`config bs should return localization object with cookie table 1`] = ` +{ + "consent_modal": { + "description": " +Bolje razumijevanje onoga što vas zanima, pokazat ćemo vam relevantniji sadržaj.
++ Klikom na dugme „Prihvati sve“, dajete + kompaniji + Alma Career i drugim kompanijama iz njene poslovne grupe + svoju saglasnost za korištenje kolačića za personalizaciju, analitiku i ciljani marketing. + +
", + "primary_btn": { + "role": "accept_all", + "text": "Prihvati sve", + }, + "secondary_btn": { + "role": "settings", + "text": "Prilagođenim postavkama", + }, + "title": "Kolačići čine našu stranicu još boljom", + }, + "settings_modal": { + "accept_all_btn": "Prihvati sve", + "blocks": [ + { + "description": "Ako želite da izvučete maksimum iz naše web stranice, najbolje je dozvoliti sve vrste kolačića. + Više informacija o tome šta su kolačići i kako radimo s njima možete pronaći na stranici Politika privatnosti.", + }, + { + "cookie_table": [ + { + "description": "Google Analytics description ...", + "expiration": "1 year", + "is_regex": true, + "name": "^_ga", + }, + { + "description": "Foo description", + "expiration": "end of session", + "name": "foo", + }, + ], + "description": "Ovi kolačići su neophodni za pravilno funkcioniranje naše web stranice i stoga se ne mogu onemogućiti. Bez njih ne bi bilo moguće npr. za prikaz bilo kojeg sadržaja ili za prijavu na našu web stranicu.", + "title": "Tehnički potrebni kolačići", + "toggle": { + "enabled": true, + "readonly": true, + "value": "necessary", + }, + }, + { + "description": "To nam pomaže da pratimo koliko ljudi posjeti našu web stranicu i kako je koriste. Ove informacije nam zatim omogućavaju da kontinuirano poboljšavamo web stranicu i druge usluge.", + "title": "Analitički kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "analytics", + }, + }, + { + "description": "Naša web stranica je još efikasnija i radi bolje zahvaljujući ovim kolačićima. Na primjer, omogućavaju nam korištenje usluge chata i brzo i jednostavno odgovaranje na vaša pitanja.", + "title": "Funkcionalni kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "functionality", + }, + }, + { + "description": "Ovi kolačići nam pomažu da izmjerimo učinkovitost našeg oglašavanja i ciljanih ponuda usluga. Marketinški kolačići nam omogućavaju da vam donesemo vijesti koje bi vas mogle zanimati na Internetu.", + "title": "Marketinški kolačići", + "toggle": { + "enabled": false, + "readonly": false, + "value": "ad", + }, + }, + { + "cookie_table": [ + { + "description": "Session log description ...", + "expiration": "1 year", + "name": "sessionLog_id", + }, + ], + "description": "Naše usluge bolje funkcioniraju ako ih možemo prilagoditi određenim korisnicima. Dopuštanjem kolačića za personalizaciju povećavate svoje šanse da pronađete sadržaj koji želite.", + "title": "Kolačići za personalizaciju", + "toggle": { + "enabled": false, + "readonly": false, + "value": "personalization", + }, + }, + ], + "cookie_table_headers": [ + { + "name": "Naziv", + }, + { + "description": "Opis", + }, + { + "expiration": "Isticanje", + }, + ], + "reject_all_btn": "Prihvatiti neophodno", + "save_settings_btn": "Sačuvaj postavke", + "title": "Prilagođenim postavkama kolačića", + }, +} +`; + exports[`config cs should return localization object for acceptNecessary button mode 1`] = ` { "consent_modal": { @@ -1198,7 +1497,7 @@ exports[`config hr should return localization object for acceptNecessary buttonKlikom na gumb „Prihvati sve“, dajete test1, test2 i test3 - privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.. + privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing. Možete prilagoditi upotrebu kolačića u svojim prilagođenim postavkama.
", "primary_btn": { @@ -1290,7 +1589,7 @@ exports[`config hr should return localization object for showSettings button modKlikom na gumb „Prihvati sve“, dajete test1, test2 i test3 - privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.. + privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.
", "primary_btn": { @@ -1382,7 +1681,7 @@ exports[`config hr should return localization object with cookie table 1`] = `Klikom na gumb „Prihvati sve“, dajete tvrtkama iz poslovne grupacije Alma Career - privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.. + privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.
", "primary_btn": { diff --git a/src/languages/__tests__/langConfig.test.ts b/src/languages/__tests__/langConfig.test.ts index 769347a4..e726acb2 100644 --- a/src/languages/__tests__/langConfig.test.ts +++ b/src/languages/__tests__/langConfig.test.ts @@ -1,3 +1,4 @@ +import { config as configBs } from '../bs'; import { config as configCs } from '../cs'; import { config as configDe } from '../de'; import { config as configEn } from '../en'; @@ -15,6 +16,7 @@ import { config as configUk } from '../uk'; import { SecondaryButtonMode } from '../../constants'; describe.each([ + ['bs', configBs], ['cs', configCs], ['de', configDe], ['en', configEn], diff --git a/src/languages/__tests__/loader.test.ts b/src/languages/__tests__/loader.test.ts index f04c81ae..7835e6b0 100644 --- a/src/languages/__tests__/loader.test.ts +++ b/src/languages/__tests__/loader.test.ts @@ -5,7 +5,7 @@ describe('loader', () => { describe('assembleLanguagesConfig', () => { it('should assemble configs for all languages', () => { const config = assembleLanguagesConfig(['Alma Career'], {}, SecondaryButtonMode.ACCEPT_NECESSARY, {}); - expect(Object.keys(config)).toHaveLength(14); + expect(Object.keys(config)).toHaveLength(15); }); }); }); diff --git a/src/languages/bs.ts b/src/languages/bs.ts new file mode 100644 index 00000000..c94ecb7c --- /dev/null +++ b/src/languages/bs.ts @@ -0,0 +1,106 @@ +import { + addSeparators, + assembleCategoryAd, + assembleCategoryAnalytics, + assembleCategoryFunctionality, + assembleCategoryNecessary, + assembleCategoryPersonalization, + assembleDescriptionIntro, + assembleSecondaryButton, + isSettingsButtonNotShown, + legalizeAlmaCareer, + pluralize, +} from '../utils'; +import { CookieTableCategories, ExtraMessages, Values, VanillaCookieConsent } from '../types'; +import { SecondaryButtonMode } from '../constants'; + +const extra = { + and: 'i', + company: 'kompaniji', + companies: 'kompanijama', + legalName: 'Alma Career i drugim kompanijama iz njene poslovne grupe', +}; + +/** + * @param {ExtraMessages} [extraMessages] - Object with extra messages + * @param {SecondaryButtonMode} [secondaryButtonMode] - Which secondary button should be shown + * @param {CookieTableCategories} [cookieTable] - Cookie table items defined by category + * @returns {VanillaCookieConsent.Languages} Object with translated messages + */ +export const config = ( + extraMessages: ExtraMessages, + secondaryButtonMode: Values+ Klikom na dugme „Prihvati sve“, dajete + ${pluralize(lang.companyNames.length, lang.company, lang.companies)} + ${addSeparators(legalizeAlmaCareer(lang.companyNames, lang.legalName), lang.and)} + svoju saglasnost za korištenje kolačića za personalizaciju, analitiku i ciljani marketing. + ${ + isSettingsButtonNotShown(secondaryButtonMode) + ? `Možete prilagoditi upotrebu kolačića u svojim prilagođenim postavkama.` + : '' + } +
`, + primary_btn: { + text: 'Prihvati sve', + role: VanillaCookieConsent.PrimaryButtonRole.ACCEPT_ALL, + }, + secondary_btn: assembleSecondaryButton(secondaryButtonMode, 'Prihvatiti neophodno', 'Prilagođenim postavkama'), + }, + settings_modal: { + title: 'Prilagođenim postavkama kolačića', + accept_all_btn: 'Prihvati sve', + reject_all_btn: 'Prihvatiti neophodno', + save_settings_btn: 'Sačuvaj postavke', + cookie_table_headers: [{ name: 'Naziv' }, { description: 'Opis' }, { expiration: 'Isticanje' }], + blocks: [ + { + description: `Ako želite da izvučete maksimum iz naše web stranice, najbolje je dozvoliti sve vrste kolačića. + ${ + lang.settingsModalMoreInfo ?? + `Više informacija o tome šta su kolačići i kako radimo s njima možete pronaći na stranici Politika privatnosti.` + }`, + }, + assembleCategoryNecessary( + 'Tehnički potrebni kolačići', + 'Ovi kolačići su neophodni za pravilno funkcioniranje naše web stranice i stoga se ne mogu onemogućiti. Bez njih ne bi bilo moguće npr. za prikaz bilo kojeg sadržaja ili za prijavu na našu web stranicu.', + cookieTable, + ), + assembleCategoryAnalytics( + 'Analitički kolačići', + 'To nam pomaže da pratimo koliko ljudi posjeti našu web stranicu i kako je koriste. Ove informacije nam zatim omogućavaju da kontinuirano poboljšavamo web stranicu i druge usluge.', + cookieTable, + ), + assembleCategoryFunctionality( + 'Funkcionalni kolačići', + 'Naša web stranica je još efikasnija i radi bolje zahvaljujući ovim kolačićima. Na primjer, omogućavaju nam korištenje usluge chata i brzo i jednostavno odgovaranje na vaša pitanja.', + cookieTable, + ), + assembleCategoryAd( + 'Marketinški kolačići', + 'Ovi kolačići nam pomažu da izmjerimo učinkovitost našeg oglašavanja i ciljanih ponuda usluga. Marketinški kolačići nam omogućavaju da vam donesemo vijesti koje bi vas mogle zanimati na Internetu.', + cookieTable, + ), + assembleCategoryPersonalization( + 'Kolačići za personalizaciju', + 'Naše usluge bolje funkcioniraju ako ih možemo prilagoditi određenim korisnicima. Dopuštanjem kolačića za personalizaciju povećavate svoje šanse da pronađete sadržaj koji želite.', + cookieTable, + ), + ], + }, + }; +}; + +export default config; diff --git a/src/languages/hr.ts b/src/languages/hr.ts index 10f0dd81..a9f314d8 100644 --- a/src/languages/hr.ts +++ b/src/languages/hr.ts @@ -42,7 +42,7 @@ export const config = (Klikom na gumb „Prihvati sve“, dajete ${addSeparators(legalizeAlmaCareer(lang.companyNames, lang.legalName), lang.and)} - privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing.. + privolu za upotrebu kolačića za personalizaciju, analitiku i ciljani marketing. ${ isSettingsButtonNotShown(secondaryButtonMode) ? `Možete prilagoditi upotrebu kolačića u svojim prilagođenim postavkama.` diff --git a/src/languages/loader.ts b/src/languages/loader.ts index 4f88dd4f..f4b38986 100644 --- a/src/languages/loader.ts +++ b/src/languages/loader.ts @@ -1,3 +1,4 @@ +import { config as configBs } from './bs'; import { config as configCs } from './cs'; import { config as configDe } from './de'; import { config as configEn } from './en'; @@ -15,6 +16,7 @@ import { config as configUk } from './uk'; import { CookieTable, TranslationOverride, VanillaCookieConsent } from '../types'; const languagesMap = { + bs: configBs, cs: configCs, de: configDe, en: configEn,