merge conflict resolve

This commit is contained in:
Aashish-Upadhyay-101
2023-02-28 09:52:49 +05:45
81 changed files with 4301 additions and 6601 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = {
debug: false,
i18n: {
defaultLocale: "en",
locales: ["en", "ko", "fr", "pt-BR"],
locales: ["en", "ko", "fr", "pt-BR", "pt-PT"],
},
fallbackLng: {
default: ["en"],
+60 -45
View File
@@ -13,7 +13,7 @@
"@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.2",
"@fortawesome/react-fontawesome": "^0.1.19",
"@headlessui/react": "^1.6.6",
"@headlessui/react": "^1.7.7",
"@hookform/resolvers": "^2.9.10",
"@octokit/rest": "^19.0.7",
"@radix-ui/react-accordion": "^1.1.0",
@@ -30,14 +30,14 @@
"@radix-ui/react-tabs": "^1.0.2",
"@radix-ui/react-toast": "^1.1.2",
"@reduxjs/toolkit": "^1.8.3",
"@stripe/react-stripe-js": "^1.10.0",
"@stripe/react-stripe-js": "^1.16.3",
"@stripe/stripe-js": "^1.46.0",
"@tanstack/react-query": "^4.23.0",
"@types/argon2-browser": "^1.18.1",
"add": "^2.0.6",
"argon2-browser": "^1.18.0",
"axios": "^0.27.2",
"axios-auth-refresh": "^3.3.3",
"axios-auth-refresh": "^3.3.6",
"base64-loader": "^1.0.0",
"classnames": "^2.3.1",
"cookies": "^0.8.0",
@@ -45,13 +45,13 @@
"fs": "^0.0.1-security",
"gray-matter": "^4.0.3",
"http-proxy": "^1.18.1",
"i18next": "^22.4.6",
"i18next": "^22.4.9",
"jspdf": "^2.5.1",
"jsrp": "^0.2.4",
"markdown-it": "^13.0.1",
"next": "^12.3.4",
"next-i18next": "^13.0.2",
"posthog-js": "^1.34.0",
"posthog-js": "^1.39.4",
"query-string": "^7.1.3",
"react": "^17.0.2",
"react-beautiful-dnd": "^13.1.1",
@@ -2544,9 +2544,12 @@
}
},
"node_modules/@headlessui/react": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.6.6.tgz",
"integrity": "sha512-MFJtmj9Xh/hhBMhLccGbBoSk+sk61BlP6sJe4uQcVMtXZhCgGqd2GyIQzzmsdPdTEWGSF434CBi8mnhR6um46Q==",
"version": "1.7.7",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.7.tgz",
"integrity": "sha512-BqDOd/tB9u2tA0T3Z0fn18ktw+KbVwMnkxxsGPIH2hzssrQhKB5n/6StZOyvLYP/FsYtvuXfi9I0YowKPv2c1w==",
"dependencies": {
"client-only": "^0.0.1"
},
"engines": {
"node": ">=10"
},
@@ -3935,9 +3938,9 @@
"dev": true
},
"node_modules/@sentry/types": {
"version": "7.15.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.15.0.tgz",
"integrity": "sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ==",
"version": "7.22.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.22.0.tgz",
"integrity": "sha512-LhCL+wb1Jch+OesB2CIt6xpfO1Ab6CRvoNYRRzVumWPLns1T3ZJkarYfhbLaOEIb38EIbPgREdxn2AJT560U4Q==",
"engines": {
"node": ">=8"
}
@@ -6281,14 +6284,14 @@
}
},
"node_modules/@stripe/react-stripe-js": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.10.0.tgz",
"integrity": "sha512-vuIjJUZJ3nyiaGa5z5iyMCzZfGGsgzOOjWjqknbbhkNsewyyginfeky9EZLSz9+iSAsgC9K6MeNOTLKVGcMycQ==",
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.16.3.tgz",
"integrity": "sha512-gS6UDGEuM92K50pFB3o//EqqPxmaqpC8IrsBda4P4LxeULoO0pBFSHXJ5Ab6uA7G2lyO2bluvSLereh0OH9GrQ==",
"dependencies": {
"prop-types": "^15.7.2"
},
"peerDependencies": {
"@stripe/stripe-js": "^1.34.0",
"@stripe/stripe-js": "^1.44.1",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
@@ -8157,9 +8160,9 @@
}
},
"node_modules/axios-auth-refresh": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/axios-auth-refresh/-/axios-auth-refresh-3.3.3.tgz",
"integrity": "sha512-2IbDhJ/h6ddNBBnnzn1VFK/qx17pE9aVqiafB8rx5LVHsJ1HtFpUGkbXY7PzTG+8P9HJWcyA3fNZl9BikSuilg==",
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/axios-auth-refresh/-/axios-auth-refresh-3.3.6.tgz",
"integrity": "sha512-2CeBUce/SxIfFxow5/n8vApJ97yYF6qoV4gh1UrswT7aEOnlOdBLxxyhOI4IaxGs6BY0l8YujU2jlc4aCmK17Q==",
"peerDependencies": {
"axios": ">= 0.18 < 0.19.0 || >= 0.19.1"
}
@@ -9205,6 +9208,11 @@
"@colors/colors": "1.5.0"
}
},
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"node_modules/cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -13224,9 +13232,9 @@
}
},
"node_modules/i18next": {
"version": "22.4.6",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.6.tgz",
"integrity": "sha512-9Tm1ezxWyzV+306CIDMBbYBitC1jedQyYuuLtIv7oxjp2ohh8eyxP9xytIf+2bbQfhH784IQKPSYp+Zq9+YSbw==",
"version": "22.4.9",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.9.tgz",
"integrity": "sha512-8gWMmUz460KJDQp/ob3MNUX84cVuDRY9PLFPnV8d+Qezz/6dkjxwOaH70xjrCNDO+JrUL25iXfAIN9wUkInNZw==",
"funding": [
{
"type": "individual",
@@ -17079,11 +17087,11 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/posthog-js": {
"version": "1.34.0",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.34.0.tgz",
"integrity": "sha512-HkRwwzdz31N5ykQIO3SIkSS8nwhdqqnuDZ/qltitX4FhxrV9/tSRavEXz0YLvioOXeNVmQWtsN3krKajErwkwg==",
"version": "1.39.4",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.39.4.tgz",
"integrity": "sha512-Elpf1gwyuObueXi89iH+9pP+WhpkiivP8Qwej4RzOLwSTa7Floaa4rgAw7rnCnX1PtRoJ3F0kqb6q9T+aZjRiA==",
"dependencies": {
"@sentry/types": "^7.2.0",
"@sentry/types": "7.22.0",
"fflate": "^0.4.1",
"rrweb-snapshot": "^1.1.14"
}
@@ -23946,10 +23954,12 @@
}
},
"@headlessui/react": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.6.6.tgz",
"integrity": "sha512-MFJtmj9Xh/hhBMhLccGbBoSk+sk61BlP6sJe4uQcVMtXZhCgGqd2GyIQzzmsdPdTEWGSF434CBi8mnhR6um46Q==",
"requires": {}
"version": "1.7.7",
"resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.7.tgz",
"integrity": "sha512-BqDOd/tB9u2tA0T3Z0fn18ktw+KbVwMnkxxsGPIH2hzssrQhKB5n/6StZOyvLYP/FsYtvuXfi9I0YowKPv2c1w==",
"requires": {
"client-only": "^0.0.1"
}
},
"@hookform/resolvers": {
"version": "2.9.10",
@@ -24987,9 +24997,9 @@
"dev": true
},
"@sentry/types": {
"version": "7.15.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.15.0.tgz",
"integrity": "sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ=="
"version": "7.22.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.22.0.tgz",
"integrity": "sha512-LhCL+wb1Jch+OesB2CIt6xpfO1Ab6CRvoNYRRzVumWPLns1T3ZJkarYfhbLaOEIb38EIbPgREdxn2AJT560U4Q=="
},
"@sinclair/typebox": {
"version": "0.24.51",
@@ -26659,9 +26669,9 @@
}
},
"@stripe/react-stripe-js": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.10.0.tgz",
"integrity": "sha512-vuIjJUZJ3nyiaGa5z5iyMCzZfGGsgzOOjWjqknbbhkNsewyyginfeky9EZLSz9+iSAsgC9K6MeNOTLKVGcMycQ==",
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.16.3.tgz",
"integrity": "sha512-gS6UDGEuM92K50pFB3o//EqqPxmaqpC8IrsBda4P4LxeULoO0pBFSHXJ5Ab6uA7G2lyO2bluvSLereh0OH9GrQ==",
"requires": {
"prop-types": "^15.7.2"
}
@@ -28115,9 +28125,9 @@
}
},
"axios-auth-refresh": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/axios-auth-refresh/-/axios-auth-refresh-3.3.3.tgz",
"integrity": "sha512-2IbDhJ/h6ddNBBnnzn1VFK/qx17pE9aVqiafB8rx5LVHsJ1HtFpUGkbXY7PzTG+8P9HJWcyA3fNZl9BikSuilg==",
"version": "3.3.6",
"resolved": "https://registry.npmjs.org/axios-auth-refresh/-/axios-auth-refresh-3.3.6.tgz",
"integrity": "sha512-2CeBUce/SxIfFxow5/n8vApJ97yYF6qoV4gh1UrswT7aEOnlOdBLxxyhOI4IaxGs6BY0l8YujU2jlc4aCmK17Q==",
"requires": {}
},
"axobject-query": {
@@ -28888,6 +28898,11 @@
"string-width": "^4.2.0"
}
},
"client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -31990,9 +32005,9 @@
"dev": true
},
"i18next": {
"version": "22.4.6",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.6.tgz",
"integrity": "sha512-9Tm1ezxWyzV+306CIDMBbYBitC1jedQyYuuLtIv7oxjp2ohh8eyxP9xytIf+2bbQfhH784IQKPSYp+Zq9+YSbw==",
"version": "22.4.9",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.9.tgz",
"integrity": "sha512-8gWMmUz460KJDQp/ob3MNUX84cVuDRY9PLFPnV8d+Qezz/6dkjxwOaH70xjrCNDO+JrUL25iXfAIN9wUkInNZw==",
"requires": {
"@babel/runtime": "^7.20.6"
}
@@ -34690,11 +34705,11 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"posthog-js": {
"version": "1.34.0",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.34.0.tgz",
"integrity": "sha512-HkRwwzdz31N5ykQIO3SIkSS8nwhdqqnuDZ/qltitX4FhxrV9/tSRavEXz0YLvioOXeNVmQWtsN3krKajErwkwg==",
"version": "1.39.4",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.39.4.tgz",
"integrity": "sha512-Elpf1gwyuObueXi89iH+9pP+WhpkiivP8Qwej4RzOLwSTa7Floaa4rgAw7rnCnX1PtRoJ3F0kqb6q9T+aZjRiA==",
"requires": {
"@sentry/types": "^7.2.0",
"@sentry/types": "7.22.0",
"fflate": "^0.4.1",
"rrweb-snapshot": "^1.1.14"
}
+5 -5
View File
@@ -20,7 +20,7 @@
"@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.2",
"@fortawesome/react-fontawesome": "^0.1.19",
"@headlessui/react": "^1.6.6",
"@headlessui/react": "^1.7.7",
"@hookform/resolvers": "^2.9.10",
"@octokit/rest": "^19.0.7",
"@radix-ui/react-accordion": "^1.1.0",
@@ -37,14 +37,14 @@
"@radix-ui/react-tabs": "^1.0.2",
"@radix-ui/react-toast": "^1.1.2",
"@reduxjs/toolkit": "^1.8.3",
"@stripe/react-stripe-js": "^1.10.0",
"@stripe/react-stripe-js": "^1.16.3",
"@stripe/stripe-js": "^1.46.0",
"@types/argon2-browser": "^1.18.1",
"@tanstack/react-query": "^4.23.0",
"add": "^2.0.6",
"argon2-browser": "^1.18.0",
"axios": "^0.27.2",
"axios-auth-refresh": "^3.3.3",
"axios-auth-refresh": "^3.3.6",
"base64-loader": "^1.0.0",
"classnames": "^2.3.1",
"cookies": "^0.8.0",
@@ -52,13 +52,13 @@
"fs": "^0.0.1-security",
"gray-matter": "^4.0.3",
"http-proxy": "^1.18.1",
"i18next": "^22.4.6",
"i18next": "^22.4.9",
"jspdf": "^2.5.1",
"jsrp": "^0.2.4",
"markdown-it": "^13.0.1",
"next": "^12.3.4",
"next-i18next": "^13.0.2",
"posthog-js": "^1.34.0",
"posthog-js": "^1.39.4",
"query-string": "^7.1.3",
"react": "^17.0.2",
"react-beautiful-dnd": "^13.1.1",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"title": "Activity Logs",
"title": "Audit Logs",
"subtitle": "Event history for this Infisical project.",
"event": {
"readSecrets": "Secrets Viewed",
+2 -2
View File
@@ -13,8 +13,8 @@
"project-id": "Project ID",
"save-changes": "Save Changes",
"saved": "Saved",
"drop-zone": "Drag and drop a .env or .yml file here.",
"drop-zone-keys": "Drag and drop a .env or .yml file here to add more secrets.",
"drop-zone": "Drag and drop a .env, .json, or .yml file here.",
"drop-zone-keys": "Drag and drop a .env, .json, or .yml file here to add more secrets.",
"role": "Role",
"role_admin": "admin",
"display-name": "Display Name",
@@ -0,0 +1,11 @@
{
"title": "Registo de Atividade",
"subtitle": "Histórico de eventos para este projeto Infisical.",
"event": {
"readSecrets": "Segredos Vistos",
"updateSecrets": "Segredos Atualizados",
"addSecrets": "Segredos Adicionados",
"deleteSecrets": "Segredos Apagados"
},
"ip-address": "Endereço IP"
}
@@ -0,0 +1,28 @@
{
"title": "Utilização & Faturação",
"description": "Vê e faz a gestão da subscrição da tua organização aqui",
"subscription": "Subscrição",
"starter": {
"name": "Base",
"price-explanation": "Até 5 membros de equipa",
"text": "Faz a gestão a qualquer projeto com 5 membros gratuitamente!",
"subtext": "$5 por membro adicional / mês."
},
"professional": {
"name": "Profissional",
"price-explanation": "/membro/mês",
"subtext": "Inclui projetos e membros ilimitados.",
"text": "Acompanha a gestão de chaves à medida que cresces."
},
"enterprise": {
"name": "Empresarial",
"text": "Acompanha a gestão de chaves à medida que cresces."
},
"current-usage": "Utilização atual",
"free": "Grátis",
"downgrade": "Reduzir",
"upgrade": "Melhorar",
"learn-more": "Saber mais",
"custom-pricing": "Preço personalizado",
"schedule-demo": "Marca uma demonstração"
}
+34
View File
@@ -0,0 +1,34 @@
{
"head-title": "{{title}} | Infisical",
"error_project-already-exists": "Já existe um projeto com este nome.",
"no-mobile": "Para usar o Infisical, inicia a sessão através dum dispositivo com resolução maior.",
"email": "E-mail",
"password": "Palavra-passe",
"first-name": "Nome",
"last-name": "Apelido",
"logout": "Terminar sessão",
"validate-required": "Por favor, insire o teu {{name}}",
"maintenance-alert": "Estamos com pequenas dificuldades técnicas. Estamos a solucioná-las agora. Por favor, volte dentro de alguns minutos.",
"click-to-copy": "Clica para copiar",
"project-id": "ID do Projeto",
"save-changes": "Guardar alterações",
"saved": "Guardado",
"drop-zone": "Arrasta e solta um ficheiro .env ou .yml aqui.",
"drop-zone-keys": "Arrasta e solta um ficheiro .env ou .yml aqui para adicionar mais segredos.",
"role": "Função",
"role_admin": "Administrador",
"display-name": "Nome de exibição",
"environment": "Ambiente",
"expired-in": "Expira em",
"language": "Idioma",
"search": "Pequisar...",
"note": "Note",
"view-more": "Ver mais",
"end-of-history": "Fim do histórico",
"select-event": "Escolhe um evento",
"event": "Evento",
"user": "Utilizador",
"source": "Fonte",
"time": "Data/Hora",
"timestamp": "Timestamp"
}
@@ -0,0 +1,36 @@
{
"title": "Segredos",
"og-title": "Faz a gestão os teus ficheiros .env em segundos",
"og-description": "Infisical é uma plataforma simples e criptografada de ponta a ponta que permite que as equipas sincronizem e façam a gestão dos seus ficheiros .env.",
"search-keys": "Pesquisar chaves...",
"add-key": "Adicionar chave",
"personal": "Pessoal",
"personal-description": "As chaves pessoais são visíveis apenas para si",
"shared": "Partilhado",
"shared-description": "As chaves partilhadas são visíveis para toda tua equipa",
"make-shared": "Partilhar",
"make-personal": "Tornar pessoal",
"add-secret": "Adicionar um novo segredo",
"check-docs": {
"button": "Verificar documentação",
"title": "Bom trabalho!",
"line1": "Parabéns por adicionar mais segredos.",
"line2": "Veja como conectá-los à tua codebase."
},
"sidebar": {
"secret": "Segredo",
"key": "Chave",
"value": "Valor",
"override": "Substitui o valor por um valor pessoal",
"version-history": "Histórico da versões",
"comments": "Comentários e Notas",
"personal-explanation": "Este segredo é pessoal. Não é partilhado com nenhum dos seus colegas de equipa.",
"generate-random-hex": "Criar código HEX aleatório",
"digits": "digitos",
"delete-key-dialog": {
"title": "Apagar chave",
"confirm-delete-message": "Tens a certeza que queres apagar esta chave? Esta ação não pode ser desfeita."
}
}
}
@@ -0,0 +1,16 @@
{
"title": "Integrações do Projeto",
"description": "Faz a gestão das tuas integrações do Infisical com serviços de terceiros.",
"no-integrations1": "Ainda não tens nenhuma integração definida. Quando o fizer, aparecerá aqui.",
"no-integrations2": "Para começar, clica em qualquer uma das opções abaixo. São necessários 5 cliques para configurar.",
"available": "Integrações de Plataforma & Cloud",
"available-text1": "Clica na integração que pretende ligar. Isto irá permitir que as tuas variáveis de ambiente fluam automaticamente para os serviços de terceiros selecionados.",
"available-text2": "Nota: durante uma integração com o Heroku, por razões de segurança, não é possível manter a criptografia de ponta a ponta. Teoricamente, isto permite que o Infisical decifre as suas variáveis de ambiente. Na prática, podemos assegurar-lhe que isto nunca será feito, e permite-nos proteger os teus segredos de atores mal-intencionados online. O serviço Infisical mantém-se sempre criptografado de ponta a ponta. Para qualquer dúvida, contacte [email protected].",
"cloud-integrations": "Integrações de Cloud",
"framework-integrations": "Integrações de Framework",
"click-to-start": "Clica numa integração para começar a sincronizar segredos.",
"click-to-setup": "Clique num framework para obter as instruções de configuração.",
"grant-access-to-secrets": "Conceda acesso ao Infisical aos teus segredos",
"why-infisical-needs-access": "A maioria das integrações de cloud requerem que o Infisical possa decifrar os teus segredos para que possam ser encaminhados.",
"grant-access-button": "Conceder acesso"
}
+10
View File
@@ -0,0 +1,10 @@
{
"title": "Iniciar sessão",
"og-title": "Iniciar sessão na Infisical",
"og-description": "Infisical é uma plataforma simples e criptografada que permite às equipas sincronizar e fazer a gestão dos seus ficheiros .env.",
"login": "Iniciar sessão",
"need-account": "Precisa de uma conta Infisical?",
"create-account": "Regista-te",
"forgot-password": "Esqueceste da tua palavra-passe?",
"error-login": "Credenciais erradas."
}
+28
View File
@@ -0,0 +1,28 @@
{
"title": "Registar",
"og-title": "Substitui os ficheiros .env com 1 linha de código. Regista-te na Infisical em 3 minutos.",
"og-description": "Infisical é uma plataforma simples e encriptada de ponta a ponta que permite às equipas sincronizar e gerir chaves API e variáveis de ambiente. Funciona com Node.js, Next.js, Gatsby, Nest.js...",
"signup": "Registar",
"already-have-account": "Já tens uma conta? Inicia a sessão",
"forgot-password": "Esqueceste da palavra-passe?",
"verify": "Verificar",
"step1-start": "Vamos começar",
"step1-privacy": "Ao criares uma conta, concorda com os nossos Termos e leu a Política de Privacidade.",
"step1-submit": "Começar",
"step2-message": "Enviámos um código de verificação para",
"step2-code-error": "Epá! O seu código está errado. Tentativas restantes:",
"step2-resend-alert": "Não vês o código?",
"step2-resend-submit": "Reenviar",
"step2-resend-progress": "A reenviar...",
"step2-spam-alert": "Não te esqueças de verificar a tua caixa de spam.",
"step3-message": "Tá quase!",
"step4-message": "Guarda o teu Kit de Emergência",
"step4-description1": "Se perderes o acesso a tua conta, o teu Kit de Emergência é a única forma de iniciares a sessão.",
"step4-description2": "Recomendamos que o descarregues e guardes num local seguro.",
"step4-description3": "Contém a sua Chave Secreta que não podemos aceder nem recuperar para si se a perder.",
"step4-download": "Descarregar PDF",
"step5-send-invites": "Enviar Convites",
"step5-invite-team": "Convida a tua equipa",
"step5-subtitle": "A Infisical é pensada para ser usada com a tua equipa. Convida-os para testar.",
"step5-skip": "Saltar"
}
+22
View File
@@ -0,0 +1,22 @@
{
"support": {
"slack": "Partipa do Slack",
"docs": "Leia a documentação",
"issue": "Abra um issue no Github",
"email": "Envia-nos um email"
},
"user": {
"signed-in-as": "SESSÃO INICIADA COMO",
"current-organization": "ORGANIZAÇÃO ATUAL",
"usage-billing": "Utilização e Faturação",
"invite": "Convida Membros",
"other-organizations": "OUTRA ORGANIZAÇÃO"
},
"menu": {
"project": "PROJETO",
"secrets": "Segredos",
"members": "Membros",
"integrations": "Integrações",
"project-settings": "Definições do Projeto"
}
}
@@ -0,0 +1,11 @@
{
"incident-contacts": "Contactos de Emergência",
"incident-contacts-description": "Estes contactos serão notificados no caso improvável de um incidente grave.",
"no-incident-contacts": "Nenhum contacto de emergência encontrado.",
"add-contact": "Adicionar Contacto",
"add-dialog": {
"title": "Adicionar um Contacto de Emergência",
"description": "Este contacto será notificado no caso improvável de um incidente grave.",
"add-incident": "Adicionar Contacto de Emergência"
}
}
@@ -0,0 +1,14 @@
{
"add-member": "Adicionar Membro",
"org-members": "Membros da Organização",
"org-members-description": "Faz a gestão dos membros da tua organização. Estes utilizadores poderão depois ser organizados em projetos.",
"search-members": "Procurar membros...",
"add-dialog": {
"add-member-to-project": "Adicionar um membro ao teu projeto",
"already-all-invited": "Todos os utilizadores da tua organização já foram convidados.",
"add-user-org-first": "Adicione mais utilizadores à organização primeiro.",
"user-will-email": "O utilizador receberá um e-mail com as instruções.",
"looking-add": "<0>Se estás à procura de adicionar utilizadores à tua organização,</0><1>clica aqui</1>",
"add-user-to-org": "Adicionar Utilizadores à Organização"
}
}
@@ -0,0 +1,11 @@
{
"password": "Palavra-passe",
"change": "Alterar palavra-passe",
"current": "Palavra-passe atual",
"current-wrong": "A palavra-passe atual pode estar errada",
"new": "Nova palavra-passe",
"validate-base": "A palavra-passe deve ter ao menos:",
"validate-length": "14 caracteres",
"validate-case": "1 letra minúscula",
"validate-number": "1 número"
}
@@ -0,0 +1,13 @@
{
"service-tokens": "Tokens de Serviço",
"service-tokens-description": "Cada token de serviço é específico para si, um determinado projeto e um determinado ambiente dentro deste projeto.",
"add-new": "Adicionar Novo Token",
"add-dialog" : {
"title": "Adicionar um token de serviço para {{target}}",
"description": "Quando um token é criado, só poderá vê-lo uma vez antes dele desaparecer. Certifique-se de o guardar num local seguro.",
"name": "Nome do Token de Serviço",
"add": "Adicionar Token de Serviço",
"copy-service-token": "Copia o seu token de serviço",
"copy-service-token-description": "Uma vez que fechar esta janela, nunca mais irás ver o teu token de serviço"
}
}
@@ -0,0 +1,4 @@
{
"title": "Membros do Projeto",
"description": "Esta página mostra os membros do projeto selecionado e permite-lhe modificar as suas permissões."
}
@@ -0,0 +1,4 @@
{
"title": "Definições da Organização",
"description": "Faz a gestão dos membros da sua organização. Estes utilizadores depois poderão ser organizados em projetos."
}
@@ -0,0 +1,16 @@
{
"title": "Definições Pessoais",
"description": "Vê e faz a gestão das tuas informações pessoais aqui.",
"emergency": {
"name": "Kit de Emergência",
"text1": "O seu Kit de Emergência contém as informações que necessita para aceder à sua conta Infisical.",
"text2": "Apenas o último Kit de Emergência emitido é válido. Para obter um novo Kit de Emergência, verifique a sua palavra-passe.",
"download": "Descarregar Kit de Emergência"
},
"change-language": "Alterar Idioma",
"api-keys": {
"title": "Chaves API",
"description": "Faz a gestão das suas chaves API pessoais para aceder à API Infisical.",
"add-new": "Adicionar nova"
}
}
@@ -0,0 +1,15 @@
{
"title": "Definições do Projeto",
"description": "Estas definições só se aplicam ao Projeto selecionado.",
"danger-zone": "Zona de Perigo",
"delete-project": "Apagar Projeto",
"project-to-delete": "Projeto a Apagar",
"danger-zone-note": "Assim que apares este projeto, não poderás desfazer a ação. Isto irá apagar imediatamente todas as chaves. Se ainda quiseres fazer isso, insere o nome do projeto abaixo.",
"delete-project-note": "Nota: Só podes eliminar algum projeto caso tenhas mais do que um",
"project-id-description": "Para integrar o Infisical no seu código e obter a injeção automática de variáveis de ambiente, deve usar o seguinte ID de Projeto.",
"project-id-description2": "Para obter mais orientações, incluindo trechos de código para várias linguagens e frameworks, consulte ",
"auto-generated": "Este é o identificador único - criado automaticamente - do teu projeto. Não pode ser alterado.",
"docs": "Documentação do Infisical",
"auto-capitalization": "Converter em maísculas automaticamente",
"auto-capitalization-description": "Por defeito, o Infisical irá converter o texto das tuas chaves em maísculas automaticamente. Se quiser desativar este recurso, pode fazê-lo aqui."
}
+28
View File
@@ -0,0 +1,28 @@
{
"title": "Registar",
"og-title": "Substitua os ficheiros .env com 1 linha de código. Regista-te na Infisical em 3 minutos.",
"og-description": "Infisical é uma plataforma simples e end-to-end encriptada que permite às equipas sincronizar e gerir chaves API e variáveis de ambiente. Funciona com Node.js, Next.js, Gatsby, Nest.js...",
"signup": "Registar",
"already-have-account": "Já tens uma conta? Inicia a sessão",
"forgot-password": "Esqueceste da palavra-passe?",
"verify": "Verificar",
"step1-start": "Vamos começar",
"step1-privacy": "Ao criares uma conta, concorda com os nossos Termos e leu a Política de Privacidade.",
"step1-submit": "Começar",
"step2-message": "Enviámos um código de verificação para",
"step2-code-error": "Epá! O seu código está errado. Por favor, tenta novamente.",
"step2-resend-alert": "Não vês o código?",
"step2-resend-submit": "Reenviar",
"step2-resend-progress": "A reenviar...",
"step2-spam-alert": "Não te esqueças de verificar a sua caixa de spam.",
"step3-message": "Tá quase!",
"step4-message": "Guarda o teu Kit de Emergência",
"step4-description1": "Se perderes o acesso a tua conta, o teu Kit de Emergência é a única forma de iniciares a sessão.",
"step4-description2": "Recomendamos que o descarregues e guardes num local seguro.",
"step4-description3": "Contém a sua Chave Secreta que não podemos aceder nem recuperar para si se a perder.",
"step4-download": "Descarregar PDF",
"step5-send-invites": "Enviar Convites",
"step5-invite-team": "Convida a tua equipa",
"step5-subtitle": "A Infisical é pensada para ser usada com a tua equipa. Convida-os para testar",
"step5-skip": "Saltar"
}
+1 -1
View File
@@ -162,7 +162,7 @@ const Layout = ({ children }: LayoutProps) => {
},
{
href: `/activity/${workspaceMapping[workspaceSelected as any]}`,
title: 'Activity Logs',
title: 'Audit Logs',
emoji: <FontAwesomeIcon icon={faFileLines} />
},
{
@@ -71,6 +71,19 @@ const DropZone = ({
}));
break;
}
case 'json': {
const keyPairs = JSON.parse(String(file));
secrets = Object.keys(keyPairs).map((key, index) => ({
id: guidGenerator(),
pos: numCurrentRows + index,
key,
value: keyPairs[key as keyof typeof keyPairs],
comment: '',
type: 'shared',
tags: []
}));
break;
}
case 'yml': {
const parsedFile = parseDocument(file.toString());
const keyPairs = parsedFile.contents!.toJSON();
@@ -11,7 +11,7 @@ type Props = {
};
export const EmptyState = ({ title, className, children, icon = faCubesStacked }: Props) => (
<div className={twMerge('flex w-full flex-col items-center px-2 pt-6 text-bunker-300', className)}>
<div className={twMerge('flex w-full bg-bunker-700 flex-col items-center px-2 pt-6 text-bunker-300', className)}>
<FontAwesomeIcon icon={icon} size="2x" className='mr-4' />
<div className='flex flex-row items-center py-4'>
<div className="text-bunker-300 text-sm">{title}</div>
+1 -1
View File
@@ -14,7 +14,7 @@ const tagVariants = cva('inline-flex whitespace-nowrap text-sm rounded-sm mr-1.5
red: 'bg-red/80 text-bunker-100'
},
size: {
sm: 'px-1 py-0.5'
sm: 'px-1.5 py-0.5'
}
}
});
+1 -1
View File
@@ -308,7 +308,7 @@ export const AppLayout = ({ children }: LayoutProps) => {
isSelected={router.asPath === `/activity/${currentWorkspace?._id}`}
icon={<FontAwesomeIcon icon={faFileLines} size="lg" />}
>
Activity Logs
Audit Logs
</MenuItem>
</a>
</Link>
+7 -1
View File
@@ -1,4 +1,5 @@
import React, { useEffect, useState } from 'react';
import Head from 'next/head';
import { useRouter } from 'next/router';
import { useTranslation } from 'next-i18next';
@@ -125,7 +126,12 @@ export default function Activity() {
return (
<div className="mx-6 lg:mx-0 w-full h-screen">
<NavHeader pageName="Project Activity" isProjectRelated />
<Head>
<title>Audit Logs</title>
<link rel="icon" href="/infisical.ico" />
<meta property="og:image" content="/images/message.png" />
</Head>
<NavHeader pageName="Audit Logs" isProjectRelated />
{currentSidebarAction && (
<ActivitySideBar toggleSidebar={toggleSidebar} currentAction={currentSidebarAction} />
)}
@@ -47,9 +47,9 @@ export default function TravisCICreateIntegrationPage() {
return (
<div className="h-full w-full flex justify-center items-center">
<Card className="max-w-md p-8 rounded-md">
<CardTitle className='text-center'>TravisCI Integration</CardTitle>
<CardTitle className='text-center'>Travis CI Integration</CardTitle>
<FormControl
label="Travis API Token"
label="Travis CI API Token"
errorText={apiKeyErrorText}
isError={apiKeyErrorText !== '' ?? false}
>
@@ -65,7 +65,7 @@ export default function TravisCICreateIntegrationPage() {
className='mt-4'
isLoading={isLoading}
>
Connect to TravisCI
Connect to Travis CI
</Button>
</Card>
</div>
@@ -73,7 +73,7 @@ export default function TravisCICreateIntegrationPage() {
return (integrationAuth && workspace && selectedSourceEnvironment && integrationAuthApps && targetApp) ? (
<div className="h-full w-full flex justify-center items-center">
<Card className="max-w-md p-8 rounded-md">
<CardTitle className='text-center'>TravisCI Integration</CardTitle>
<CardTitle className='text-center'>Travis CI Integration</CardTitle>
<FormControl
label="Project Environment"
className='mt-4'
@@ -91,7 +91,7 @@ export default function TravisCICreateIntegrationPage() {
</Select>
</FormControl>
<FormControl
label="TravisCI Project"
label="Travis CI Project"
className='mt-4'
>
<Select
+1 -1
View File
@@ -90,7 +90,7 @@ export default function Login() {
<ListBox
isSelected={lang}
onChange={setLanguage}
data={['en', 'ko', 'fr', 'pt-BR']}
data={['en', 'ko', 'fr', 'pt-BR', 'pt-PT']}
isFull
text={`${t('common:language')}: `}
/>
+2 -3
View File
@@ -77,13 +77,13 @@ export default function SettingsBilling() {
}, []);
return (
<div className="bg-bunker-800 max-h-screen flex flex-col justify-between text-white">
<div className="bg-bunker-800 pb-4 flex flex-col justify-between text-white">
<Head>
<title>{t('common:head-title', { title: t('billing:title') })}</title>
<link rel="icon" href="/infisical.ico" />
</Head>
<div className="flex flex-row">
<div className="w-full max-h-screen pb-2 overflow-y-auto">
<div className="w-full pb-2">
<NavHeader pageName={t('billing:title')} />
<div className="flex flex-row justify-between items-center ml-6 my-8 text-xl max-w-5xl">
<div className="flex flex-col justify-start items-start text-3xl">
@@ -93,7 +93,6 @@ export default function SettingsBilling() {
</div>
<div className="flex flex-col ml-6 text-mineshaft-50 w-max">
<p className="text-xl font-semibold">{t('billing:subscription')}</p>
<div className="mt-4 text-bunker-200 h-14 flex justify-center items-center rounded-md bg-bunker-600 mr-4"> If you are looking to get an annual plan, please reach out to <a className="ml-1.5 underline text-primary underline-offset-2" href="mailto:[email protected]">team@infisical.com</a></div>
<div className="grid grid-cols-2 grid-rows-2 gap-y-6 gap-x-3 mt-4 overflow-x-auto">
{plans.map((plan) => (
<Plan key={plan.name} plan={plan} />
@@ -1,5 +1,6 @@
import { useMemo, useState } from 'react';
import { Controller, useForm } from 'react-hook-form';
import { useRouter } from 'next/router';
import { faMagnifyingGlass, faPlus, faTrash, faUsers } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { yupResolver } from '@hookform/resolvers/yup';
@@ -61,6 +62,7 @@ export const OrgMembersTable = ({
userId,
isLoading
}: Props) => {
const router = useRouter();
const [searchMemberFilter, setSearchMemberFilter] = useState('');
const { handlePopUpToggle, popUp, handlePopUpOpen, handlePopUpClose } = usePopUp([
'addMember',
@@ -159,7 +161,7 @@ export const OrgMembersTable = ({
<Select
defaultValue={role}
isDisabled={userId === user?._id}
className="w-full bg-mineshaft-600"
className="w-40 bg-mineshaft-600"
onValueChange={(selectedRole) =>
onRoleChange(orgMembershipId, selectedRole)
}
@@ -172,8 +174,8 @@ export const OrgMembersTable = ({
</Select>
)}
{(status === 'invited' || status === 'verified') && (
<Button colorSchema="secondary" onClick={() => onInviteMember(email)}>
Resent Invite
<Button className='w-40' colorSchema="secondary" onClick={() => onInviteMember(email)}>
Resend Invite
</Button>
)}
{status === 'completed' && (
@@ -193,7 +195,17 @@ export const OrgMembersTable = ({
</Tag>
))
) : (
<Tag colorSchema="red">This user isn&apos;t part of any projects yet</Tag>
<div className='flex flex-row'>
<Tag colorSchema="red">This user isn&apos;t part of any projects yet</Tag>
<button
type="button"
onClick={() => router.push(`/users/${router.query.id}`)}
className='text-sm bg-mineshaft w-max px-1.5 py-0.5 hover:bg-primary duration-200 hover:text-black cursor-pointer rounded-sm'
>
<FontAwesomeIcon icon={faPlus} className="mr-1" />
Add to projects
</button>
</div>
)}
</Td>
<Td>