diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml
index 885e1ea60..1d97525e3 100644
--- a/.github/workflows/rolling-release.yml
+++ b/.github/workflows/rolling-release.yml
@@ -93,7 +93,7 @@ jobs:
shell: bash
run: |
sudo apt-get update
- sudo apt-get -y install cmake ninja-build ccache libsdl2-dev libgtk2.0-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qt5-default
+ sudo apt-get -y install cmake ninja-build ccache libsdl2-dev libgtk2.0-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qt5-default qttools5-dev
- name: Compile build
shell: bash
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b17b5ebd..08c240989 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,7 +91,7 @@ if(NOT ANDROID)
find_package(SDL2 REQUIRED)
endif()
if(BUILD_QT_FRONTEND)
- find_package(Qt5 COMPONENTS Core Gui Widgets Network REQUIRED)
+ find_package(Qt5 COMPONENTS Core Gui Widgets Network LinguistTools REQUIRED)
endif()
endif()
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 6fc5ba71a..ed5e786c6 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -5,6 +5,9 @@ The following people have contributed to the project in some way, and are credit
- Connor McLaughlin - @stenzek
- @ggrtk
+## Translators
+- Anderson Cardoso - Portuguese
+
## Game Compatibility Database
- @Zet-sensei
- @DarkFrost89
diff --git a/README.md b/README.md
index 9ac791c62..6e0f0431f 100644
--- a/README.md
+++ b/README.md
@@ -139,7 +139,7 @@ Requirements (Debian/Ubuntu package names):
- CMake (`cmake`)
- SDL2 (`libsdl2-dev`)
- GTK2.0 for file selector (`libgtk2.0-dev`)
- - Qt 5 (`qtbase5-dev`, `qtbase5-private-dev`, `qtbase5-dev-tools`)
+ - Qt 5 (`qtbase5-dev`, `qtbase5-private-dev`, `qtbase5-dev-tools`, `qttools5-dev`)
- Optional for faster building: Ninja (`ninja-build`)
1. Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows.
diff --git a/appimage/generate-appimages.sh b/appimage/generate-appimages.sh
index 8dbc5b1d3..945c54df4 100755
--- a/appimage/generate-appimages.sh
+++ b/appimage/generate-appimages.sh
@@ -48,6 +48,15 @@ for frontend in ${FRONTENDS[@]}; do
cp -av ${DATA_DIR}/* ${CURRENT_APPDIR}/usr/bin
done
+# Add translations into the AppDir.
+TRANSLATIONS_DIR=${BUILD_DIR}/bin/translations
+echo "Translation directory is: ${BUILD_DIR}"
+for frontend in ${FRONTENDS[@]}; do
+ CURRENT_APPDIR=${BUILD_DIR}/AppDir-duckstation-${frontend}
+ mkdir -p ${CURRENT_APPDIR}/usr/bin
+ cp -av ${TRANSLATIONS_DIR} ${CURRENT_APPDIR}/usr/bin
+done
+
# Pass UPDATE_INFORMATION and OUTPUT variables (used by linuxdeploy-plugin-appimage)
# to the environment of the linuxdeploy commands
diff --git a/src/duckstation-qt/CMakeLists.txt b/src/duckstation-qt/CMakeLists.txt
index eaaa8e068..4361d79d9 100644
--- a/src/duckstation-qt/CMakeLists.txt
+++ b/src/duckstation-qt/CMakeLists.txt
@@ -2,7 +2,7 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
-add_executable(duckstation-qt
+set(SRCS
resources/resources.qrc
aboutdialog.cpp
aboutdialog.h
@@ -57,6 +57,14 @@ add_executable(duckstation-qt
settingsdialog.ui
)
+set(TS_FILES
+ translations/duckstation-qt_pt.ts
+)
+
+set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/translations")
+qt5_add_translation(QM_FILES ${TS_FILES})
+
+add_executable(duckstation-qt ${SRCS} ${QM_FILES})
target_include_directories(duckstation-qt PRIVATE "${Qt5Gui_PRIVATE_INCLUDE_DIRS}")
target_link_libraries(duckstation-qt PRIVATE frontend-common core common imgui glad minizip scmversion vulkan-loader Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network)
diff --git a/src/duckstation-qt/duckstation-qt.vcxproj b/src/duckstation-qt/duckstation-qt.vcxproj
index 662700f55..c1e833a5a 100644
--- a/src/duckstation-qt/duckstation-qt.vcxproj
+++ b/src/duckstation-qt/duckstation-qt.vcxproj
@@ -179,6 +179,11 @@
Document
+
+
+ Document
+
+
diff --git a/src/duckstation-qt/duckstation-qt.vcxproj.filters b/src/duckstation-qt/duckstation-qt.vcxproj.filters
index b96180b5e..429ae02e1 100644
--- a/src/duckstation-qt/duckstation-qt.vcxproj.filters
+++ b/src/duckstation-qt/duckstation-qt.vcxproj.filters
@@ -41,17 +41,20 @@
+
-
{3b2587ae-ce3b-4eb5-ada2-237e853620cf}
+
+ {4230e20b-2aff-4c86-966c-b620263a371d}
+
@@ -75,6 +78,7 @@
+
@@ -87,6 +91,7 @@
+
@@ -98,6 +103,11 @@
-
+
+
+
+
+ translations
+
\ No newline at end of file
diff --git a/src/duckstation-qt/qthostinterface.cpp b/src/duckstation-qt/qthostinterface.cpp
index 73f7e389f..30a2d37d0 100644
--- a/src/duckstation-qt/qthostinterface.cpp
+++ b/src/duckstation-qt/qthostinterface.cpp
@@ -53,7 +53,7 @@ const char* QtHostInterface::GetFrontendName() const
std::vector> QtHostInterface::getAvailableLanguageList()
{
- return {{QStringLiteral("English"), QStringLiteral("")}};
+ return {{QStringLiteral("English"), QStringLiteral("")}, {QStringLiteral("Portuguese"), QStringLiteral("pt")}};
}
bool QtHostInterface::Initialize()
diff --git a/src/duckstation-qt/translations/duckstation-qt_pt.ts b/src/duckstation-qt/translations/duckstation-qt_pt.ts
new file mode 100644
index 000000000..8f88bf8f2
--- /dev/null
+++ b/src/duckstation-qt/translations/duckstation-qt_pt.ts
@@ -0,0 +1,1476 @@
+
+
+
+
+ AboutDialog
+
+
+
+ SobreDuckstation
+
+
+
+
+ Duckstation
+
+
+
+
+
+
+
+
+
+ %1 (%2)
+
+
+
+ AdvancedSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Registro
+
+
+
+
+ Nivel do Ratreio:
+
+
+
+
+ Filtros:
+
+
+
+
+ Carregar para o sitema via console
+
+
+
+
+ Carregar para Janela
+
+
+
+
+ Carregar para o Console
+
+
+
+
+ Carregar rastreio para arquivo
+
+
+
+
+ Ajustes e Hacks
+
+
+
+
+ Essas opções são ajustáveis para melhorar a compatibilidade desempenho dos jogos. Use por sua conta e risco, valores modificados não serão suportados.
+
+
+
+
+ DMA Max Slice Ticks:
+
+
+
+
+ DMA Halt Ticks:
+
+
+
+
+ GPU FIFO Size:
+
+
+
+
+ GPU Max Run-Ahead:
+
+
+
+
+ Redefinir para o Padrão
+
+
+
+ AudioSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Configuração
+
+
+
+
+ Saída de Som:
+
+
+
+
+ Tamanho do Buffer:
+
+
+
+
+ Latência Máxima
+
+
+
+
+ Sincronizar
+
+
+
+
+ Despejar Audio ao Iniciar
+
+
+
+
+ Controles
+
+
+
+
+ Volume:
+
+
+
+
+ Mudo
+
+
+
+
+ 100%
+
+
+
+
+ Latência Máxima:%1 frames (%2ms)
+
+
+
+
+ %1%
+
+
+
+ ConsoleSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Console
+
+
+
+
+ Região:
+
+
+
+
+ Caminho para BIOS:
+
+
+
+
+ Inicio Rápido
+
+
+
+
+ Habilitar saída TTY
+
+
+
+
+ ...
+
+
+
+
+ Emulação da CPU
+
+
+
+
+ Modo de Execução:
+
+
+
+
+ Emulação do CD-ROM
+
+
+
+
+ Carregamento de Cache em tempo real
+ Usar Leitura Asincrona
+
+
+
+
+ Habilitar Checagem de Região
+
+
+
+
+ Coloca a Iso toda na sua mémoria RAM
+ Carregar Jogo para RAM
+
+
+
+
+ Escolha o Arquivo de BIOS
+
+
+
+ ControllerSettingsWidget
+
+
+
+ Tipo de Controle:
+
+
+
+
+ Carregar Perfil
+
+
+
+
+ Salvar Perfil
+
+
+
+
+ Limpar Tudo
+
+
+
+
+ Limpar Atribuições
+
+
+
+
+ Tem certeza de que quer limpar todas as atribuições feitas, isto não poderá ser desfeito.
+
+
+
+
+
+ Reatribuir Todos
+
+
+
+
+ Tem certeza de que quer reatribuir todos os controles? Todas as mudanças feitas nos controles serão perdidas. A reatribuição se dará após a confirmação.
+
+
+
+
+
+
+
+
+
+ Atribuição de Botões:
+
+
+
+
+ Analogicos
+ Atribuição de Eixos:
+
+
+
+
+ Vibração dos Controles
+ Vibração
+
+
+
+
+
+
+ Procurar...
+
+
+
+
+ Escolha o Aruivo
+
+
+
+
+
+ Escolha o caminho para inserir o perfil do jogo
+
+
+
+
+ Novo...
+
+
+
+
+
+ Escolha um nome para o Perfil
+
+
+
+
+
+ Erro
+
+
+
+
+ Nome não atribuido, configuração de controle não foi salva.
+
+
+
+
+ Caminho não atribuido, configuração de controle não foi salva.
+
+
+
+ GPUSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Básico
+
+
+
+
+ Renderizador:
+
+
+
+
+ Adaptador:
+
+
+
+
+ Usar Depuração para Dispositivo
+
+
+
+
+ Exibição
+
+
+
+
+ Proporção e Aspecto:
+
+
+
+
+ Cortar:
+
+
+
+
+ Escalonamento Linear
+
+
+
+
+ Escalonamento Integro
+
+
+
+
+ Sincronização Vertical (VSync)
+
+
+
+
+ Aprimoramentos
+
+
+
+
+ Escala de Resolução:
+
+
+
+
+ Renderização em (24 Cores, desativa o efeito dithering)
+
+
+
+
+ Dithering Escalonado, (escalona o padrão do dithering para a resolução)
+
+
+
+
+ Desativa o entrelaçamento(força rederização progressiva)
+
+
+
+
+ Força o temporizador rodar em NTSC(60hz em jogos EU)
+
+
+
+
+ Filtragem de Textura Bilinear
+
+
+
+
+ Hack para Telas Widescreen
+
+
+
+
+ Automático, baseado no tamanho da janela aberta
+
+
+
+
+ %1x (%2x%3 VRAM)
+
+
+
+
+ Padrão
+
+
+
+ GameListModel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameListSearchDirectoriesModel
+
+
+
+ Caminho
+
+
+
+
+ Recursivo
+
+
+
+ GameListSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Procurar
+
+
+
+
+ Adicionar
+
+
+
+
+ Remover
+
+
+
+
+ Scanear Novos
+
+
+
+
+ Rescanear Tudo
+
+
+
+
+ Atualizar Base de Dados (Grupo Redump)
+
+
+
+
+ Escolha o Diretório de Busca
+
+
+
+
+ Ler Recursivamente?
+
+
+
+
+ Gostaria der ler o diretório recursivamente? Ecanear o diretório desta forma demora mais tempo porém, identificará arquivos em sub-pastas.
+
+
+
+
+ Baixar bando de dados do redump.org?
+
+
+
+
+ Quer baixar o banco de dados de CDs do redump.org? isto significa que serão baixados até 4megabytes de dados.
+
+
+
+
+ Baixando %1...
+
+
+
+
+ Cancelar
+
+
+
+
+ Falha ao Baixar
+
+
+
+
+ Extraindo...
+
+
+
+
+ Falha na Extração
+
+
+
+
+ Extração do banco de dados falhou.
+
+
+
+ GamePropertiesDialog
+
+
+
+ Dialogo
+
+
+
+
+ Caminho da Imagem:
+
+
+
+
+ Código do Jogo:
+
+
+
+
+ Titulo:
+
+
+
+
+ Região:
+
+
+
+
+ Compatibilidade:
+
+
+
+
+ Problemas no Escalonamento:
+
+
+
+
+ Comentários:
+
+
+
+
+ Versão Testada:
+
+
+
+
+ Definir para o Atual
+
+
+
+
+ Faixas:
+
+
+
+
+ #
+
+
+
+
+ Modo
+
+
+
+
+ Iniciar
+
+
+
+
+ Comprimento
+
+
+
+
+ Valores
+
+
+
+
+ Calcular Valores
+
+
+
+
+ Validar Jogo
+
+
+
+
+ Exportar Informação de Compatibilidade
+
+
+
+
+ Fechar
+
+
+
+
+ Propriedades do Jogo - %1
+
+
+
+
+ %1
+
+
+
+
+ Não Gerado
+
+
+
+
+ Ainda não Implementado
+
+
+
+
+ Exportar Informação de compatibilidade
+
+
+
+
+ Aperto OK para copiar para área de transferência.
+
+
+
+ GeneralSettingsWidget
+
+
+
+ Formulário
+
+
+
+
+ Comportamento
+
+
+
+
+ Pausar ao Iniciar
+
+
+
+
+ Confirmar que Deseja Fechar
+
+
+
+
+ Salvar ao Sair
+
+
+
+
+ Carregar a partir do estado salvo
+
+
+
+
+ Iniciar em Tela Cheia
+
+
+
+
+ Carregar Jogo na janela principal
+
+
+
+
+ Velocidade da emulação
+
+
+
+
+ 100%
+
+
+
+
+ Ativa Limitador de Velocidade
+
+
+
+
+ Aumentar Resolução em Tempo Real
+
+
+
+
+ Mensagens na Tela
+
+
+
+
+ Mostrar Mensagens
+
+
+
+
+ Ah, que delicia cara rodando a 60 fps
+ Mostar FPS
+
+
+
+
+ Mostrar velocidade de emulação
+
+
+
+
+ Mostar VPS
+
+
+
+
+ Ativar Presença Rica no Discord
+
+
+
+
+ %1%
+
+
+
+ InputBindingDialog
+
+
+
+ Edita as entradas dos botões já atribuidos
+ Editar Entradas
+
+
+
+
+ Atribuições para o Primeiro Controle/BotãoCirculo
+
+
+
+
+ Adicionar Atribuição
+
+
+
+
+ Remover Atribuição
+
+
+
+
+ Limpar Atribuições
+
+
+
+
+ Atribuições para %1 %2
+
+
+
+
+
+ Aperte Botão/Eixos... [%1]
+
+
+
+ InputBindingWidget
+
+
+
+ %1 atribuições
+
+
+
+
+
+ Aperte Botão/Eixo... [%1]
+
+
+
+ MainWindow
+
+
+
+
+
+
+ DuckStation
+
+
+
+
+ Sistema
+
+
+
+
+
+ Mudar Disco
+
+
+
+
+ Carregar Estado
+
+
+
+
+ Salvar Estado
+
+
+
+
+ Configurações
+
+
+
+
+ Tema
+
+
+
+
+
+
+
+
+
+ Ajuda
+
+
+
+
+ Depurar
+
+
+
+
+ Mudar Renderizador da GPU
+
+
+
+
+ Mudar Modo de emulação para CPU
+
+
+
+
+ barra de ferramentas
+
+
+
+
+ Iniciar Disco
+
+
+
+
+ Tela de apresentação do Playstation 1 (Clássico)
+ Iniciar BIOS
+
+
+
+
+ Escanear por novos jogos
+
+
+
+
+ Rescanear todos os Jogos
+
+
+
+
+ Desligar
+
+
+
+
+ Reiniciar
+
+
+
+
+ Pausar
+
+
+
+
+ Carregar Estado
+
+
+
+
+ Salvar Estado
+
+
+
+
+ Sair
+
+
+
+
+ Configuração do Console
+
+
+
+
+ Configuração de Controles...
+
+
+
+
+ Configuração de Atalhos...
+
+
+
+
+ Configuração da GPU
+
+
+
+
+ Tela Cheia
+
+
+
+
+ Escala de Resolução
+
+
+
+
+ Repositório no Github...
+
+
+
+
+ Rastreador de Problemas...
+
+
+
+
+ Servidor no Discord...
+
+
+
+
+ Sobre...
+
+
+
+
+ Mudar Disco...
+
+
+
+
+ Configurações de Audio...
+
+
+
+
+ Configurar lista de Jogos...
+
+
+
+
+ Configurações Gerais...
+
+
+
+
+ Configurações Avançadas...
+
+
+
+
+ Adicionar Diretório de Jogo...
+
+
+
+
+ Configurações...
+
+
+
+
+ De Arquivo...
+
+
+
+
+ Da lista de Jogos...
+
+
+
+
+ Remover Disco
+
+
+
+
+ Resumir Estado
+
+
+
+
+ Estado Global
+
+
+
+
+ Mostrar VRAM
+
+
+
+
+ Despejar cópias do CPU para a VRAM
+
+
+
+
+ Despejar cópias da VRAM para o CPU
+
+
+
+
+ Despejar Audio
+
+
+
+
+ Mostrar Estado da GPU
+
+
+
+
+ Mostrar estado do CD-Rom
+
+
+
+
+ Mostrar estado do SPU
+
+
+
+
+ Mostrar estado do Temporizador
+
+
+
+
+ Mostrar estado do MDEC
+
+
+
+
+ Captura de Tela
+
+
+
+
+ Configurações de Cartões de Memória...
+
+
+
+
+ Resumir
+
+
+
+
+ Resumir o último estado Salvo criado
+
+
+
+
+ Falha ao tentar obter informação da janela
+
+
+
+
+ Falha ao criar uma amostra de contexto da tela.
+
+
+
+
+ Falha ao tentar obter novas informações da janela
+
+
+
+
+
+ Escolha uma imagem de Disco
+
+
+
+
+ Propriedades...
+
+
+
+
+ Abrir diretório...
+
+
+
+
+ Inicio Padrão
+
+
+
+
+ Inicio Rápido
+
+
+
+
+ Inicia com a tela clássica do Playstation 1
+ Inicio Completo
+
+
+
+
+ Adicione um diretório de busca...
+
+
+
+
+
+
+
+
+
+ Padrão
+
+
+
+
+ Tema escuro
+ Fusão Escura(DarkFusion)
+
+
+
+
+ TemaQtEscuro
+
+
+
+ MemoryCardSettingsWidget
+
+
+
+ Se um dos modos de cartão de memória "cartão separado por jogo" for escolhido, esses cartões de memória serão salvos no diretório de cartões.
+
+
+
+
+ Abrir...
+
+
+
+
+ Cartão de Memória %1
+
+
+
+
+ Tipo de Cartão de Memória:
+
+
+
+
+ Procurar...
+
+
+
+
+ Caminho de Cartões de Memória compartilhados:
+
+
+
+
+ Escolha o caminho para os Cartões de Memória
+
+
+
+ QObject
+
+
+
+ Erro no Duckstation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QtHostInterface
+
+
+
+ Resumir
+
+
+
+
+ Carregar Estado
+
+
+
+
+ Resumir (%1)
+
+
+
+
+ %1 Salvar %2 (%3)
+
+
+
+
+ Jogo
+
+
+
+
+ Apagar jogos Salvos...
+
+
+
+
+ Confirma deleção de Estado Salvo
+
+
+
+
+ Tem certeza de que quer apagar todos os estados salvos %1?
+não será possivel reverter esta ação.
+
+
+
+ QtProgressCallback
+
+
+
+ DuckStation
+
+
+
+
+ Cancelar
+
+
+
+
+ Erro
+
+
+
+
+
+ Pergunta
+
+
+
+ SettingsDialog
+
+
+
+ Configurações
+
+
+
+
+ Config. Gerais
+
+
+
+
+ Config. de Console
+
+
+
+
+ Config. Lista de Jogos
+
+
+
+
+ Config. de Atalhos
+
+
+
+
+ Config. de Controle
+
+
+
+
+ Config. Cartão de Memória
+
+
+
+
+ Config. GPU
+
+
+
+
+ Config. Audio
+
+
+
+
+ Config. Avançadas
+
+
+
+
+ Valor Recomendado
+
+
+
diff --git a/src/duckstation-qt/update_translations.bat b/src/duckstation-qt/update_translations.bat
new file mode 100644
index 000000000..6f02b66ad
--- /dev/null
+++ b/src/duckstation-qt/update_translations.bat
@@ -0,0 +1,2 @@
+..\..\dep\msvc\qt\5.15.0\msvc2017_64\bin\lupdate.exe ./ -ts translations\duckstation-qt_pt.ts
+pause
\ No newline at end of file