From 58d47cd69adf41f1f3e7fa2a5fb40cb7c176a978 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:04:04 +0000 Subject: [PATCH 01/10] Bump @apidevtools/json-schema-ref-parser in /backend Bumps [@apidevtools/json-schema-ref-parser](https://github.com/APIDevTools/json-schema-ref-parser) from 11.9.3 to 14.1.1. - [Release notes](https://github.com/APIDevTools/json-schema-ref-parser/releases) - [Commits](https://github.com/APIDevTools/json-schema-ref-parser/compare/v11.9.3...v14.1.1) --- updated-dependencies: - dependency-name: "@apidevtools/json-schema-ref-parser" dependency-version: 14.1.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- backend/package.json | 2 +- backend/yarn.lock | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/backend/package.json b/backend/package.json index 61c599d9..41ecd463 100644 --- a/backend/package.json +++ b/backend/package.json @@ -12,7 +12,7 @@ "validate-schema": "node validate-schema.js" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "^11.7.0", + "@apidevtools/json-schema-ref-parser": "^14.1.1", "ajv": "^8.17.1", "archiver": "^7.0.1", "batchflow": "^0.4.0", diff --git a/backend/yarn.lock b/backend/yarn.lock index 303ee3b4..2d1a9ccc 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -10,12 +10,11 @@ "@types/json-schema" "^7.0.15" js-yaml "^4.1.0" -"@apidevtools/json-schema-ref-parser@^11.7.0": - version "11.9.3" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz#0e0c9061fc41cf03737d499a4e6a8299fdd2bfa7" - integrity sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ== +"@apidevtools/json-schema-ref-parser@^14.1.1": + version "14.1.1" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.1.1.tgz#0bae59809b7848c7a89dc6bb2f3bb980b7c290b1" + integrity sha512-uGF1YGOzzD50L7HLNWclXmsEhQflw8/zZHIz0/AzkJrKL5r9PceUipZxR/cp/8veTk4TVfdDJLyIwXLjaP5ePg== dependencies: - "@jsdevtools/ono" "^7.1.3" "@types/json-schema" "^7.0.15" js-yaml "^4.1.0" @@ -112,11 +111,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jsdevtools/ono@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" - integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== - "@npmcli/fs@^1.0.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" From 8532e7520f9b3d668253374fc1afb45701178829 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:04:20 +0000 Subject: [PATCH 02/10] Bump body-parser from 1.20.4 to 2.2.2 in /backend Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.4 to 2.2.2. - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/body-parser/compare/1.20.4...v2.2.2) --- updated-dependencies: - dependency-name: body-parser dependency-version: 2.2.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- backend/package.json | 2 +- backend/yarn.lock | 77 ++++---------------------------------------- 2 files changed, 7 insertions(+), 72 deletions(-) diff --git a/backend/package.json b/backend/package.json index 61c599d9..35ce9698 100644 --- a/backend/package.json +++ b/backend/package.json @@ -17,7 +17,7 @@ "archiver": "^7.0.1", "batchflow": "^0.4.0", "bcrypt": "^6.0.0", - "body-parser": "^1.20.3", + "body-parser": "^2.2.2", "compression": "^1.7.4", "express": "^5.2.1", "express-fileupload": "^1.5.2", diff --git a/backend/yarn.lock b/backend/yarn.lock index 303ee3b4..96747ce2 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -429,25 +429,7 @@ blueimp-md5@^2.16.0: resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== -body-parser@^1.20.3: - version "1.20.4" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f" - integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA== - dependencies: - bytes "~3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "~1.2.0" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - on-finished "~2.4.1" - qs "~6.14.0" - raw-body "~2.5.3" - type-is "~1.6.18" - unpipe "~1.0.0" - -body-parser@^2.2.1: +body-parser@^2.2.1, body-parser@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.2.tgz#1a32cdb966beaf68de50a9dfbe5b58f83cb8890c" integrity sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA== @@ -710,7 +692,7 @@ content-disposition@^1.0.0: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.1.tgz#a8b7bbeb2904befdfb6787e5c0c086959f605f9b" integrity sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q== -content-type@^1.0.5, content-type@~1.0.5: +content-type@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -819,16 +801,11 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: +depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -destroy@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-libc@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" @@ -1365,13 +1342,6 @@ iconv-lite@^0.7.0, iconv-lite@^0.7.2, iconv-lite@~0.7.0: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@~0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -1725,11 +1695,6 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - media-typer@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" @@ -1740,11 +1705,6 @@ merge-descriptors@^2.0.0: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - "mime-db@>= 1.43.0 < 2", mime-db@^1.54.0: version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" @@ -1757,13 +1717,6 @@ mime-types@^3.0.0, mime-types@^3.0.2: dependencies: mime-db "^1.54.0" -mime-types@~2.1.24: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" @@ -2028,7 +1981,7 @@ objection@3.1.5: ajv-formats "^2.1.1" db-errors "^0.2.3" -on-finished@^2.4.1, on-finished@~2.4.1: +on-finished@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -2369,7 +2322,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -qs@^6.14.0, qs@^6.14.1, qs@~6.14.0: +qs@^6.14.0, qs@^6.14.1: version "6.14.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159" integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ== @@ -2396,16 +2349,6 @@ raw-body@^3.0.1: iconv-lite "~0.7.0" unpipe "~1.0.0" -raw-body@~2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" - integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== - dependencies: - bytes "~3.1.2" - http-errors "~2.0.1" - iconv-lite "~0.4.24" - unpipe "~1.0.0" - rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -2532,7 +2475,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2967,14 +2910,6 @@ type-is@^2.0.1: media-typer "^1.1.0" mime-types "^3.0.0" -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" From 83d993578b2ebe0b910ff646674570c355e1025d Mon Sep 17 00:00:00 2001 From: maghuro Date: Fri, 5 Dec 2025 10:52:47 +0000 Subject: [PATCH 03/10] Add pt-PT lang Add Portuguese (European) language --- frontend/check-locales.cjs | 17 + frontend/src/locale/IntlProvider.tsx | 18 + frontend/src/locale/src/HelpDoc/index.ts | 5 + .../src/locale/src/HelpDoc/pt/AccessLists.md | 11 + .../src/locale/src/HelpDoc/pt/Certificates.md | 31 + .../src/locale/src/HelpDoc/pt/DeadHosts.md | 9 + .../src/locale/src/HelpDoc/pt/ProxyHosts.md | 7 + .../locale/src/HelpDoc/pt/RedirectionHosts.md | 7 + frontend/src/locale/src/HelpDoc/pt/Streams.md | 6 + frontend/src/locale/src/HelpDoc/pt/index.ts | 6 + frontend/src/locale/src/lang-list.json | 45 ++ frontend/src/locale/src/pt.json | 683 ++++++++++++++++++ 12 files changed, 845 insertions(+) create mode 100644 frontend/src/locale/src/HelpDoc/pt/AccessLists.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/Certificates.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/DeadHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/ProxyHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/RedirectionHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/Streams.md create mode 100644 frontend/src/locale/src/HelpDoc/pt/index.ts create mode 100644 frontend/src/locale/src/pt.json diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index e5b1947f..1f4410ff 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -7,6 +7,7 @@ // - Also checks the error messages returned by the backend const allLocales = [ +<<<<<<< HEAD ["en", "en-US"], ["de", "de-DE"], ["es", "es-ES"], @@ -24,6 +25,22 @@ const allLocales = [ ["id", "id-ID"], ["tr", "tr-TR"], ["hu", "hu-HU"], +======= + ["en", "en-US"], + ["de", "de-DE"], + ["pt", "pt-PT"], + ["es", "es-ES"], + ["it", "it-IT"], + ["ja", "ja-JP"], + ["nl", "nl-NL"], + ["pl", "pl-PL"], + ["ru", "ru-RU"], + ["sk", "sk-SK"], + ["vi", "vi-VN"], + ["zh", "zh-CN"], + ["ko", "ko-KR"], + ["bg", "bg-BG"], +>>>>>>> da4147cd (Add pt-PT lang) ]; const ignoreUnused = [/^.*$/]; diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 050daa0f..5aa9684d 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -1,6 +1,7 @@ import { createIntl, createIntlCache } from "react-intl"; import langBg from "./lang/bg.json"; import langDe from "./lang/de.json"; +import langPt from "./lang/pt.json"; import langEn from "./lang/en.json"; import langEs from "./lang/es.json"; import langFr from "./lang/fr.json"; @@ -23,6 +24,7 @@ import langList from "./lang/lang-list.json"; // not the country code // Remember when adding to this list, also update check-locales.js script const localeOptions = [ +<<<<<<< HEAD ["en", "en-US", langEn], ["de", "de-DE", langDe], ["es", "es-ES", langEs], @@ -41,6 +43,22 @@ const localeOptions = [ ["id", "id-ID", langId], ["tr", "tr-TR", langTr], ["hu", "hu-HU", langHu], +======= + ["en", "en-US", langEn], + ["de", "de-DE", langDe], + ["pt", "pt-PT", langPt], + ["es", "es-ES", langEs], + ["ja", "ja-JP", langJa], + ["it", "it-IT", langIt], + ["nl", "nl-NL", langNl], + ["pl", "pl-PL", langPl], + ["ru", "ru-RU", langRu], + ["sk", "sk-SK", langSk], + ["vi", "vi-VN", langVi], + ["zh", "zh-CN", langZh], + ["ko", "ko-KR", langKo], + ["bg", "bg-BG", langBg], +>>>>>>> da4147cd (Add pt-PT lang) ]; const loadMessages = (locale?: string): typeof langList & typeof langEn => { diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index e4d0a259..6464c8a8 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -1,5 +1,6 @@ import * as bg from "./bg/index"; import * as de from "./de/index"; +import * as pt from "./pt/index"; import * as en from "./en/index"; import * as es from "./es/index"; import * as fr from "./fr/index"; @@ -17,7 +18,11 @@ import * as zh from "./zh/index"; import * as tr from "./tr/index"; import * as hu from "./hu/index"; +<<<<<<< HEAD const items: any = { en, de, es, ja, sk, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu }; +======= +const items: any = { en, de, pt, ja, sk, zh, pl, ru, it, vi, nl, bg, ko }; +>>>>>>> da4147cd (Add pt-PT lang) const fallbackLang = "en"; diff --git a/frontend/src/locale/src/HelpDoc/pt/AccessLists.md b/frontend/src/locale/src/HelpDoc/pt/AccessLists.md new file mode 100644 index 00000000..fcedb8a5 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/AccessLists.md @@ -0,0 +1,11 @@ +## O que é uma Access List? + +As *Access Lists* fornecem uma lista de permissões (whitelist) ou bloqueios (blacklist) +de endereços IP específicos de clientes, juntamente com autenticação para os *Proxy Hosts* +via Autenticação HTTP Básica (*Basic Auth*). + +Podes configurar múltiplas regras de cliente, nomes de utilizador e palavras-passe +para uma única *Access List*, e depois aplicá-la a um ou mais *Proxy Hosts*. + +Isto é especialmente útil para serviços web encaminhados que não têm mecanismos +de autenticação integrados ou quando pretendes proteger o acesso contra clientes desconhecidos. diff --git a/frontend/src/locale/src/HelpDoc/pt/Certificates.md b/frontend/src/locale/src/HelpDoc/pt/Certificates.md new file mode 100644 index 00000000..da92f803 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/Certificates.md @@ -0,0 +1,31 @@ +## Ajuda de Certificados + +### Certificado HTTP + +Um certificado validado por HTTP significa que os servidores do Let's Encrypt irão +tentar aceder aos teus domínios via HTTP (não HTTPS!) e, se a ligação for bem-sucedida, +emitirão o certificado. + +Para este método, é necessário ter um *Proxy Host* criado para o(s) teu(s) domínio(s), +acessível via HTTP e a apontar para esta instalação do Nginx. Depois de o certificado ser +emitido, podes modificar o *Proxy Host* para também utilizar esse certificado em ligações HTTPS. +No entanto, o *Proxy Host* deve continuar configurado para acesso HTTP para que a renovação +funcione corretamente. + +Este processo **não** suporta domínios wildcard. + +### Certificado DNS + +Um certificado validado por DNS requer que uses um plugin de fornecedor DNS (*DNS Provider*). +Este fornecedor será usado para criar registos temporários no teu domínio, que serão consultados +pelo Let's Encrypt para confirmar que és o proprietário. Se tudo correr bem, o certificado será emitido. + +Não é necessário ter um *Proxy Host* criado antes de pedir este tipo de certificado. +Também não é necessário que o *Proxy Host* tenha acesso HTTP configurado. + +Este processo **suporta** domínios wildcard. + +### Certificado Personalizado + +Usa esta opção para carregar o teu próprio Certificado SSL, fornecido pela +tua Autoridade Certificadora. diff --git a/frontend/src/locale/src/HelpDoc/pt/DeadHosts.md b/frontend/src/locale/src/HelpDoc/pt/DeadHosts.md new file mode 100644 index 00000000..c9874a14 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/DeadHosts.md @@ -0,0 +1,9 @@ +## O que é um 404 Host? + +Um *404 Host* é simplesmente um host configurado para apresentar uma página 404. + +Isto pode ser útil quando o teu domínio aparece em motores de busca e queres fornecer +uma página de erro mais agradável ou indicar especificamente aos indexadores de pesquisa +que as páginas desse domínio já não existem. + +Outra vantagem é permitir consultar os registos de acessos a este host e ver os referenciadores. diff --git a/frontend/src/locale/src/HelpDoc/pt/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/pt/ProxyHosts.md new file mode 100644 index 00000000..4c221fac --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/ProxyHosts.md @@ -0,0 +1,7 @@ +## O que é um Proxy Host? + +Um *Proxy Host* é o ponto de entrada para um serviço web que pretendes encaminhar. + +Permite, opcionalmente, fazer terminação SSL para um serviço que possa não ter suporte SSL nativo. + +Os *Proxy Hosts* são a utilização mais comum do Nginx Proxy Manager. diff --git a/frontend/src/locale/src/HelpDoc/pt/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/pt/RedirectionHosts.md new file mode 100644 index 00000000..10418ba0 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/RedirectionHosts.md @@ -0,0 +1,7 @@ +## O que é um Redirection Host? + +Um *Redirection Host* redireciona pedidos recebidos no domínio de entrada e envia +o utilizador para outro domínio. + +A razão mais comum para usar este tipo de host é quando o teu site muda de domínio +mas ainda tens motores de busca ou links de referência a apontar para o domínio antigo. diff --git a/frontend/src/locale/src/HelpDoc/pt/Streams.md b/frontend/src/locale/src/HelpDoc/pt/Streams.md new file mode 100644 index 00000000..83857c63 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/Streams.md @@ -0,0 +1,6 @@ +## O que é um Stream? + +Uma funcionalidade relativamente recente no Nginx, um *Stream* serve para encaminhar +tráfego TCP/UDP diretamente para outro computador na rede. + +Se estiveres a executar servidores de jogos, FTP ou SSH, isto pode ser bastante útil. diff --git a/frontend/src/locale/src/HelpDoc/pt/index.ts b/frontend/src/locale/src/HelpDoc/pt/index.ts new file mode 100644 index 00000000..a9bb46ba --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/pt/index.ts @@ -0,0 +1,6 @@ +export * as AccessLists from "./AccessLists.md"; +export * as Certificates from "./Certificates.md"; +export * as DeadHosts from "./DeadHosts.md"; +export * as ProxyHosts from "./ProxyHosts.md"; +export * as RedirectionHosts from "./RedirectionHosts.md"; +export * as Streams from "./Streams.md"; diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 0c8fb60e..92b61b4e 100644 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -1,4 +1,5 @@ { +<<<<<<< HEAD "locale-en-US": { "defaultMessage": "English" }, @@ -53,4 +54,48 @@ "locale-hu-HU": { "defaultMessage": "Magyar" } +======= + "locale-en-US": { + "defaultMessage": "English" + }, + "locale-es-ES": { + "defaultMessage": "Español" + }, + "locale-de-DE": { + "defaultMessage": "German" + }, + "locale-pt-PT": { + "defaultMessage": "Português (Europeu)" + }, + "locale-ja-JP": { + "defaultMessage": "日本語" + }, + "locale-ru-RU": { + "defaultMessage": "Русский" + }, + "locale-sk-SK": { + "defaultMessage": "Slovenčina" + }, + "locale-zh-CN": { + "defaultMessage": "中文" + }, + "locale-pl-PL": { + "defaultMessage": "Polski" + }, + "locale-it-IT": { + "defaultMessage": "Italiano" + }, + "locale-vi-VN": { + "defaultMessage": "Tiếng Việt" + }, + "locale-nl-NL": { + "defaultMessage": "Nederlands" + }, + "locale-ko-KR": { + "defaultMessage": "한국어" + }, + "locale-bg-BG": { + "defaultMessage": "Български" + } +>>>>>>> da4147cd (Add pt-PT lang) } diff --git a/frontend/src/locale/src/pt.json b/frontend/src/locale/src/pt.json new file mode 100644 index 00000000..0a789f48 --- /dev/null +++ b/frontend/src/locale/src/pt.json @@ -0,0 +1,683 @@ +{ + "access-list": { + "defaultMessage": "Lista de Controlo de Acesso (ACL)" + }, + "access-list.access-count": { + "defaultMessage": "{count} {count, plural, one {Regra} other {Regras}}" + }, + "access-list.auth-count": { + "defaultMessage": "{count} {count, plural, one {Utilizador} other {Utilizadores}}" + }, + "access-list.help-rules-last": { + "defaultMessage": "Quando existir pelo menos 1 regra, esta regra de negação geral será aplicada em último lugar" + }, + "access-list.help.rules-order": { + "defaultMessage": "Nota: as diretivas allow e deny são aplicadas pela ordem em que forem definidas." + }, + "access-list.pass-auth": { + "defaultMessage": "Passar Autenticação para o Upstream" + }, + "access-list.public": { + "defaultMessage": "Acesso Público" + }, + "access-list.public.subtitle": { + "defaultMessage": "Sem autenticação básica" + }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 ou 192.168.1.0/24 ou 2001:0db8::/32" + }, + "access-list.satisfy-any": { + "defaultMessage": "Satisfazer Qualquer" + }, + "access-list.subtitle": { + "defaultMessage": "{users} {users, plural, one {Utilizador} other {Utilizadores}}, {rules} {rules, plural, one {Regra} other {Regras}} – Criado em: {date}" + }, + "access-lists": { + "defaultMessage": "Listas de Controlo de Acesso (ACL)" + }, + "action.add": { + "defaultMessage": "Adicionar" + }, + "action.add-location": { + "defaultMessage": "Adicionar Location" + }, + "action.allow": { + "defaultMessage": "Permitir" + }, + "action.close": { + "defaultMessage": "Fechar" + }, + "action.delete": { + "defaultMessage": "Eliminar" + }, + "action.deny": { + "defaultMessage": "Negar" + }, + "action.disable": { + "defaultMessage": "Desativar" + }, + "action.download": { + "defaultMessage": "Descarregar" + }, + "action.edit": { + "defaultMessage": "Editar" + }, + "action.enable": { + "defaultMessage": "Ativar" + }, + "action.permissions": { + "defaultMessage": "Permissões" + }, + "action.renew": { + "defaultMessage": "Renovar" + }, + "action.view-details": { + "defaultMessage": "Ver Detalhes" + }, + "auditlogs": { + "defaultMessage": "Registos de Auditoria" + }, + "auto": { + "defaultMessage": "Automático" + }, + "cancel": { + "defaultMessage": "Cancelar" + }, + "certificate": { + "defaultMessage": "Certificado" + }, + "certificate.custom-certificate": { + "defaultMessage": "Certificado Personalizado" + }, + "certificate.custom-certificate-key": { + "defaultMessage": "Chave do Certificado" + }, + "certificate.custom-intermediate": { + "defaultMessage": "Certificado Intermédio" + }, + "certificate.in-use": { + "defaultMessage": "Em Utilização" + }, + "certificate.none.subtitle": { + "defaultMessage": "Nenhum certificado atribuído" + }, + "certificate.none.subtitle.for-http": { + "defaultMessage": "Este host não irá utilizar HTTPS" + }, + "certificate.none.title": { + "defaultMessage": "Nenhum" + }, + "certificate.not-in-use": { + "defaultMessage": "Não Utilizado" + }, + "certificate.renew": { + "defaultMessage": "Renovar Certificado" + }, + "certificates": { + "defaultMessage": "Certificados" + }, + "certificates.custom": { + "defaultMessage": "Certificado Personalizado" + }, + "certificates.custom.warning": { + "defaultMessage": "Ficheiros de chave protegidos por palavra-passe não são suportados." + }, + "certificates.dns.credentials": { + "defaultMessage": "Conteúdo do Ficheiro de Credenciais" + }, + "certificates.dns.credentials-note": { + "defaultMessage": "Este plugin requer um ficheiro de configuração contendo um token API ou outras credenciais do fornecedor DNS." + }, + "certificates.dns.credentials-warning": { + "defaultMessage": "Estes dados serão guardados em texto simples na base de dados e num ficheiro!" + }, + "certificates.dns.propagation-seconds": { + "defaultMessage": "Segundos de Propagação" + }, + "certificates.dns.propagation-seconds-note": { + "defaultMessage": "Deixe em branco para usar o valor predefinido do plugin. Número de segundos a aguardar pela propagação DNS." + }, + "certificates.dns.provider": { + "defaultMessage": "Fornecedor DNS" + }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "Selecionar fornecedor..." + }, + "certificates.dns.warning": { + "defaultMessage": "Esta secção requer conhecimentos sobre o Certbot e os seus plugins DNS. Consulte a documentação dos plugins." + }, + "certificates.http.reachability-404": { + "defaultMessage": "Foi encontrado um servidor neste domínio, mas não parece ser o Nginx Proxy Manager. Certifique-se de que o domínio aponta para o IP onde a sua instância está a correr." + }, + "certificates.http.reachability-failed-to-check": { + "defaultMessage": "Falha ao verificar acessibilidade devido a um erro de comunicação com site24x7.com." + }, + "certificates.http.reachability-not-resolved": { + "defaultMessage": "Não existe nenhum servidor acessível neste domínio. Certifique-se de que o domínio existe, aponta para o IP correto e que a porta 80 está encaminhada no seu router." + }, + "certificates.http.reachability-ok": { + "defaultMessage": "O servidor está acessível e a criação de certificados deverá ser possível." + }, + "certificates.http.reachability-other": { + "defaultMessage": "Foi encontrado um servidor neste domínio, mas devolveu um código inesperado ({code}). Será o servidor NPM? Confirme que o domínio aponta para o IP correto." + }, + "certificates.http.reachability-wrong-data": { + "defaultMessage": "Foi encontrado um servidor neste domínio, mas devolveu dados inesperados. Será o servidor NPM? Confirme que o domínio aponta para o IP correto." + }, + "certificates.http.test-results": { + "defaultMessage": "Resultados do Teste" + }, + "certificates.http.warning": { + "defaultMessage": "Estes domínios devem já estar configurados para apontar para esta instalação." + }, + "certificates.request.subtitle": { + "defaultMessage": "com o Let's Encrypt" + }, + "certificates.request.title": { + "defaultMessage": "Pedir Novo Certificado" + }, + "column.access": { + "defaultMessage": "Acesso" + }, + "column.authorization": { + "defaultMessage": "Autorização" + }, + "column.authorizations": { + "defaultMessage": "Autorizações" + }, + "column.custom-locations": { + "defaultMessage": "Locations Personalizados" + }, + "column.destination": { + "defaultMessage": "Destino" + }, + "column.details": { + "defaultMessage": "Detalhes" + }, + "column.email": { + "defaultMessage": "Email" + }, + "column.event": { + "defaultMessage": "Evento" + }, + "column.expires": { + "defaultMessage": "Expira" + }, + "column.http-code": { + "defaultMessage": "Código HTTP" + }, + "column.incoming-port": { + "defaultMessage": "Porta de Entrada" + }, + "column.name": { + "defaultMessage": "Nome" + }, + "column.protocol": { + "defaultMessage": "Protocolo" + }, + "column.provider": { + "defaultMessage": "Fornecedor" + }, + "column.roles": { + "defaultMessage": "Funções" + }, + "column.rules": { + "defaultMessage": "Regras" + }, + "column.satisfy": { + "defaultMessage": "Satisfazer" + }, + "column.satisfy-all": { + "defaultMessage": "Todos" + }, + "column.satisfy-any": { + "defaultMessage": "Qualquer" + }, + "column.scheme": { + "defaultMessage": "Esquema" + }, + "column.source": { + "defaultMessage": "Origem" + }, + "column.ssl": { + "defaultMessage": "SSL" + }, + "column.status": { + "defaultMessage": "Estado" + }, + "created-on": { + "defaultMessage": "Criado em: {date}" + }, + "dashboard": { + "defaultMessage": "Painel" + }, + "dead-host": { + "defaultMessage": "Host 404" + }, + "dead-hosts": { + "defaultMessage": "Hosts 404" + }, + "dead-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Host 404} other {Hosts 404}}" + }, + "disabled": { + "defaultMessage": "Desativado" + }, + "domain-names": { + "defaultMessage": "Nomes de Domínio" + }, + "domain-names.max": { + "defaultMessage": "Máximo de {count} domínios" + }, + "domain-names.placeholder": { + "defaultMessage": "Comece a escrever para adicionar um domínio..." + }, + "domain-names.wildcards-not-permitted": { + "defaultMessage": "Wildcards não permitidos para este tipo" + }, + "domain-names.wildcards-not-supported": { + "defaultMessage": "Wildcards não suportados por esta AC" + }, + "domains.force-ssl": { + "defaultMessage": "Forçar SSL" + }, + "domains.hsts-enabled": { + "defaultMessage": "HSTS Ativado" + }, + "domains.hsts-subdomains": { + "defaultMessage": "HSTS para Subdomínios" + }, + "domains.http2-support": { + "defaultMessage": "Suporte HTTP/2" + }, + "domains.use-dns": { + "defaultMessage": "Utilizar DNS Challenge" + }, + "email-address": { + "defaultMessage": "Endereço de Email" + }, + "empty-search": { + "defaultMessage": "Nenhum resultado encontrado" + }, + "empty-subtitle": { + "defaultMessage": "Porque não cria um?" + }, + "enabled": { + "defaultMessage": "Ativado" + }, + "error.access.at-least-one": { + "defaultMessage": "É necessária pelo menos uma Autorização ou uma Regra de Acesso" + }, + "error.access.duplicate-usernames": { + "defaultMessage": "Os nomes de utilizador de autorização devem ser únicos" + }, + "error.invalid-auth": { + "defaultMessage": "Email ou palavra-passe inválidos" + }, + "error.invalid-domain": { + "defaultMessage": "Domínio inválido: {domain}" + }, + "error.invalid-email": { + "defaultMessage": "Endereço de email inválido" + }, + "error.max-character-length": { + "defaultMessage": "Tamanho máximo: {max} caractere{max, plural, one {} other {s}}" + }, + "error.max-domains": { + "defaultMessage": "Demasiados domínios; o máximo é {max}" + }, + "error.maximum": { + "defaultMessage": "Máximo permitido: {max}" + }, + "error.min-character-length": { + "defaultMessage": "Tamanho mínimo: {min} caractere{min, plural, one {} other {s}}" + }, + "error.minimum": { + "defaultMessage": "Mínimo permitido: {min}" + }, + "error.passwords-must-match": { + "defaultMessage": "As palavras-passe têm de coincidir" + }, + "error.required": { + "defaultMessage": "Campo obrigatório" + }, + "expires.on": { + "defaultMessage": "Expira em: {date}" + }, + "footer.github-fork": { + "defaultMessage": "Faz fork no GitHub" + }, + "host.flags.block-exploits": { + "defaultMessage": "Bloquear Exploits Comuns" + }, + "host.flags.cache-assets": { + "defaultMessage": "Cache de Conteúdos Estáticos" + }, + "host.flags.preserve-path": { + "defaultMessage": "Preservar Caminho" + }, + "host.flags.protocols": { + "defaultMessage": "Protocolos" + }, + "host.flags.websockets-upgrade": { + "defaultMessage": "Suporte para WebSockets" + }, + "host.forward-port": { + "defaultMessage": "Porta de Encaminhamento" + }, + "host.forward-scheme": { + "defaultMessage": "Esquema" + }, + "hosts": { + "defaultMessage": "Hosts" + }, + "http-only": { + "defaultMessage": "Apenas HTTP" + }, + "lets-encrypt": { + "defaultMessage": "Let's Encrypt" + }, + "lets-encrypt-via-dns": { + "defaultMessage": "Let's Encrypt via DNS" + }, + "lets-encrypt-via-http": { + "defaultMessage": "Let's Encrypt via HTTP" + }, + "loading": { + "defaultMessage": "A carregar…" + }, + "login.title": { + "defaultMessage": "Iniciar sessão na sua conta" + }, + "nginx-config.label": { + "defaultMessage": "Configuração Nginx Personalizada" + }, + "nginx-config.placeholder": { + "defaultMessage": "# Insira aqui a sua configuração Nginx personalizada (utilize por sua conta e risco!)" + }, + "no-permission-error": { + "defaultMessage": "Não tem permissões para ver esta página." + }, + "notfound.action": { + "defaultMessage": "Voltar à página inicial" + }, + "notfound.content": { + "defaultMessage": "A página que procura não foi encontrada." + }, + "notfound.title": { + "defaultMessage": "Oops… Encontrou uma página de erro" + }, + "notification.error": { + "defaultMessage": "Erro" + }, + "notification.object-deleted": { + "defaultMessage": "{object} foi eliminado" + }, + "notification.object-disabled": { + "defaultMessage": "{object} foi desativado" + }, + "notification.object-enabled": { + "defaultMessage": "{object} foi ativado" + }, + "notification.object-renewed": { + "defaultMessage": "{object} foi renovado" + }, + "notification.object-saved": { + "defaultMessage": "{object} foi guardado" + }, + "notification.success": { + "defaultMessage": "Sucesso" + }, + "object.actions-title": { + "defaultMessage": "{object} #{id}" + }, + "object.add": { + "defaultMessage": "Adicionar {object}" + }, + "object.delete": { + "defaultMessage": "Eliminar {object}" + }, + "object.delete.content": { + "defaultMessage": "Tem a certeza de que deseja eliminar este {object}?" + }, + "object.edit": { + "defaultMessage": "Editar {object}" + }, + "object.empty": { + "defaultMessage": "Não existem {objects}" + }, + "object.event.created": { + "defaultMessage": "{object} criado" + }, + "object.event.deleted": { + "defaultMessage": "{object} eliminado" + }, + "object.event.disabled": { + "defaultMessage": "{object} desativado" + }, + "object.event.enabled": { + "defaultMessage": "{object} ativado" + }, + "object.event.renewed": { + "defaultMessage": "{object} renovado" + }, + "object.event.updated": { + "defaultMessage": "{object} atualizado" + }, + "offline": { + "defaultMessage": "Offline" + }, + "online": { + "defaultMessage": "Online" + }, + "options": { + "defaultMessage": "Opções" + }, + "password": { + "defaultMessage": "Palavra-passe" + }, + "password.generate": { + "defaultMessage": "Gerar palavra-passe aleatória" + }, + "password.hide": { + "defaultMessage": "Esconder Palavra-passe" + }, + "password.show": { + "defaultMessage": "Mostrar Palavra-passe" + }, + "permissions.hidden": { + "defaultMessage": "Oculto" + }, + "permissions.manage": { + "defaultMessage": "Gerir" + }, + "permissions.view": { + "defaultMessage": "Apenas Visualização" + }, + "permissions.visibility.all": { + "defaultMessage": "Todos os Itens" + }, + "permissions.visibility.title": { + "defaultMessage": "Visibilidade do Item" + }, + "permissions.visibility.user": { + "defaultMessage": "Apenas Itens Criados" + }, + "proxy-host": { + "defaultMessage": "Proxy Host" + }, + "proxy-host.forward-host": { + "defaultMessage": "Hostname/IP de Encaminhamento" + }, + "proxy-hosts": { + "defaultMessage": "Proxy Hosts" + }, + "proxy-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}" + }, + "public": { + "defaultMessage": "Público" + }, + "redirection-host": { + "defaultMessage": "Host de Redirecionamento" + }, + "redirection-host.forward-domain": { + "defaultMessage": "Domínio de Destino" + }, + "redirection-host.forward-http-code": { + "defaultMessage": "Código HTTP" + }, + "redirection-hosts": { + "defaultMessage": "Hosts de Redirecionamento" + }, + "redirection-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Host de Redirecionamento} other {Hosts de Redirecionamento}}" + }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Múltiplas Escolhas" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Movido Permanentemente" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Movido Temporariamente" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 Ver Outro" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Redirecionamento Temporário" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Redirecionamento Permanente" + }, + "role.admin": { + "defaultMessage": "Administrador" + }, + "role.standard-user": { + "defaultMessage": "Utilizador Comum" + }, + "save": { + "defaultMessage": "Guardar" + }, + "setting": { + "defaultMessage": "Definição" + }, + "settings": { + "defaultMessage": "Definições" + }, + "settings.default-site": { + "defaultMessage": "Site Predefinido" + }, + "settings.default-site.404": { + "defaultMessage": "Página 404" + }, + "settings.default-site.444": { + "defaultMessage": "Sem Resposta (444)" + }, + "settings.default-site.congratulations": { + "defaultMessage": "Página de Boas-vindas" + }, + "settings.default-site.description": { + "defaultMessage": "O que apresentar quando o Nginx recebe um Host desconhecido" + }, + "settings.default-site.html": { + "defaultMessage": "HTML Personalizado" + }, + "settings.default-site.html.placeholder": { + "defaultMessage": "" + }, + "settings.default-site.redirect": { + "defaultMessage": "Redirecionar" + }, + "setup.preamble": { + "defaultMessage": "Comece por criar a sua conta de administrador." + }, + "setup.title": { + "defaultMessage": "Bem-vindo!" + }, + "sign-in": { + "defaultMessage": "Iniciar Sessão" + }, + "ssl-certificate": { + "defaultMessage": "Certificado SSL" + }, + "stream": { + "defaultMessage": "Stream" + }, + "stream.forward-host": { + "defaultMessage": "Host de Destino" + }, + "stream.forward-host.placeholder": { + "defaultMessage": "example.com ou 10.0.0.1 ou 2001:db8:3333:4444:5555:6666:7777:8888" + }, + "stream.incoming-port": { + "defaultMessage": "Porta de Entrada" + }, + "streams": { + "defaultMessage": "Streams" + }, + "streams.count": { + "defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}" + }, + "streams.tcp": { + "defaultMessage": "TCP" + }, + "streams.udp": { + "defaultMessage": "UDP" + }, + "test": { + "defaultMessage": "Testar" + }, + "update-available": { + "defaultMessage": "Atualização Disponível: {latestVersion}" + }, + "user": { + "defaultMessage": "Utilizador" + }, + "user.change-password": { + "defaultMessage": "Alterar Palavra-passe" + }, + "user.confirm-password": { + "defaultMessage": "Confirmar Palavra-passe" + }, + "user.current-password": { + "defaultMessage": "Palavra-passe Atual" + }, + "user.edit-profile": { + "defaultMessage": "Editar Perfil" + }, + "user.full-name": { + "defaultMessage": "Nome Completo" + }, + "user.login-as": { + "defaultMessage": "Iniciar sessão como {name}" + }, + "user.logout": { + "defaultMessage": "Terminar Sessão" + }, + "user.new-password": { + "defaultMessage": "Nova Palavra-passe" + }, + "user.nickname": { + "defaultMessage": "Alcunha" + }, + "user.set-password": { + "defaultMessage": "Definir Palavra-passe" + }, + "user.set-permissions": { + "defaultMessage": "Definir Permissões para {name}" + }, + "user.switch-dark": { + "defaultMessage": "Ativar Modo Escuro" + }, + "user.switch-light": { + "defaultMessage": "Ativar Modo Claro" + }, + "username": { + "defaultMessage": "Nome de Utilizador" + }, + "users": { + "defaultMessage": "Utilizadores" + } +} From 8c8005f8171447123ef29f1b656c253aa346be2e Mon Sep 17 00:00:00 2001 From: maghuro Date: Sat, 31 Jan 2026 12:05:32 +0000 Subject: [PATCH 04/10] Add Portuguese language support to HelpDoc --- frontend/src/locale/src/HelpDoc/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index 6464c8a8..4b027dde 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -18,11 +18,8 @@ import * as zh from "./zh/index"; import * as tr from "./tr/index"; import * as hu from "./hu/index"; -<<<<<<< HEAD -const items: any = { en, de, es, ja, sk, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu }; -======= -const items: any = { en, de, pt, ja, sk, zh, pl, ru, it, vi, nl, bg, ko }; ->>>>>>> da4147cd (Add pt-PT lang) +const items: any = { en, de, pt, es, ja, sk, zh, pl, ru, it, vi, nl, bg, ko, ga, id, fr, tr, hu }; + const fallbackLang = "en"; From a73d54fedc42b5b7527877ee3a3e1135ff3f1e44 Mon Sep 17 00:00:00 2001 From: maghuro Date: Sat, 31 Jan 2026 12:06:50 +0000 Subject: [PATCH 05/10] Add Portuguese (European) language support --- frontend/src/locale/src/lang-list.json | 47 ++------------------------ 1 file changed, 3 insertions(+), 44 deletions(-) diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 92b61b4e..76f6617c 100644 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -12,6 +12,9 @@ "locale-de-DE": { "defaultMessage": "German" }, + "locale-pt-PT": { + "defaultMessage": "Português (Europeu)" + }, "locale-fr-FR": { "defaultMessage": "Français" }, @@ -54,48 +57,4 @@ "locale-hu-HU": { "defaultMessage": "Magyar" } -======= - "locale-en-US": { - "defaultMessage": "English" - }, - "locale-es-ES": { - "defaultMessage": "Español" - }, - "locale-de-DE": { - "defaultMessage": "German" - }, - "locale-pt-PT": { - "defaultMessage": "Português (Europeu)" - }, - "locale-ja-JP": { - "defaultMessage": "日本語" - }, - "locale-ru-RU": { - "defaultMessage": "Русский" - }, - "locale-sk-SK": { - "defaultMessage": "Slovenčina" - }, - "locale-zh-CN": { - "defaultMessage": "中文" - }, - "locale-pl-PL": { - "defaultMessage": "Polski" - }, - "locale-it-IT": { - "defaultMessage": "Italiano" - }, - "locale-vi-VN": { - "defaultMessage": "Tiếng Việt" - }, - "locale-nl-NL": { - "defaultMessage": "Nederlands" - }, - "locale-ko-KR": { - "defaultMessage": "한국어" - }, - "locale-bg-BG": { - "defaultMessage": "Български" - } ->>>>>>> da4147cd (Add pt-PT lang) } From 4ad1af5576adb4ff3565f197b4efb14ebb692171 Mon Sep 17 00:00:00 2001 From: maghuro Date: Sat, 31 Jan 2026 12:07:32 +0000 Subject: [PATCH 06/10] Remove duplicate locale entries and keep pt-PT --- frontend/check-locales.cjs | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index 1f4410ff..a73cd757 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -7,9 +7,9 @@ // - Also checks the error messages returned by the backend const allLocales = [ -<<<<<<< HEAD ["en", "en-US"], ["de", "de-DE"], + ["pt", "pt-PT"], ["es", "es-ES"], ["fr", "fr-FR"], ["it", "it-IT"], @@ -25,22 +25,6 @@ const allLocales = [ ["id", "id-ID"], ["tr", "tr-TR"], ["hu", "hu-HU"], -======= - ["en", "en-US"], - ["de", "de-DE"], - ["pt", "pt-PT"], - ["es", "es-ES"], - ["it", "it-IT"], - ["ja", "ja-JP"], - ["nl", "nl-NL"], - ["pl", "pl-PL"], - ["ru", "ru-RU"], - ["sk", "sk-SK"], - ["vi", "vi-VN"], - ["zh", "zh-CN"], - ["ko", "ko-KR"], - ["bg", "bg-BG"], ->>>>>>> da4147cd (Add pt-PT lang) ]; const ignoreUnused = [/^.*$/]; From 3db02370fd842c2a954fa85af2d12ca7710f8e99 Mon Sep 17 00:00:00 2001 From: maghuro Date: Sat, 31 Jan 2026 12:08:07 +0000 Subject: [PATCH 07/10] Add Portuguese language support to IntlProvider --- frontend/src/locale/IntlProvider.tsx | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 5aa9684d..507d938c 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -24,10 +24,10 @@ import langList from "./lang/lang-list.json"; // not the country code // Remember when adding to this list, also update check-locales.js script const localeOptions = [ -<<<<<<< HEAD ["en", "en-US", langEn], ["de", "de-DE", langDe], ["es", "es-ES", langEs], + ["pt", "pt-PT", langPt], ["fr", "fr-FR", langFr], ["ga", "ga-IE", langGa], ["ja", "ja-JP", langJa], @@ -43,22 +43,6 @@ const localeOptions = [ ["id", "id-ID", langId], ["tr", "tr-TR", langTr], ["hu", "hu-HU", langHu], -======= - ["en", "en-US", langEn], - ["de", "de-DE", langDe], - ["pt", "pt-PT", langPt], - ["es", "es-ES", langEs], - ["ja", "ja-JP", langJa], - ["it", "it-IT", langIt], - ["nl", "nl-NL", langNl], - ["pl", "pl-PL", langPl], - ["ru", "ru-RU", langRu], - ["sk", "sk-SK", langSk], - ["vi", "vi-VN", langVi], - ["zh", "zh-CN", langZh], - ["ko", "ko-KR", langKo], - ["bg", "bg-BG", langBg], ->>>>>>> da4147cd (Add pt-PT lang) ]; const loadMessages = (locale?: string): typeof langList & typeof langEn => { From c515815b0e857599aa45b44419c29441b7e4f8c1 Mon Sep 17 00:00:00 2001 From: maghuro Date: Sat, 31 Jan 2026 12:10:36 +0000 Subject: [PATCH 08/10] Remove merge conflict markers from lang-list.json --- frontend/src/locale/src/lang-list.json | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 76f6617c..a37dedf1 100644 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -1,5 +1,4 @@ { -<<<<<<< HEAD "locale-en-US": { "defaultMessage": "English" }, From de3b543d0896139c99875b9371311eb1c1ec7f68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:25:26 +0000 Subject: [PATCH 09/10] Bump @quobix/vacuum in /test in the prod-patch-updates group Bumps the prod-patch-updates group in /test with 1 update: [@quobix/vacuum](https://github.com/daveshanley/vacuum). Updates `@quobix/vacuum` from 0.23.4 to 0.23.5 - [Release notes](https://github.com/daveshanley/vacuum/releases) - [Commits](https://github.com/daveshanley/vacuum/compare/v0.23.4...v0.23.5) --- updated-dependencies: - dependency-name: "@quobix/vacuum" dependency-version: 0.23.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-patch-updates ... Signed-off-by: dependabot[bot] --- test/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/yarn.lock b/test/yarn.lock index 1e2a1f4e..c788d29e 100644 --- a/test/yarn.lock +++ b/test/yarn.lock @@ -217,9 +217,9 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@quobix/vacuum@^0.23.4": - version "0.23.4" - resolved "https://registry.yarnpkg.com/@quobix/vacuum/-/vacuum-0.23.4.tgz#9c44bc181a563cf37c0b6ba4682115a37094b7db" - integrity sha512-iFg1FauUuaeKYg4s+4cB8SQZzGChvlzE2SpYBbb9I8YicKLG2qtOc1IvHmqD0m9XQ127FUPgeRJXmOLTqp8DHg== + version "0.23.5" + resolved "https://registry.yarnpkg.com/@quobix/vacuum/-/vacuum-0.23.5.tgz#f8cbfb27cdec7437b516422752545439039c26c9" + integrity sha512-4/ybLW692DNkX/kXT/CRTkFF3bOqP5L+hRd7G49bUbXqAkU5E2WwB0z6xEYoVkB+BDDDYm35sw4pzARjJfXcUA== dependencies: https-proxy-agent "^7.0.6" node-fetch "^3.3.2" From 7cc2bfbf6ab41b5d70a5d77a4dccc167735dba77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:26:07 +0000 Subject: [PATCH 10/10] Bump react-intl from 7.1.14 to 8.1.2 in /frontend Bumps [react-intl](https://github.com/formatjs/formatjs) from 7.1.14 to 8.1.2. - [Release notes](https://github.com/formatjs/formatjs/releases) - [Commits](https://github.com/formatjs/formatjs/compare/react-intl@7.1.14...react-intl@8.1.2) --- updated-dependencies: - dependency-name: react-intl dependency-version: 8.1.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- frontend/package.json | 2 +- frontend/yarn.lock | 124 +++++++++++++++++++++--------------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 5ffc6dfb..820b7a66 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -32,7 +32,7 @@ "react": "^19.2.4", "react-bootstrap": "^2.10.10", "react-dom": "^19.2.4", - "react-intl": "^7.1.14", + "react-intl": "^8.1.2", "react-markdown": "^10.1.0", "react-router-dom": "^7.13.0", "react-select": "^5.10.2", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 995a500e..a59cffa3 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -467,57 +467,58 @@ resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.12.0.tgz#8bfb1a500faf53fb220b46bc5c559e0f7acf4a27" integrity sha512-mF3U8XxwEWR+ttlG5e4onYO+M5T22jnnQq7Ce/WK10CTVYR8Us433hbML6vgBLkiTS/MuCq61L0op3yNRSp2Kg== -"@formatjs/ecma402-abstract@2.3.6": - version "2.3.6" - resolved "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz" - integrity sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw== +"@formatjs/ecma402-abstract@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-3.1.1.tgz#329fa5eed8024ee389e9c82be8c798315631b11d" + integrity sha512-jhZbTwda+2tcNrs4kKvxrPLPjx8QsBCLCUgrrJ/S+G9YrGHWLhAyFMMBHJBnBoOwuLHd7L14FgYudviKaxkO2Q== dependencies: - "@formatjs/fast-memoize" "2.2.7" - "@formatjs/intl-localematcher" "0.6.2" - decimal.js "^10.4.3" - tslib "^2.8.0" + "@formatjs/fast-memoize" "3.1.0" + "@formatjs/intl-localematcher" "0.8.1" + decimal.js "^10.6.0" + tslib "^2.8.1" -"@formatjs/fast-memoize@2.2.7": - version "2.2.7" - resolved "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz" - integrity sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ== +"@formatjs/fast-memoize@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-3.1.0.tgz#f8643d44803df8f579506d40804f4faeba6f5da2" + integrity sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg== dependencies: - tslib "^2.8.0" + tslib "^2.8.1" -"@formatjs/icu-messageformat-parser@2.11.4": - version "2.11.4" - resolved "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz" - integrity sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw== +"@formatjs/icu-messageformat-parser@3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-3.5.1.tgz#a08faadbbb333d9e4fa7276c92a2b66a37788aa1" + integrity sha512-sSDmSvmmoVQ92XqWb499KrIhv/vLisJU8ITFrx7T7NZHUmMY7EL9xgRowAosaljhqnj/5iufG24QrdzB6X3ItA== dependencies: - "@formatjs/ecma402-abstract" "2.3.6" - "@formatjs/icu-skeleton-parser" "1.8.16" - tslib "^2.8.0" + "@formatjs/ecma402-abstract" "3.1.1" + "@formatjs/icu-skeleton-parser" "2.1.1" + tslib "^2.8.1" -"@formatjs/icu-skeleton-parser@1.8.16": - version "1.8.16" - resolved "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz" - integrity sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ== +"@formatjs/icu-skeleton-parser@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-2.1.1.tgz#a05b45733bd0f277c50f31b32e4a73375569d3c8" + integrity sha512-PSFABlcNefjI6yyk8f7nyX1DC7NHmq6WaCHZLySEXBrXuLOB2f935YsnzuPjlz+ibhb9yWTdPeVX1OVcj24w2Q== dependencies: - "@formatjs/ecma402-abstract" "2.3.6" - tslib "^2.8.0" + "@formatjs/ecma402-abstract" "3.1.1" + tslib "^2.8.1" -"@formatjs/intl-localematcher@0.6.2": - version "0.6.2" - resolved "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz" - integrity sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA== +"@formatjs/intl-localematcher@0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.8.1.tgz#554fe5f8c746ba52d430674de9a242fae64f67ff" + integrity sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA== dependencies: - tslib "^2.8.0" + "@formatjs/fast-memoize" "3.1.0" + tslib "^2.8.1" -"@formatjs/intl@3.1.8": - version "3.1.8" - resolved "https://registry.npmjs.org/@formatjs/intl/-/intl-3.1.8.tgz" - integrity sha512-LWXgwI5zTMatvR8w8kCNh/priDTOF/ZssokMBHJ7ZWXFoYLVOYo0EJERD9Eajv+xsfQO1QkuAt77KWQ1OI4mOQ== +"@formatjs/intl@4.1.2": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-4.1.2.tgz#4a0d487e6290067462f93d034ef36a8aaf6f671b" + integrity sha512-V60fNY/X/7zqmRffr7qPwscGmVGYDmlKF069mSQ2a/7fE22q602NtIfOQY8vzRA63Gr/O/U6vjRVBHMabrnA9A== dependencies: - "@formatjs/ecma402-abstract" "2.3.6" - "@formatjs/fast-memoize" "2.2.7" - "@formatjs/icu-messageformat-parser" "2.11.4" - intl-messageformat "10.7.18" - tslib "^2.8.0" + "@formatjs/ecma402-abstract" "3.1.1" + "@formatjs/fast-memoize" "3.1.0" + "@formatjs/icu-messageformat-parser" "3.5.1" + intl-messageformat "11.1.2" + tslib "^2.8.1" "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" @@ -1045,7 +1046,7 @@ resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz" integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== -"@types/react@*", "@types/react@16 || 17 || 18 || 19", "@types/react@>=16.9.11", "@types/react@^19.2.10": +"@types/react@*", "@types/react@>=16.9.11", "@types/react@^19.2.10": version "19.2.10" resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== @@ -1344,9 +1345,9 @@ debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "^2.1.3" -decimal.js@^10.4.3: +decimal.js@^10.6.0: version "10.6.0" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== decode-named-character-reference@^1.0.0: @@ -1749,15 +1750,15 @@ inline-style-parser@0.2.4: resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz" integrity sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q== -intl-messageformat@10.7.18: - version "10.7.18" - resolved "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz" - integrity sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g== +intl-messageformat@11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-11.1.2.tgz#c72879165d15633f38b092479822c5d831c21ac5" + integrity sha512-ucSrQmZGAxfiBHfBRXW/k7UC8MaGFlEj4Ry1tKiDcmgwQm1y3EDl40u+4VNHYomxJQMJi9NEI3riDRlth96jKg== dependencies: - "@formatjs/ecma402-abstract" "2.3.6" - "@formatjs/fast-memoize" "2.2.7" - "@formatjs/icu-messageformat-parser" "2.11.4" - tslib "^2.8.0" + "@formatjs/ecma402-abstract" "3.1.1" + "@formatjs/fast-memoize" "3.1.0" + "@formatjs/icu-messageformat-parser" "3.5.1" + tslib "^2.8.1" invariant@^2.2.4: version "2.2.4" @@ -2435,19 +2436,18 @@ react-fast-compare@^2.0.1: resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz" integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== -react-intl@^7.1.14: - version "7.1.14" - resolved "https://registry.npmjs.org/react-intl/-/react-intl-7.1.14.tgz" - integrity sha512-VE/0Wi/lHJlBC7APQpCzLUdIt3GB5B0GZrRW8Q+ACbkHI4j+Wwgg9J1TniN6zmLHmPH5gxXcMy+fkSPfw5p1WQ== +react-intl@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-8.1.2.tgz#e8a6dde84d9682bef5fa775077beb9b5b8ff9547" + integrity sha512-mwjljlxC1dpU7G6cznkxMWtYuKZruSNSVHZjiIWfYW6aNsHNDvDWDK54rM8yoF86asNLpk4Y3HxcWhX1AslTGg== dependencies: - "@formatjs/ecma402-abstract" "2.3.6" - "@formatjs/icu-messageformat-parser" "2.11.4" - "@formatjs/intl" "3.1.8" + "@formatjs/ecma402-abstract" "3.1.1" + "@formatjs/icu-messageformat-parser" "3.5.1" + "@formatjs/intl" "4.1.2" "@types/hoist-non-react-statics" "^3.3.1" - "@types/react" "16 || 17 || 18 || 19" hoist-non-react-statics "^3.3.2" - intl-messageformat "10.7.18" - tslib "^2.8.0" + intl-messageformat "11.1.2" + tslib "^2.8.1" react-is@^16.13.1, react-is@^16.3.2, react-is@^16.7.0: version "16.13.1" @@ -2841,7 +2841,7 @@ tsconfck@^3.0.3: resolved "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz" integrity sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w== -tslib@^2.0.0, tslib@^2.8.0: +tslib@^2.0.0, tslib@^2.8.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==