Przeglądaj źródła

add: 语系新增葡萄牙语及意大利语

liutian 3 miesięcy temu
rodzic
commit
52e09d50ea

+ 2 - 1
.gitignore

@@ -3,4 +3,5 @@ node_modules
 .pnpm-debug.log
 dist
 lib
-components.d.ts
+components.d.ts
+fonts

+ 324 - 0
packages/webview/locales/br.json

@@ -0,0 +1,324 @@
+{
+  "header": {
+    "leftPanel": "Menu do lado esquerdo",
+    "fullScreen": "Tela cheia",
+    "pan": "Mover",
+    "zoomIn": "Mais Zoom",
+    "zoomOut": "Afastar",
+    "light": "Tema do dia",
+    "dark": "Tema noturno",
+
+    "viewer": "Visualizador",
+    "annotations": "Anotações",
+    "forms": "Construtor de formulários",
+    "signatures": "Assinaturas",
+    "security": "Proteger e desbloquear",
+    "compare": "Comparar documentos",
+    "editor": "Editar texto",
+    "document": "Girar e mover páginas",
+
+    "note": "Comentar",
+    "highlight": "Destacar",
+    "underline": "Sublinhar",
+    "strikeout": "Rasurar",
+    "squiggly": "Sublinhar ondulado",
+    "ink": "Lápis",
+    "circle": "Círculo",
+    "square": "Quadrado",
+    "arrow": "Flecha",
+    "line": "Linha",
+    "freetext": "Adicionar texto",
+    "stamp": "Carimbo",
+    "image": "Inserir imagem",
+    "link": "Adicionar link",
+
+    "textField": "Campo de texto",
+    "checkbox": "Caixa de seleção",
+    "radioButton": "Botão de rádio",
+    "listBox": "Caixa de lista",
+    "comboButton": "Menu suspenso",
+    "button": "Botão",
+
+    "setPassword": "Definir senha",
+    "removePassword": "Remover senha",
+
+    "openFile": "Carregar arquivo",
+    "search": "Buscar",
+    "rightPanel": "Menu lateral direito",
+    "viewSetting": "Opções",
+    "download": "Baixar",
+    "flatten": "Achatar PDF e salvar",
+    "print": "Imprimir",
+    "language": "Idioma",
+
+    "editText": "Editar texto",
+    "addText": "Adicionar texto",
+    "editImage": "Editar imagem",
+    "addImage": "Inserir imagem",
+    "undo": "Desfazer",
+    "redo": "Refazer"
+  },
+
+  "nextPage": "Próxima página",
+  "previousPage": "Página anterior",
+  "loading": "Carregando",
+  "upload": "Subir",
+
+  "leftPanel": {
+    "thumbnails": "Todas as páginas",
+
+    "outlines": "Índice de conteúdos",
+    "noOutlines": "Não foi detectado índice de conteúdos",
+
+    "layers": "Camadas",
+    "noLayers": "Não foram detectadas camadas",
+
+    "annotations": "Comentários",
+    "noAnnotations": "Não há comentários",
+    "importAnnotations": "Importar comentários",
+    "exportAnnotations": "Exportar comentários",
+
+    "search": "Buscar",
+    "searchPdf": "Digite o texto a ser buscado no PDF...",
+    "page": "Página",
+    "previousPhrase": "Anterior",
+    "nextPhrase": "Próxima",
+    "results": "Resultados",
+    "noResults": "Nenhum resultado"
+  },
+
+  "pageModePanel": {
+    "displayMode": "Modo de visualização",
+    "singlePage": "Uma página",
+    "twoPages": "Duas páginas",
+    "coverMode": "Modo capa",
+
+    "splitView": "Rolar",
+    "vertical": "Rolar vertical",
+    "horizontal": "Rolar horizontal",
+
+    "themes": "Tema"
+  },
+
+  "stampPanel": {
+    "standard": "Padrão",
+    "dynamic": "Dinâmicos"
+  },
+
+  "linkPanel": {
+    "linkTo": "Inserir link",
+    "url": "URL",
+    "goToPages": "Link para uma página",
+    "email": "Email",
+    "go": "Adicionar"
+  },
+
+  "rightPanel": {
+    "general": "Geral",
+    "name": "Nome",
+    "formField": "Estilo",
+    "visible": "Visível",
+    "hidden": "Oculto",
+    "differentNameError": "Por favor, escolha outro nome.",
+    "buttonText": "Texto do botão",
+
+    "appearance": "Aparência",
+    "backgroundColor": "Cor de fundo",
+
+    "preferences": "Configurações",
+    "alignment": "Alinhamento",
+    "left": "Esquerda",
+    "center": "Centralizado",
+    "right": "Direita",
+    "defaultValue": "Valor padrão",
+    "multiLine": "Multi-linha",
+    "buttonStyle": "Estilo do botão",
+    "check": "Marcar",
+    "circle": "Círculo",
+    "cross": "Cruz",
+    "diamond": "Diamante",
+    "square": "Quadrado",
+    "star": "Estrela",
+    "defaultChecked": "Deixar o botão marcado por padrão",
+    "item": "Elemento",
+    "itemList": "Lista de elementos",
+    "option": "Opção",
+    "selectAction": "Escolher ação",
+    "none": "Nenhuma",
+    "goPage": "Ir para uma página específica",
+    "openLink": "Abrir um URL",
+    "addUrl": "Digite a URL",
+    "addPage": "Digite a página",
+
+    "radioBtnTip1": "Há apenas 1 botão no grupo. São necessários pelo menos 2 botões.",
+    "radioBtnTip2": "Para criar um conjunto de botões de opção mutuamente exclusivos (ou seja, onde apenas um pode ser selecionado por vez), atribua o mesmo nome aos campos.",
+    "listBoxTip": "Selecione um item na lista de elementos para torná-lo a opção padrão."
+  },
+
+  "prevent": {
+    "title": "Não disponível na opção Server-Backed",
+    "standalone": "Standalone",
+    "description": "O editor de conteúdo está disponível apenas no modo Standalone. Mude para Standalone para editar conteúdo PDF.",
+    "description1": "O editor de documentos está disponível apenas no modo Standalone. Mude para Standalone para editar páginas PDF."
+  },
+
+  "passwordDialog": {
+    "enterPwd": "Digite a senha para ver o documento",
+    "enterPwdPlaceholder": "Digite a senha",
+    "wrongPwd": "Senha incorreta",
+
+    "encryptPdf": "Proteja seu PDF",
+    "encrypt": "Proteger",
+    "supportTip": "Compatível com: números, letras e símbolos: {'@'}, $, !, %, ?, & ",
+    "removePwdSuccess": "Senha removida com sucesso!",
+    "removePwdFailure": "Erro ao tentar remover a senha.",
+    "setPwdSuccess": "A senha foi criada com sucesso!",
+    "setPwdFailure": "Erro ao tentar criar a senha.",
+    "note": [
+      "Importante:",
+      "- As alterações serão aplicadas quando você baixar o documento.",
+      "- Você pode redefinir a senha quantas vezes quiser antes de baixar o documento."
+    ]
+  },
+  "ok": "OK",
+  "cancel": "Cancelar",
+
+  "signatures": {
+    "trackpad": "Manual",
+    "lineWidth": "Espessura da linha",
+
+    "keyboard": "Teclado",
+    "signHere": "Assine aqui...",
+
+    "image": "Carregar assinatura",
+    "selectFile": "Escolha o arquivo",
+
+    "clear": "Limpar",
+    "save": "Salvar e aplicar",
+    "uploadError": "A imagem não pode ter mais de 1 MB"
+  },
+  "color": "Cor",
+  "opacity": "Opacidade",
+  "font": "Fonte",
+  "regular": "Regular",
+  "oblique": "Itálico",
+  "bold": "Negrito",
+  "boldOblique": "Negrito e itálico",
+
+  "compare": {
+    "startCompare": "Iniciar comparação",
+    "exit": "Sair",
+
+    "oldFile": "Arquivo 1",
+    "newFile": "Arquivo 2",
+    "dropFile": [
+      "Arraste seu arquivo PDF aqui",
+      "ou"
+    ],
+    "chooseOldFile": "Carregar arquivo PDF 1",
+    "chooseNewFile": "Carregar arquivo PDF 2",
+    "comingSoon": "Trabalhando na comparação!",
+
+    "contentComparison": "Comparar conteúdo",
+    "compareItems": "Itens a comparar",
+    "text": "Texto",
+    "images": "Imagens",
+    "colorMark": "Cor para as diferenças",
+    "replacedContent": "Conteúdo substituído",
+    "insertedContent": "Conteúdo adicionado",
+    "deletedContent": "Conteúdo removido",
+
+    "overlayComparison": "Sobreposição",
+    "blendMode": "Modo de mesclagem",
+    "normal": "Normal",
+    "multiply": "Multiplicar",
+    "screen": "Tela",
+    "overlay": "Sobreposição",
+    "darken": "Escurecer",
+    "lighten": "Clarear",
+    "colorDodge": "ColorDodge",
+    "colorBurn": "ColorBurn",
+    "hardLight": "HardLight",
+    "softLight": "SoftLight",
+    "difference": "Diferença",
+    "exclusion": "Exclusão",
+    "hue": "Matiz",
+    "saturation": "Saturação",
+    "colour": "Cor",
+    "luminosity": "Luminosidade",
+
+    "return": "Voltar",
+    "compare": "Comparar",
+
+    "downloadOptions": "Escolha o método de download",
+    "downloadTwoFiles": "Baixar arquivos separadamente",
+    "downloadOneFile": "Baixar um arquivo combinado",
+
+    "printSetting": "Configurações de impressão",
+    "printOldFile": "Imprimir arquivo 1 com resultados de comparação",
+    "printNewFile": "Imprimir arquivo 2 com resultados de comparação",
+
+    "byComPDFKit": "PDF comparado por ComPDFKit"
+  },
+
+  "editorPanel": {
+    "textProp": "Configurações de texto",
+    "fontColor": "Cor da fonte",
+    "textStyle": "Estilo do texto",
+
+    "imageProp": "Configurações da imagem",
+    "rotate": "Girar",
+    "rotateLeft": "Girar para a esquerda",
+    "rotateRight": "Girar para a direita",
+    "flip": "Virar",
+    "flipHorizontal": "Virar horizontal",
+    "flipVertical": "Virar vertical",
+    "tools": "Mais opções",
+    "replace": "Substituir imagem",
+    "export": "Baixar imagem",
+    "crop": "Cortar imagem",
+    "maximum": "Tamanho máximo permitido: 2MB."
+  },
+
+  "documentEditor": {
+    "save": "Salvar",
+    "saveAs": "Baixar arquivo",
+    "insert": "Inserir",
+    "delete": "Excluir",
+    "rotateRight": "Girar para a direita",
+    "rotateLeft": "Girar para a esquerda",
+    "copy": "Duplicar",
+    "extract": "Extrair",
+    "replace": "Substituir",
+    "move": "Mover",
+    "selectAll": "Selecionar tudo",
+
+    "dialog": {
+      "insertPages": "Inserir páginas",
+      "blankPage": "Página em branco",
+      "customPage": "Página em branco personalizada",
+      "fromPdf": "Carregar PDF",
+      "selectFile": "Carregar seu PDF aqui",
+      "pageRange": "Páginas a inserir",
+      "allPages": "Todas as páginas",
+      "oddPage": "Somente páginas ímpares",
+      "evenPage": "Somente páginas pares",
+      "customRange": "Intervalo personalizado...",
+      "insertTo": "Inserir em",
+      "firstPage": "Primeira página",
+      "lastPage": "Última página",
+      "page": "Página(s) personalizada(s)",
+      "pageTip": "exemplo: 3, 5-10",
+      "before": "Antes",
+      "after": "Depois"
+    },
+
+    "deleteConfirmText": "Deseja excluir a(s) página(s) ",
+
+    "eachPage": "Cada página em um arquivo diferente",
+    "deleteAfter": "Excluir página após extrair",
+
+    "moveTo": "Mover após a página:",
+    "inputPageTip": "Digite 0 para o número máximo de páginas"
+  }
+}

+ 324 - 0
packages/webview/locales/it.json

@@ -0,0 +1,324 @@
+{
+  "header": {
+    "leftPanel": "Menu laterale sinistro",
+    "fullScreen": "Schermo intero",
+    "pan": "Spostare",
+    "zoomIn": "Ingrandire",
+    "zoomOut": "Rimpicciolire",
+    "light": "Tema chiaro",
+    "dark": "Tema scuro",
+
+    "viewer": "Visualizzatore",
+    "annotations": "Annotazioni",
+    "forms": "Costruttore di moduli",
+    "signatures": "Firme",
+    "security": "Proteggere e sbloccare",
+    "compare": "Confronta documenti",
+    "editor": "Modifica testo",
+    "document": "Ruota e sposta pagine",
+
+    "note": "Commentare",
+    "highlight": "Evidenziare",
+    "underline": "Sottolineare",
+    "strikeout": "Barrato",
+    "squiggly": "Sottolineare ondulato",
+    "ink": "Matita",
+    "circle": "Cerchio",
+    "square": "Quadrato",
+    "arrow": "Freccia",
+    "line": "Linea",
+    "freetext": "Aggiungere testo",
+    "stamp": "Timbro",
+    "image": "Inserire immagine",
+    "link": "Aggiungere link",
+
+    "textField": "Campo di testo",
+    "checkbox": "Casella di controllo",
+    "radioButton": "Pulsante di scelta",
+    "listBox": "Elenco a discesa",
+    "comboButton": "Menu a tendina",
+    "button": "Pulsante",
+
+    "setPassword": "Impostare password",
+    "removePassword": "Rimuovere password",
+
+    "openFile": "Caricare file",
+    "search": "Cercare",
+    "rightPanel": "Menu laterale destro",
+    "viewSetting": "Opzioni",
+    "download": "Scaricare",
+    "flatten": "Appiattire PDF e salvare",
+    "print": "Stampare",
+    "language": "Lingua",
+
+    "editText": "Modifica il testo",
+    "addText": "Aggiungere testo",
+    "editImage": "Modifica immagine",
+    "addImage": "Inserire immagine",
+    "undo": "Annullare",
+    "redo": "Ripristinare"
+  },
+
+  "nextPage": "Pagina successiva",
+  "previousPage": "Pagina precedente",
+  "loading": "Caricamento",
+  "upload": "Caricare",
+
+  "leftPanel": {
+    "thumbnails": "Tutte le pagine",
+
+    "outlines": "Indice dei contenuti",
+    "noOutlines": "Nessun indice dei contenuti rilevato",
+
+    "layers": "Livelli",
+    "noLayers": "Nessun livello rilevato",
+
+    "annotations": "Commenti",
+    "noAnnotations": "Nessun commento",
+    "importAnnotations": "Importare commenti",
+    "exportAnnotations": "Esportare commenti",
+
+    "search": "Cercare",
+    "searchPdf": "Digitare il testo da cercare nel PDF...",
+    "page": "Pagina",
+    "previousPhrase": "Precedente",
+    "nextPhrase": "Successivo",
+    "results": "Risultati",
+    "noResults": "Nessun risultato"
+  },
+
+  "pageModePanel": {
+    "displayMode": "Modalità di visualizzazione",
+    "singlePage": "Una pagina",
+    "twoPages": "Due pagine",
+    "coverMode": "Modalità copertina",
+
+    "splitView": "Scroll",
+    "vertical": "Scroll verticale",
+    "horizontal": "Scroll orizzontale",
+
+    "themes": "Tema"
+  },
+
+  "stampPanel": {
+    "standard": "Standard",
+    "dynamic": "Dinamici"
+  },
+
+  "linkPanel": {
+    "linkTo": "Inserire link",
+    "url": "URL",
+    "goToPages": "Link a una pagina",
+    "email": "Email",
+    "go": "Aggiungere"
+  },
+
+  "rightPanel": {
+    "general": "Generale",
+    "name": "Nome",
+    "formField": "Stile",
+    "visible": "Visibile",
+    "hidden": "Nascosto",
+    "differentNameError": "Per favore, scegli un altro nome.",
+    "buttonText": "Testo del pulsante",
+
+    "appearance": "Aspetto",
+    "backgroundColor": "Colore di sfondo",
+
+    "preferences": "Impostazioni",
+    "alignment": "Allineamento",
+    "left": "Sinistra",
+    "center": "Centrato",
+    "right": "Destra",
+    "defaultValue": "Valore predefinito",
+    "multiLine": "Multi-linea",
+    "buttonStyle": "Stile del pulsante",
+    "check": "Selezionare",
+    "circle": "Cerchio",
+    "cross": "Croce",
+    "diamond": "Diamante",
+    "square": "Quadrato",
+    "star": "Stella",
+    "defaultChecked": "Lasciare il pulsante selezionato per impostazione predefinita",
+    "item": "Elemento",
+    "itemList": "Elenco di elementi",
+    "option": "Opzione",
+    "selectAction": "Selezionare azione",
+    "none": "Nessuna",
+    "goPage": "Vai a una pagina specifica",
+    "openLink": "Aprire un URL",
+    "addUrl": "Digitare l'URL",
+    "addPage": "Digitare la pagina",
+
+    "radioBtnTip1": "C'è solo 1 pulsante nel gruppo. Sono necessari almeno 2 pulsanti.",
+    "radioBtnTip2": "Per creare un gruppo di pulsanti di scelta esclusivi (cioè, dove solo uno può essere selezionato alla volta), assegnare lo stesso nome ai campi.",
+    "listBoxTip": "Selezionare un elemento nell'elenco degli elementi per renderlo l'opzione predefinita."
+  },
+
+  "prevent": {
+    "title": "Non disponibile nell'opzione Server-Backed",
+    "standalone": "Standalone",
+    "description": "L'editor di contenuti è disponibile solo in modalità Standalone. Passare a Standalone per modificare il contenuto PDF.",
+    "description1": "L'editor di documenti è disponibile solo in modalità Standalone. Passare a Standalone per modificare le pagine PDF."
+  },
+
+  "passwordDialog": {
+    "enterPwd": "Inserire la password per visualizzare il documento",
+    "enterPwdPlaceholder": "Inserire la password",
+    "wrongPwd": "Password errata",
+
+    "encryptPdf": "Proteggi il tuo PDF",
+    "encrypt": "Proteggere",
+    "supportTip": "Compatibile con: numeri, lettere e simboli: {'@'}, $, !, %, ?, & ",
+    "removePwdSuccess": "Password rimossa con successo!",
+    "removePwdFailure": "Errore durante la rimozione della password.",
+    "setPwdSuccess": "Password creata con successo!",
+    "setPwdFailure": "Errore durante la creazione della password.",
+    "note": [
+      "Importante:",
+      "- Le modifiche verranno applicate quando scaricherai il documento.",
+      "- Puoi reimpostare la password tutte le volte che vuoi prima di scaricare il documento."
+    ]
+  },
+  "ok": "OK",
+  "cancel": "Annullare",
+
+  "signatures": {
+    "trackpad": "Manuale",
+    "lineWidth": "Spessore della linea",
+
+    "keyboard": "Tastiera",
+    "signHere": "Firma qui...",
+
+    "image": "Caricare firma",
+    "selectFile": "Seleziona file",
+
+    "clear": "Pulire",
+    "save": "Salvare e applicare",
+    "uploadError": "L'immagine non può essere più grande di 1 MB"
+  },
+  "color": "Colore",
+  "opacity": "Opacità",
+  "font": "Font",
+  "regular": "Regolare",
+  "oblique": "Corsivo",
+  "bold": "Grassetto",
+  "boldOblique": "Grassetto e corsivo",
+
+  "compare": {
+    "startCompare": "Iniziare il confronto",
+    "exit": "Uscire",
+
+    "oldFile": "File 1",
+    "newFile": "File 2",
+    "dropFile": [
+      "Trascina qui il tuo file PDF",
+      "o"
+    ],
+    "chooseOldFile": "Carica file PDF 1",
+    "chooseNewFile": "Carica file PDF 2",
+    "comingSoon": "Lavorando al confronto!",
+
+    "contentComparison": "Confrontare contenuti",
+    "compareItems": "Elementi da confrontare",
+    "text": "Testo",
+    "images": "Immagini",
+    "colorMark": "Colore per le differenze",
+    "replacedContent": "Contenuto sostituito",
+    "insertedContent": "Contenuto aggiunto",
+    "deletedContent": "Contenuto eliminato",
+
+        "overlayComparison": "Sovrapposizione",
+    "blendMode": "Modalità di fusione",
+    "normal": "Normale",
+    "multiply": "Moltiplica",
+    "screen": "Schermo",
+    "overlay": "Overlay",
+    "darken": "Scurisci",
+    "lighten": "Schiari",
+    "colorDodge": "ColorDodge",
+    "colorBurn": "ColorBurn",
+    "hardLight": "LuceDura",
+    "softLight": "LuceSoffice",
+    "difference": "Differenza",
+    "exclusion": "Esclusione",
+    "hue": "Tonalità",
+    "saturation": "Saturazione",
+    "colour": "Colore",
+    "luminosity": "Luminosità",
+
+    "return": "Torna indietro",
+    "compare": "Confronta",
+
+    "downloadOptions": "Scegli il metodo di download",
+    "downloadTwoFiles": "Scarica file separati",
+    "downloadOneFile": "Scarica un file combinato",
+
+    "printSetting": "Impostazioni di stampa",
+    "printOldFile": "Stampa file 1 con risultati del confronto",
+    "printNewFile": "Stampa file 2 con risultati del confronto",
+
+    "byComPDFKit": "PDF confrontato da ComPDFKit"
+  },
+
+  "editorPanel": {
+    "textProp": "Impostazioni del testo",
+    "fontColor": "Colore del font",
+    "textStyle": "Stile del testo",
+
+    "imageProp": "Impostazioni dell'immagine",
+    "rotate": "Ruota",
+    "rotateLeft": "Ruota a sinistra",
+    "rotateRight": "Ruota a destra",
+    "flip": "Capovolgi",
+    "flipHorizontal": "Capovolgi orizzontalmente",
+    "flipVertical": "Capovolgi verticalmente",
+    "tools": "Altre opzioni",
+    "replace": "Sostituisci immagine",
+    "export": "Scarica immagine",
+    "crop": "Ritaglia immagine",
+    "maximum": "Dimensione massima consentita: 2MB."
+  },
+
+  "documentEditor": {
+    "save": "Salva",
+    "saveAs": "Scarica file",
+    "insert": "Inserisci",
+    "delete": "Elimina",
+    "rotateRight": "Ruota a destra",
+    "rotateLeft": "Ruota a sinistra",
+    "copy": "Duplica",
+    "extract": "Estrai",
+    "replace": "Sostituisci",
+    "move": "Sposta",
+    "selectAll": "Seleziona tutto",
+
+    "dialog": {
+      "insertPages": "Inserisci pagine",
+      "blankPage": "Pagina bianca",
+      "customPage": "Pagina bianca personalizzata",
+      "fromPdf": "Carica PDF",
+      "selectFile": "Carica il tuo PDF qui",
+      "pageRange": "Pagine da inserire",
+      "allPages": "Tutte le pagine",
+      "oddPage": "Solo pagine dispari",
+      "evenPage": "Solo pagine pari",
+      "customRange": "Intervallo personalizzato...",
+      "insertTo": "Inserisci in",
+      "firstPage": "Prima pagina",
+      "lastPage": "Ultima pagina",
+      "page": "Pagina/e personalizzata/e",
+      "pageTip": "esempio: 3, 5-10",
+      "before": "Prima",
+      "after": "Dopo"
+    },
+
+    "deleteConfirmText": "Vuoi eliminare la/e pagina/e ",
+
+    "eachPage": "Ogni pagina in un file diverso",
+    "deleteAfter": "Elimina pagina dopo l'estrazione",
+
+    "moveTo": "Sposta dopo la pagina:",
+    "inputPageTip": "Inserisci 0 per il numero massimo di pagine"
+  }
+}

+ 1 - 1
packages/webview/src/apis/setLanguage.js

@@ -13,7 +13,7 @@ import i18n from '../i18n'
 const { locale } = i18n.global
 
 export default (store) => (language) => {
-  if (!['en', 'zh-CN', 'es', 'de', 'fr'].includes(language)) {
+  if (!['en', 'zh-CN', 'es', 'de', 'fr', 'it', 'br'].includes(language)) {
     language = 'en'
   }
   locale.value = language

+ 3 - 0
packages/webview/src/components/Annotate/Annotate.vue

@@ -305,6 +305,9 @@
         width: 14px;
         height: 14px;
         border-radius: 50%;
+        &.black {
+          background-color: #000000;
+        }
         &.red {
           background-color: #FF0000;
         }

+ 10 - 0
packages/webview/src/components/Dialogs/LanguageDialog.vue

@@ -32,6 +32,16 @@
           <Circle v-else />
           Deutschland
         </div>
+        <div class="item" @click="selectLanguage('br')">
+          <Circled v-if="currentLanguage === 'br'" />
+          <Circle v-else />
+          Portuguese (for Brasil) 
+        </div>
+        <div class="item" @click="selectLanguage('it')">
+          <Circled v-if="currentLanguage === 'it'" />
+          <Circle v-else />
+          Italian
+        </div>
         <span class="set-btn" @click="handleLanguage">{{ $t('ok') }}</span>
       </div>
     </div>

+ 5 - 1
packages/webview/src/i18n.js

@@ -4,9 +4,11 @@ import zhCN from '../locales/zh-CN.json'
 import es from '../locales/es.json'
 import de from '../locales/de.json'
 import fr from '../locales/fr.json'
+import it from '../locales/it.json'
+import br from '../locales/br.json'
 
 let language = window.localStorage.getItem('currentLanguage') || 'en'
-if (!['en', 'zh-CN', 'es', 'de', 'fr'].includes(language)) {
+if (!['en', 'zh-CN', 'es', 'de', 'fr', 'it', 'br'].includes(language)) {
   language = 'en'
 }
 
@@ -22,6 +24,8 @@ const i18n = createI18n({
     es,
     de,
     fr,
+    it,
+    br,
   }
 })