Skip to content

Commit

Permalink
Feat: Add Portuguese (pt) translation
Browse files Browse the repository at this point in the history
  • Loading branch information
OndraM committed Feb 4, 2025
1 parent 84e5205 commit 7deb4bf
Show file tree
Hide file tree
Showing 7 changed files with 248 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,7 @@ Translation of the user interface is provided in the following languages:
- Latvian (`lv`)
- Macedonian (`mk`)
- Polish (`pl`)
- Portuguese (`pt`)
- Russian (`ru`)
- Slovak (`sk`)
- Slovenian (`sl`)
Expand Down
4 changes: 4 additions & 0 deletions examples/languages.html
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ <h2 class="mt-md-3 mb-3">Select language</h2>
<input type="radio" class="form-check-input" id="lang-select-pl" value="pl" autocomplete="off" name="lang-select" onclick="toggleLanguage();">
<label class="form-check-label" for="lang-select-pl">Polish</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="lang-select-pt" value="pt" autocomplete="off" name="lang-select" onclick="toggleLanguage();">
<label class="form-check-label" for="lang-select-pt">Portuguese</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="lang-select-ru" value="ru" autocomplete="off" name="lang-select" onclick="toggleLanguage();">
<label class="form-check-label" for="lang-select-ru">Russian</label>
Expand Down
145 changes: 145 additions & 0 deletions src/languages/__tests__/__snapshots__/langConfig.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1869,6 +1869,151 @@ exports[`config pl should return localization object with cookie table 1`] = `
}
`;

exports[`config pt should return localization object for acceptNecessary button mode 1`] = `
{
"consentModal": {
"acceptAllBtn": "Aceitar todos",
"acceptNecessaryBtn": "Aceitar os necessários",
"description": "
<p>Se soubermos claramente o que lhe interessa, exibir-lhe-emos apenas conteúdos à medida.</p>
<p>
Clicando em «Aceitar todos» dá
às empresas
test1, test2 e test3
consentimento para usarem cookies com o intuito de personalizarem, analisarem e criarem campanhas de marketing mais direcionadas.
Há mais informações sobre cookies e como ajustá-los nas <strong><a href="" data-cc="show-preferencesModal">configurações dedicadas a isso</a></strong>.
</p>",
"title": "Graças aos cookies as nossas páginas serão ainda melhores",
},
"preferencesModal": {
"acceptAllBtn": "Aceitar todos",
"acceptNecessaryBtn": "Aceitar os necessários",
"savePreferencesBtn": "Guardar configurações",
"sections": [
{
"description": "Para aproveitar ao máximo das nossas páginas, aconselhamos ativar todos os tipos de cookies.
Há mais informações sobre o significado dos cookies e como os processamos nas <a href="https://www.almacareer.com/gdpr" target="_blank">Políticas sobre Cookies</a>.",
},
{
"description": "Tais cookies são essenciais para o funcionamento correto das nossas páginas, por conseguinte não é possível desativá-los. Sem eles não seria possível, por exemplo, exibir nenhum conteúdo nas nossas páginas ou não funcionaria o login.",
"linkedCategory": "necessary",
"title": "Cookies tecnicamente necessários",
},
{
"description": "Com tais cookies podemos mensurar qual o grau de eficácia das nossas publicidades e da amplitude desejada dos nossos serviços. Cookies de marketing permitem-nos informar os utilizadores de novidades que lhes possam interessar.",
"linkedCategory": "ad",
"title": "Cookies de marketing",
},
{
"description": "Com a sua ajuda acompanhamos quantas pessoas visitam as nossas páginas e como as utilizam. Graças a isso podemos aperfeiçoar cada vez mais as nossas páginas e os serviços que oferecemos.",
"linkedCategory": "analytics",
"title": "Cookies analíticos",
},
{
"description": "Graças a tais cookies as nossas páginas são ainda mais eficientes e funcionam melhor. Por exemplo, possibilitam que utilizemos o chat para podermos responder rápida e comodamente às perguntas dos utilizadores.",
"linkedCategory": "functionality",
"title": "Cookies funcionais",
},
{
"description": "Os nossos serviços funcionam melhor se os podemos adaptar à medida a um utilizador concreto. Habilitando os cookies personalizados, aumenta as chances de encontrar os conteúdos dos quais está à procura.",
"linkedCategory": "personalization",
"title": "Cookies personalizados",
},
],
"title": "Editar as configurações de cookies",
},
}
`;

exports[`config pt should return localization object with cookie table 1`] = `
{
"consentModal": {
"acceptAllBtn": "Aceitar todos",
"acceptNecessaryBtn": "Aceitar os necessários",
"description": "
<p>Se soubermos claramente o que lhe interessa, exibir-lhe-emos apenas conteúdos à medida.</p>
<p>
Clicando em «Aceitar todos» dá
à empresa
Alma Career e às empresas pertencentes ao seu grupo comercial
consentimento para usarem cookies com o intuito de personalizarem, analisarem e criarem campanhas de marketing mais direcionadas.
Há mais informações sobre cookies e como ajustá-los nas <strong><a href="" data-cc="show-preferencesModal">configurações dedicadas a isso</a></strong>.
</p>",
"title": "Graças aos cookies as nossas páginas serão ainda melhores",
},
"preferencesModal": {
"acceptAllBtn": "Aceitar todos",
"acceptNecessaryBtn": "Aceitar os necessários",
"savePreferencesBtn": "Guardar configurações",
"sections": [
{
"description": "Para aproveitar ao máximo das nossas páginas, aconselhamos ativar todos os tipos de cookies.
Há mais informações sobre o significado dos cookies e como os processamos nas <a href="https://www.almacareer.com/gdpr" target="_blank">Políticas sobre Cookies</a>.",
},
{
"cookieTable": {
"body": [
{
"description": "Google Analytics description ...",
"expiration": "1 year",
"name": "_ga*",
},
{
"description": "Foo description",
"expiration": "end of session",
"name": "foo",
},
],
"headers": {
"description": "Assinatura",
"expiration": "Validade",
"name": "Nome",
},
},
"description": "Tais cookies são essenciais para o funcionamento correto das nossas páginas, por conseguinte não é possível desativá-los. Sem eles não seria possível, por exemplo, exibir nenhum conteúdo nas nossas páginas ou não funcionaria o login.",
"linkedCategory": "necessary",
"title": "Cookies tecnicamente necessários",
},
{
"description": "Com tais cookies podemos mensurar qual o grau de eficácia das nossas publicidades e da amplitude desejada dos nossos serviços. Cookies de marketing permitem-nos informar os utilizadores de novidades que lhes possam interessar.",
"linkedCategory": "ad",
"title": "Cookies de marketing",
},
{
"description": "Com a sua ajuda acompanhamos quantas pessoas visitam as nossas páginas e como as utilizam. Graças a isso podemos aperfeiçoar cada vez mais as nossas páginas e os serviços que oferecemos.",
"linkedCategory": "analytics",
"title": "Cookies analíticos",
},
{
"description": "Graças a tais cookies as nossas páginas são ainda mais eficientes e funcionam melhor. Por exemplo, possibilitam que utilizemos o chat para podermos responder rápida e comodamente às perguntas dos utilizadores.",
"linkedCategory": "functionality",
"title": "Cookies funcionais",
},
{
"cookieTable": {
"body": [
{
"description": "Session log description ...",
"expiration": "1 year",
"name": "sessionLog_id",
},
],
"headers": {
"description": "Assinatura",
"expiration": "Validade",
"name": "Nome",
},
},
"description": "Os nossos serviços funcionam melhor se os podemos adaptar à medida a um utilizador concreto. Habilitando os cookies personalizados, aumenta as chances de encontrar os conteúdos dos quais está à procura.",
"linkedCategory": "personalization",
"title": "Cookies personalizados",
},
],
"title": "Editar as configurações de cookies",
},
}
`;

exports[`config ru should return localization object for acceptNecessary button mode 1`] = `
{
"consentModal": {
Expand Down
2 changes: 2 additions & 0 deletions src/languages/__tests__/langConfig.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { config as configLt } from '../lt';
import { config as configLv } from '../lv';
import { config as configMk } from '../mk';
import { config as configPl } from '../pl';
import { config as configPt } from '../pt';
import { config as configRu } from '../ru';
import { config as configSk } from '../sk';
import { config as configSl } from '../sl';
Expand All @@ -30,6 +31,7 @@ describe.each([
['lv', configLv],
['mk', configMk],
['pl', configPl],
['pt', configPt],
['ru', configRu],
['sk', configSk],
['sl', configSl],
Expand Down
2 changes: 1 addition & 1 deletion src/languages/__tests__/loader.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ describe('loader', () => {
describe('assembleTranslationsConfig', () => {
it('should assemble configs for all translations', () => {
const config = assembleTranslationsConfig(['Alma Career'], {}, {});
expect(Object.keys(config)).toHaveLength(17);
expect(Object.keys(config)).toHaveLength(18);
});
});
});
2 changes: 2 additions & 0 deletions src/languages/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { config as configLt } from './lt';
import { config as configLv } from './lv';
import { config as configMk } from './mk';
import { config as configPl } from './pl';
import { config as configPt } from './pt';
import { config as configRu } from './ru';
import { config as configSk } from './sk';
import { config as configSl } from './sl';
Expand All @@ -32,6 +33,7 @@ const languagesMap = {
lv: configLv,
mk: configMk,
pl: configPl,
pt: configPt,
ru: configRu,
sk: configSk,
sl: configSl,
Expand Down
93 changes: 93 additions & 0 deletions src/languages/pt.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import {
addSeparators,
assembleCookieTableSections,
assembleDescriptionIntro,
legalizeAlmaCareer,
pluralize,
} from '../utils';
import { CookieTableCategories, ExtraMessages } from '../types';
import { Translation } from 'vanilla-cookieconsent';

const extra = {
and: 'e',
company: 'à empresa',
companies: 'às empresas',
legalName: 'Alma Career e às empresas pertencentes ao seu grupo comercial',
};
/**
* @param {ExtraMessages} [extraMessages] - Object with extra messages
* @param {CookieTableCategories} [cookieTable] - Cookie table items defined by category
* @returns {Translation} Object with translated messages
*/
export const config = (extraMessages: ExtraMessages, cookieTable: CookieTableCategories): Translation => {
const lang = { ...extra, ...extraMessages };
const cookieTableHeaders = { name: 'Nome', description: 'Assinatura', expiration: 'Validade' };

return {
consentModal: {
title: lang.consentTitle ?? 'Graças aos cookies as nossas páginas serão ainda melhores',
description: `
${assembleDescriptionIntro(
'Se soubermos claramente o que lhe interessa, exibir-lhe-emos apenas conteúdos à medida.',
lang.descriptionIntro,
)}
<p>
Clicando em «Aceitar todos» dá
${pluralize(lang.companyNames.length, lang.company, lang.companies)}
${addSeparators(legalizeAlmaCareer(lang.companyNames, lang.legalName), extra.and)}
consentimento para usarem cookies com o intuito de personalizarem, analisarem e criarem campanhas de marketing mais direcionadas.
Há mais informações sobre cookies e como ajustá-los nas <strong><a href="" data-cc="show-preferencesModal">configurações dedicadas a isso</a></strong>.
</p>`,
acceptAllBtn: 'Aceitar todos',
acceptNecessaryBtn: 'Aceitar os necessários',
},
preferencesModal: {
title: 'Editar as configurações de cookies',
acceptAllBtn: 'Aceitar todos',
acceptNecessaryBtn: 'Aceitar os necessários',
savePreferencesBtn: 'Guardar configurações',
sections: [
{
description: `Para aproveitar ao máximo das nossas páginas, aconselhamos ativar todos os tipos de cookies.
${
lang.preferencesModalMoreInfo ??
`Há mais informações sobre o significado dos cookies e como os processamos nas <a href="https://www.almacareer.com/gdpr" target="_blank">Políticas sobre Cookies</a>.`
}`,
},
...assembleCookieTableSections(
cookieTableHeaders,
{
necessary: {
title: 'Cookies tecnicamente necessários',
description:
'Tais cookies são essenciais para o funcionamento correto das nossas páginas, por conseguinte não é possível desativá-los. Sem eles não seria possível, por exemplo, exibir nenhum conteúdo nas nossas páginas ou não funcionaria o login.',
},
analytics: {
title: 'Cookies analíticos',
description:
'Com a sua ajuda acompanhamos quantas pessoas visitam as nossas páginas e como as utilizam. Graças a isso podemos aperfeiçoar cada vez mais as nossas páginas e os serviços que oferecemos.',
},
functionality: {
title: 'Cookies funcionais',
description:
'Graças a tais cookies as nossas páginas são ainda mais eficientes e funcionam melhor. Por exemplo, possibilitam que utilizemos o chat para podermos responder rápida e comodamente às perguntas dos utilizadores.',
},
ad: {
title: 'Cookies de marketing',
description:
'Com tais cookies podemos mensurar qual o grau de eficácia das nossas publicidades e da amplitude desejada dos nossos serviços. Cookies de marketing permitem-nos informar os utilizadores de novidades que lhes possam interessar.',
},
personalization: {
title: 'Cookies personalizados',
description:
'Os nossos serviços funcionam melhor se os podemos adaptar à medida a um utilizador concreto. Habilitando os cookies personalizados, aumenta as chances de encontrar os conteúdos dos quais está à procura.',
},
},
cookieTable,
),
],
},
};
};

export default config;

0 comments on commit 7deb4bf

Please sign in to comment.