Skip to content

Commit

Permalink
v2.7.4
Browse files Browse the repository at this point in the history
  • Loading branch information
johannes-schliephake committed Aug 29, 2024
2 parents c61b37f + 29dc6b1 commit 1546238
Show file tree
Hide file tree
Showing 22 changed files with 627 additions and 113 deletions.
4 changes: 4 additions & 0 deletions App/gl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Escanear código QR";
"CFBundleDisplayName" = "Contrasinais";
"NSPhotoLibraryAddUsageDescription" = "Compartir código QR";
"NSFaceIDUsageDescription" = "Desbloquear a aplicación";
4 changes: 4 additions & 0 deletions App/pl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"NSPhotoLibraryAddUsageDescription" = "Udostępnij kod QR";
"CFBundleDisplayName" = "Hasła";
"NSCameraUsageDescription" = "Skanuj kodu QR";
"NSFaceIDUsageDescription" = "Odblokuj aplikację";
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## [v2.7.4] - 2024-08-29
- Galician translation (Thanks Miguel A. Bouzada!)
- Polish translation (Thanks Radosław Rudner!)
- Optimizations

## [v2.7.3] - 2024-07-25
- Ukrainian translation (Thanks Markevych Dmytro!)
- Upgraded more parts of the app to new architecture
Expand Down
4 changes: 4 additions & 0 deletions Extension/gl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"CFBundleDisplayName" = "Insira o contrasinal dun só uso";
"NSCameraUsageDescription" = "Escanear código QR";
"NSFaceIDUsageDescription" = "Desbloquear a aplicación";
"NSPhotoLibraryAddUsageDescription" = "Compartir código QR";
4 changes: 4 additions & 0 deletions Extension/pl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
"NSPhotoLibraryAddUsageDescription" = "Udostępnij kod QR";
"CFBundleDisplayName" = "Wstaw jednorazowe hasło";
"NSCameraUsageDescription" = "Skanuj kodu QR";
"NSFaceIDUsageDescription" = "Odblokuj aplikację";
70 changes: 58 additions & 12 deletions Passwords.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions Provider/gl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"NSCameraUsageDescription" = "Escanear código QR";
"NSFaceIDUsageDescription" = "Desbloquear a aplicación";
"NSPhotoLibraryAddUsageDescription" = "Compartir código QR";
3 changes: 3 additions & 0 deletions Provider/pl.lproj/InfoPlist.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"NSPhotoLibraryAddUsageDescription" = "Udostępnij kod QR";
"NSCameraUsageDescription" = "Skanuj kodu QR";
"NSFaceIDUsageDescription" = "Odblokuj aplikację";
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ You can install beta builds by joining the [TestFlight](https://testflight.apple
- Catalan: [Maite Guix](https://hosted.weblate.org/user/maite.guix)
- Swedish: [Anders Johansson](https://github.com/tellustheguru)
- Ukrainian: [Markevych Dmytro](https://github.com/Hotr1pak)
- Galician: [Miguel A. Bouzada](https://github.com/mbouzada)
- Polish: [Radosław Rudner](https://hosted.weblate.org/user/rudass)

Everybody is welcome to contribute translations via [Weblate](https://hosted.weblate.org/engage/nextcloud-passwords-ios)!

Expand Down
10 changes: 9 additions & 1 deletion Shared/Views/Components/WebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ struct WebView: UIViewRepresentable {
}
let webView = BottomlessWKWebView(frame: .zero, configuration: configuration)
webView.navigationDelegate = context.coordinator
webView.uiDelegate = context.coordinator
webView.isOpaque = false
webView.customUserAgent = userAgent
#if DEBUG
Expand All @@ -55,7 +56,7 @@ struct WebView: UIViewRepresentable {

extension WebView {

final class Coordinator: NSObject, WKNavigationDelegate {
final class Coordinator: NSObject, WKNavigationDelegate, WKUIDelegate {

private let webView: WebView
fileprivate(set) var latestRequest: URLRequest?
Expand All @@ -73,6 +74,13 @@ extension WebView {
webView.request = navigationAction.request
}

func webView(_ webView: WKWebView, createWebViewWith _: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures _: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
webView.load(navigationAction.request)
}
return nil
}

func webView(_: WKWebView, respondTo challenge: URLAuthenticationChallenge) async -> (URLSession.AuthChallengeDisposition, URLCredential?) {
guard let trust = challenge.protectionSpace.serverTrust,
await webView.checkTrust?(trust) == true else {
Expand Down
161 changes: 161 additions & 0 deletions Shared/gl.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
"_addTags" = "Engadir etiquetas";
"_addManually" = "Engadir manualmente";
"_algorithm" = "Algoritmo";
"_all" = "Todo";
"_anErrorOccurred" = "Produciuse un erro…";
"_cancel" = "Cancelar";
"_deleteFolderErrorMessage" = "Produciuse un erro ao eliminar o cartafol. Elimine o cartafol de novo.";
"_edit" = "Editar";
"_deletePasswordErrorMessage" = "Produciuse un erro ao eliminar o contrasinal. Elimine o contrasinal de novo.";
"_deleteTagErrorMessage" = "Produciuse un erro ao eliminar a etiqueta. Elimine a etiqueta de novo.";
"_editTags" = "Editar etiquetas";
"_digits" = "Díxitos";
"_e2ePassword" = "Contrasinal E2E";
"_editPasswordErrorMessage" = "Produciuse un erro ao editar o contrasinal. Garde o contrasinal de novo.";
"_editTagErrorMessage" = "Produciuse un erro ao editar a etiqueta. Garde a etiqueta de novo.";
"_email" = "Correo-e";
"_extractOtpErrorMessage" = "Produciuse un erro ao buscar un código QR na imaxe seleccionada.";
"_favorite" = "Favorito";
"_generatePassword" = "Xerar contrasinal";
"_file" = "Ficheiro";
"_folder" = "Cartafol";
"_folders" = "Cartafoles";
"_giveATip" = "Dar unha adealla";
"_highFive" = "High Five! 👏";
"_id" = "ID";
"_incorrectPassword" = "Contrasinal incorrecto";
"_clearStoredE2EPassword" = "Limpar o contrasinal E2E almacenado";
"_clientSide" = "Do lado do cliente";
"_color" = "Cor";
"_aboutOtps" = "Sobre os contrasinais dun só uso";
"_addCustomField" = "Engadir campo personalizado";
"_addOtp" = "Engadir contrasinal dun só uso";
"_appDeauthorized" = "Aplicación desautorizada";
"_appDeauthorizedMessage" = "Por mor de moitos intentos de acceso fallados, esta aplicación foi desautorizada polo servidor. Ténteo de novo máis tarde.";
"_automaticallyGeneratePasswords" = "Xerar contrasinais automaticamente";
"_configured" = "Configurado";
"_confirm" = "Confirmar";
"_confirmAction" = "Confirmar a acción";
"_connect" = "Conectar";
"_connectingToNextcloudInstanceAt(url)" = "Conectando coa instancia de Nextcloud en\n%@";
"_connectToServer" = "Conectar co servidor";
"_copyOtp" = "Copiar o contrasinal dun só uso";
"_copyPassword" = "Copiar o contrasinal";
"_copyUsername" = "Copiar o nome de usuario";
"_created" = "Creado";
"_createFolder" = "Crear cartafol";
"_createFolderErrorMessage" = "Produciuse un erro ao crear o cartafol. Garde o cartafol de novo.";
"_createPassword" = "Crear contrasinal";
"_createPasswordErrorMessage" = "Produciuse un erro ao crear o contrasinal. Garde o contrasinal de novo.";
"_deletePassword" = "Eliminar contrasinal";
"_deleteTag" = "Eliminar etiqueta";
"_detectQrCodeInPicture" = "Detectar código QR na imaxe";
"_discardChanges" = "Desbotar cambios";
"_done" = "Feito";
"_duplicates" = "Duplicados";
"_duplicatesTrashMessage" = "Todos os duplicados deste contrasinal atópanse no lixo.";
"_dismiss" = "Desbotar";
"_editFolderErrorMessage" = "Produciuse un erro ao editar o cartafol. Garde o cartafol de novo.";
"_editPassword" = "Editar contrasinal";
"_encryptedOfflineStorage" = "Almacenamento cifrado sen conexión";
"_encryption" = "Cifrado";
"_error" = "Erro";
"_exportAsQrCode" = "Exportar como código QR";
"_favorites" = "Favoritos";
"_hash" = "Resumo (criptográfico)";
"_incorrectPasswordMessage" = "Ténteo de novo.";
"_integration" = "Integración";
"_invalidCertificate" = "Certificado non válido";
"_joinTestFlightBeta" = "Únase a TestFlight Beta";
"_logIn" = "Acceder";
"_low" = "Baixa";
"_metadata" = "Metadatos";
"_moreOptions" = "Máis opcións";
"_move" = "Mover";
"_name" = "Nome";
"_noConnectionMessage" = "Non foi posíbel conectar coa instancia de contrasinais de Nextcloud.";
"_otp" = "Contrasinal dun só uso";
"_openUrl" = "Abrir o URL";
"_password" = "Contrasinal";
"_passwordStatusUnknownMessage" = "Aínda non se comprobou a súa seguranza deste contrasinal ou a opción de almacenar resumos para as comprobacións de seguranza está desactivada.";
"_qrCaptureErrorMessage" = "Produciuse un erro ao iniciar a cámara.";
"_reject" = "Rexeitar";
"_rootFolder" = "Cartafol raíz";
"_scanQrCode" = "Escanear o código QR";
"_selectColor" = "Seleccionar a cor";
"_serverAddressFieldMessage" = "Requírese unha conexión HTTPS.";
"_sourceCode" = "Código fonte";
"_settings" = "Axustes";
"_storePassword" = "Almacenar";
"_text" = "Texto";
"_tipDeferred" = "Adealla aprazada";
"_tipDeferredMessage" = "A súa adealla está a agardar aprobación.";
"_tipFailed" = "Adealla fallada";
"_tryAgain" = "Ténteo de novo";
"_tipReceived" = "Adealla recibida";
"_tipReceivedMessage" = "Grazas por apoiar este proxecto coa súa adealla!";
"_ultra" = "Máxima";
"_updated" = "Actualizado";
"_url" = "URL";
"_username" = "Nome de usuario";
"_valueCopied" = "Valor copiado";
"_counter" = "Contador";
"_version" = "Versión";
"_counterBased" = "En función do contador";
"_create" = "Crear";
"_timeBased" = "En función do tempo";
"_serverSide" = "Do lado do servidor";
"_deleteOtp" = "Eliminar o contrasinal dun só uso";
"_invalidCertificateMessage(hash)" = "O certificado do servidor non é válido. Non é posíbel garantir unha conexión segura. Debe seguir a empregarse o certificado?\n\nSHA-256 do certificado:\n%@";
"_about" = "Sobre";
"_createTag" = "Crear etiqueta";
"_createTagErrorMessage" = "Produciuse un erro ao crear a etiqueta. Garde a etiqueta de novo.";
"_credentials" = "Credenciais";
"_customFields" = "Campos personalizados";
"_logOut" = "Saír";
"_decryptFolderErrorMessage" = "Produciuse un erro ao descifrar o cartafol.";
"_decryptTagErrorMessage" = "Produciuse un erro ao descifrar a etiqueta.";
"_decryptPasswordErrorMessage" = "Produciuse un erro ao descifrar o contrasinal.";
"_deletedPasswordMessage" = "Este contrasinal foi eliminado.";
"_deleteFolder" = "Eliminar cartafol";
"_delete" = "Eliminar";
"_aboutOtpsMessage" = "Esta aplicación admite contrasinais dun só uso só por comodidade. Almacenar o seu contrasinal dun só uso xunto co contrasinal da súa conta elimina algúns dos beneficios de seguranza da autenticación multifactor. Activar un segundo factor é mellor que non usar ningún, mais unha aplicación independente dun contrasinal dun só uso será máis segura. NON garde contrasinais dun só uso para a súa conta de Nextcloud ou contas críticas, coma o correo-e ou contas de banca en liña. Os contrasinais dun só uso sincronizaranse coa súa instancia de Contrasinais de Nextcloud, mais actualmente só son compatíbeis coa aplicación iOS (v2.6 ou posterior).";
"_accept" = "Acepto";
"_account" = "Conta";
"_managedServerUrlErrorMessage" = "O enderezo do servidor Nextcloud foi preconfigurado, mais a aplicación non foi quen de conectarse á instancia de Nextcloud. Póñase en contacto coa administración da instancia.";
"_medium" = "Media";
"_options" = "Opcións";
"_otps" = "Contrasinais dun só uso";
"_passwords" = "Contrasinais";
"_passwordServiceErrorMessage" = "Produciuse un erro ao xerar o contrasinal.";
"_periodSeconds" = "Lapso (segundos)";
"_secret" = "Segredo";
"_security" = "Seguridade";
"_select" = "Seleccionar";
"_service" = "Servizo";
"_shareQrCode" = "Compartir o código QR";
"_specialCharacters" = "Caracteres especiais";
"_strength" = "Fortaleza";
"_supportThisProject" = "Apoiar este proxecto";
"_storePasswordMessage" = "Se esta opción está activada, o contrasinal E2E almacénase cifrado no chaveiro do seu dispositivo.";
"_tag" = "Etiqueta";
"_suggestions" = "Suxestións";
"_tags" = "Etiquetas";
"_universalClipboard" = "Portapapeis universal";
"_tipFailedMessage" = "Produciuse un erro ao procesar a súa adealla.";
"_type" = "Tipo";
"_unlockApp" = "Desbloquear a aplicación";
"_passwordStatusBreachedMessage" = "Este contrasinal non é seguro. Foi atopado nunha base de datos de contrasinais comprometidos.";
"_nextcloudServerAddress" = "Enderezo do servidor de Nextcloud";
"_notes" = "Notas";
"_noConnection" = "Non hai conexión";
"_nothingToSeeHere" = "Non hai nada que ver aquí…";
"_numbers" = "Números";
"_offline" = "Sen conexión";
"_passwordStatusDuplicateMessage" = "Este contrasinal está a ser usado máis dunha vez.";
"_passwordStatusGoodMessage" = "Este contrasinal é seguro. Non foi comprometido e non infrinxe as regras de seguranza definidas.";
"_providerInstructionsMessage" = "Esta aplicación admite a enchedura automática de contrasinais. A función ten que estar activada na aplicación de Axustes de iOS:\n1. Abra a aplicación Axustes\n2. Toque en Contrasinais\n3. Toque en Enchedura automática de contrasinais\n4. Active a Enchedura automática de contrasinais\n5. Active esta aplicación";
"_passwordStatusOutdatedMessage" = "Este contrasinal acadou a duración límite.";
"_shareOtpWarningMessage" = "Este código QR contén datos moi sensíbeis sobre o contrasinal dun só uso";
"_supportThisProjectMessage" = "A versión TestFlight desta aplicación está instalada. As compras realizanse só a efecto de probas e non van ser facturadas.";
"_thanksMessage" = "Grazas a toda a comunidade Nextcloud e a todos os implicados por facer posíbel un ecosistema tan incrible. Agardo poder achegar algo con esta aplicación.";
Loading

0 comments on commit 1546238

Please sign in to comment.