Use Content-Type to guess files extensions for downloads with unknown names. https...
authorSoren Stoutner <soren@stoutner.com>
Sun, 27 Sep 2020 00:38:28 +0000 (17:38 -0700)
committerSoren Stoutner <soren@stoutner.com>
Sun, 27 Sep 2020 00:38:28 +0000 (17:38 -0700)
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
app/src/main/java/com/stoutner/privacybrowser/asynctasks/PrepareSaveDialog.java
app/src/main/res/values-de/strings.xml
app/src/main/res/values-es/strings.xml
app/src/main/res/values-fr/strings.xml
app/src/main/res/values-it/strings.xml
app/src/main/res/values-pt-rBR/strings.xml
app/src/main/res/values-ru/strings.xml
app/src/main/res/values-tr/strings.xml
app/src/main/res/values/strings.xml

index 600db329efa991a46e11f99b35ed3bacbb59abea..eff9c68d0f1820ccc59e7ad069394a44a38e32b9 100644 (file)
@@ -5411,7 +5411,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             }
 
             // Get the file name from the content disposition.
-            String fileNameString = PrepareSaveDialog.getFileNameFromContentDisposition(this, contentDisposition, downloadUrl);
+            String fileNameString = PrepareSaveDialog.getFileNameFromHeaders(this, contentDisposition, mimetype, downloadUrl);
 
             // Instantiate the save dialog.
             DialogFragment saveDialogFragment = SaveWebpageDialog.saveWebpage(StoragePermissionDialog.SAVE_URL, downloadUrl, formattedFileSizeString, fileNameString, userAgent,
index 5bfae1e3f3c466b92742d5d6754126ebe4c59b62..641bbe07da626092faa0987833ab6979f70bc38f 100644 (file)
@@ -24,6 +24,7 @@ import android.content.Context;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.webkit.CookieManager;
+import android.webkit.MimeTypeMap;
 
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.FragmentManager;
@@ -124,11 +125,18 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
                     formattedFileSize = context.getString(R.string.invalid_url);
 
                     // Set the file name according to the URL.
-                    fileNameString = getFileNameFromUrl(context, urlString);
+                    fileNameString = getFileNameFromUrl(context, urlString, null);
                 } else {  // The response code is not an error message.
-                    // Get the content length and disposition headers.
+                    // Get the headers.
                     String contentLengthString = httpUrlConnection.getHeaderField("Content-Length");
                     String contentDispositionString = httpUrlConnection.getHeaderField("Content-Disposition");
+                    String contentTypeString = httpUrlConnection.getContentType();
+
+                    // Remove anything after the MIME type in the content type string.
+                    if (contentTypeString.contains(";")) {
+                        // Remove everything beginning with the `;`.
+                        contentTypeString = contentTypeString.substring(0, contentTypeString.indexOf(";"));
+                    }
 
                     // Only process the content length string if it isn't null.
                     if (contentLengthString != null) {
@@ -140,7 +148,7 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
                     }
 
                     // Get the file name string from the content disposition.
-                    fileNameString = getFileNameFromContentDisposition(context, contentDispositionString, urlString);
+                    fileNameString = getFileNameFromHeaders(context, contentDispositionString, contentTypeString, urlString);
                 }
             } finally {
                 // Disconnect the HTTP URL connection.
@@ -151,7 +159,7 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
             formattedFileSize = context.getString(R.string.invalid_url);
 
             // Set the file name according to the URL.
-            fileNameString = getFileNameFromUrl(context, urlString);
+            fileNameString = getFileNameFromUrl(context, urlString, null);
         }
 
         // Return the formatted file size and name as a string array.
@@ -180,7 +188,7 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
 
     // Content dispositions can contain other text besides the file name, and they can be in any order.
     // Elements are separated by semicolons.  Sometimes the file names are contained in quotes.
-    public static String getFileNameFromContentDisposition(Context context, String contentDispositionString, String urlString) {
+    public static String getFileNameFromHeaders(Context context, String contentDispositionString, String contentTypeString, String urlString) {
         // Define a file name string.
         String fileNameString;
 
@@ -208,20 +216,20 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
                     // Remove the last character.
                     fileNameString = fileNameString.substring(0, fileNameString.length() - 1);
                 }
-            } else {  // The content disposition does not contain a filename.
+            } else {  // The headers contain no useful information.
                 // Get the file name string from the URL.
-                fileNameString = getFileNameFromUrl(context, urlString);
+                fileNameString = getFileNameFromUrl(context, urlString, contentTypeString);
             }
         } else {  // The content disposition is null.
             // Get the file name string from the URL.
-            fileNameString = getFileNameFromUrl(context, urlString);
+            fileNameString = getFileNameFromUrl(context, urlString, contentTypeString);
         }
 
         // Return the file name string.
         return fileNameString;
     }
 
-    private static String getFileNameFromUrl(Context context, String urlString) {
+    private static String getFileNameFromUrl(Context context, String urlString, String contentTypeString) {
         // Convert the URL string to a URI.
         Uri uri = Uri.parse(urlString);
 
@@ -231,6 +239,11 @@ public class PrepareSaveDialog extends AsyncTask<String, Void, String[]> {
         // Use a default file name if the last path segment is null.
         if (lastPathSegment == null) {
             lastPathSegment = context.getString(R.string.file);
+
+            if (MimeTypeMap.getSingleton().hasMimeType(contentTypeString)) {  // The content type contains a MIME type.
+                // Add the file extension that matches the MIME type.
+                lastPathSegment = lastPathSegment + "." + MimeTypeMap.getSingleton().getExtensionFromMimeType(contentTypeString);
+            }
         }
 
         // Return the last path segment as the file name.
index 289ce656d158b4c3a3bd56ca30496da5382b4587..3b1555c3ac8d75c47bff10237eebeabb5f440bcd 100644 (file)
     <!-- About Activity. -->
     <string name="about_privacy_browser">Über Privacy Browser</string>
     <string name="version">Version</string>
-    <string name="version_code">Versions-Code</string>
-    <string name="hardware">Hardware</string>
-    <string name="brand">Marke:</string>
-    <string name="manufacturer">Hersteller:</string>
-    <string name="model">Modell:</string>
-    <string name="device">Gerät:</string>
-    <string name="bootloader">Bootloader:</string>
-    <string name="radio">Radio:</string>
-    <string name="software">Software</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Build:</string>
-    <string name="security_patch">Sicherheits-Patch:</string>
-    <string name="webview_provider">WebView-Anbieter:</string>
-    <string name="webview_version">WebView-Version:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Speicher-Nutzung</string>
-    <string name="app_consumed_memory">von der App genutzter Speicher:</string>
-    <string name="app_available_memory">für die App verfügbarer Speicher:</string>
-    <string name="app_total_memory">gesamter App-Speicher:</string>
-    <string name="app_maximum_memory">maximaler App-Speicher:</string>
-    <string name="system_consumed_memory">vom System genutzter Speicher:</string>
-    <string name="system_available_memory">für das System verfügbarer Speicher:</string>
-    <string name="system_total_memory">gesamter System-Speicher:</string>
-    <string name="mebibyte">MiB</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance Sperrliste:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking Sperrliste:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Paket-Signatur</string>
-    <string name="issuer_dn">Aussteller-DN:</string>
-    <string name="subject_dn">Subject DN:</string>
-    <string name="certificate_version">Zertifikat-Version:</string>
-    <string name="serial_number">Seriennummer:</string>
-    <string name="signature_algorithm">Signaturalgorithmus:</string>
+        <string name="version_code">Versions-Code</string>
+        <string name="hardware">Hardware</string>
+            <string name="brand">Marke:</string>
+            <string name="manufacturer">Hersteller:</string>
+            <string name="model">Modell:</string>
+            <string name="device">Gerät:</string>
+            <string name="bootloader">Bootloader:</string>
+            <string name="radio">Radio:</string>
+        <string name="software">Software</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Build:</string>
+            <string name="security_patch">Sicherheits-Patch:</string>
+            <string name="webview_provider">WebView-Anbieter:</string>
+            <string name="webview_version">WebView-Version:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Speicher-Nutzung</string>
+            <string name="app_consumed_memory">von der App genutzter Speicher:</string>
+            <string name="app_available_memory">für die App verfügbarer Speicher:</string>
+            <string name="app_total_memory">gesamter App-Speicher:</string>
+            <string name="app_maximum_memory">maximaler App-Speicher:</string>
+            <string name="system_consumed_memory">vom System genutzter Speicher:</string>
+            <string name="system_available_memory">für das System verfügbarer Speicher:</string>
+            <string name="system_total_memory">gesamter System-Speicher:</string>
+            <string name="mebibyte">MiB</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance Sperrliste:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking Sperrliste:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Paket-Signatur</string>
+            <string name="issuer_dn">Aussteller-DN:</string>
+            <string name="subject_dn">Subject DN:</string>
+            <string name="certificate_version">Zertifikat-Version:</string>
+            <string name="serial_number">Seriennummer:</string>
+            <string name="signature_algorithm">Signaturalgorithmus:</string>
     <string name="permissions">Berechtigungen</string>
     <string name="privacy_policy">Datenschutzrichtlinie</string>
     <string name="changelog">Changelog</string>
index 4ddc50e48c261a88248645a2005be68c20328f48..f1bdbab9033183e0178d325d8230ba951cfddbb3 100644 (file)
     <!-- Save Dialogs. -->
     <string name="save_url">Guardar URL</string>
     <string name="save_archive">Guardar archivo</string>
+    <string name="save_text">Guardar texto</string>
     <string name="save_image">Guardar imagen</string>
     <string name="save_logcat">Guardar logcat</string>
     <string name="file_name">Nombre de archivo</string>
     <string name="invalid_url">URL inválida</string>
     <string name="ok">OK</string>
     <string name="saving_file">Guardando archivo:</string>
+    <string name="processing_image">Procesando imagen… :</string>
     <string name="file_saved">Archivo guardado:</string>
     <string name="error_saving_file">Error guardando archivo:</string>
 
     <!-- About Activity. -->
     <string name="about_privacy_browser">Acerca de Navegador Privado</string>
     <string name="version">Versión</string>
-    <string name="version_code">código de versión</string>
-    <string name="hardware">Hardware</string>
-    <string name="brand">Marca:</string>
-    <string name="manufacturer">Fabricante:</string>
-    <string name="model">Modelo:</string>
-    <string name="device">Dispositivo:</string>
-    <string name="bootloader">Cargador de arranque:</string>
-    <string name="radio">Radio:</string>
-    <string name="software">Software</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Versión de compilación:</string>
-    <string name="security_patch">Parche de seguridad:</string>
-    <string name="webview_provider">Proveedor de WebView:</string>
-    <string name="webview_version">Versión de WebView:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Uso de memoria</string>
-    <string name="app_consumed_memory">Memoria conumida de la app:</string>
-    <string name="app_available_memory">Memoria disponible de la app:</string>
-    <string name="app_total_memory">Memoria total de la app:</string>
-    <string name="app_maximum_memory">Memoria máxima de la app:</string>
-    <string name="system_consumed_memory">Memoria consumida del sistema:</string>
-    <string name="system_available_memory">Memoria disponible del sistema:</string>
-    <string name="system_total_memory">Memoria total del sistema:</string>
-    <string name="mebibyte">MiB</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Lista molesta de Fanboy:</string>
-    <string name="fanboy_social_label">Lista de bloqueo social de Fanboy:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">Ultra Privacidad:</string>
-    <string name="package_signature">Firma del paquete</string>
-    <string name="issuer_dn">DN del emisor:</string>
-    <string name="subject_dn">DN del sujeto:</string>
-    <string name="certificate_version">Versión del certificado:</string>
-    <string name="serial_number">Número de serie:</string>
-    <string name="signature_algorithm">Algoritmo de firma:</string>
+        <string name="version_code">código de versión</string>
+        <string name="hardware">Hardware</string>
+            <string name="brand">Marca:</string>
+            <string name="manufacturer">Fabricante:</string>
+            <string name="model">Modelo:</string>
+            <string name="device">Dispositivo:</string>
+            <string name="bootloader">Cargador de arranque:</string>
+            <string name="radio">Radio:</string>
+        <string name="software">Software</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Versión de compilación:</string>
+            <string name="security_patch">Parche de seguridad:</string>
+            <string name="webview_provider">Proveedor de WebView:</string>
+            <string name="webview_version">Versión de WebView:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Uso de memoria</string>
+            <string name="app_consumed_memory">Memoria conumida de la app:</string>
+            <string name="app_available_memory">Memoria disponible de la app:</string>
+            <string name="app_total_memory">Memoria total de la app:</string>
+            <string name="app_maximum_memory">Memoria máxima de la app:</string>
+            <string name="system_consumed_memory">Memoria consumida del sistema:</string>
+            <string name="system_available_memory">Memoria disponible del sistema:</string>
+            <string name="system_total_memory">Memoria total del sistema:</string>
+            <string name="mebibyte">MiB</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Lista molesta de Fanboy:</string>
+            <string name="fanboy_social_label">Lista de bloqueo social de Fanboy:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">Ultra Privacidad:</string>
+        <string name="package_signature">Firma del paquete</string>
+            <string name="issuer_dn">DN del emisor:</string>
+            <string name="subject_dn">DN del sujeto:</string>
+            <string name="certificate_version">Versión del certificado:</string>
+            <string name="serial_number">Número de serie:</string>
+            <string name="signature_algorithm">Algoritmo de firma:</string>
+        <string name="version_info_copied">Información de la versión copiada.</string>
     <string name="permissions">Permisos</string>
     <string name="privacy_policy">Política de privacidad</string>
     <string name="changelog">Historial de cambios</string>
index 9b6f5bad7a1b14f2bbbb07308dae82afcc9039f1..41d5b2b294ca4b30f49e156f92862409eafb1075 100644 (file)
     <!-- About Activity. -->
     <string name="about_privacy_browser">À propos</string>
     <string name="version">Version</string>
-    <string name="version_code">version du code</string>
-    <string name="hardware">Matériel</string>
-    <string name="brand">Marque :</string>
-    <string name="manufacturer">Constructeur :</string>
-    <string name="model">Modèle :</string>
-    <string name="device">Terminal :</string>
-    <string name="bootloader">Bootloader :</string>
-    <string name="radio">Radio :</string>
-    <string name="software">Logiciel</string>
-    <string name="android">Android :</string>
-    <string name="api">API</string>
-    <string name="build">Version :</string>
-    <string name="security_patch">MAJ de sécurité :</string>
-    <string name="webview_provider">Fournisseur WebView :</string>
-    <string name="webview_version">Version WebView :</string>
-    <string name="orbot">Orbot :</string>
-    <string name="i2p">I2P :</string>
-    <string name="openkeychain">OpenKeychain :</string>
-    <string name="easylist_label">EasyList :</string>
-    <string name="easyprivacy_label">EasyPrivacy :</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List :</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List :</string>
-    <string name="ultralist_label">UltraList :</string>
-    <string name="ultraprivacy_label">UltraPrivacy :</string>
-    <string name="package_signature">Signature de paquets</string>
-    <string name="issuer_dn">Emetteur DN :</string>
-    <string name="subject_dn">Sujet DN :</string>
-    <string name="certificate_version">Version du certificat :</string>
-    <string name="serial_number">Numéro de série :</string>
-    <string name="signature_algorithm">Algorithme de chiffrement :</string>
+        <string name="version_code">version du code</string>
+        <string name="hardware">Matériel</string>
+            <string name="brand">Marque :</string>
+            <string name="manufacturer">Constructeur :</string>
+            <string name="model">Modèle :</string>
+            <string name="device">Terminal :</string>
+            <string name="bootloader">Bootloader :</string>
+            <string name="radio">Radio :</string>
+        <string name="software">Logiciel</string>
+            <string name="android">Android :</string>
+            <string name="api">API</string>
+            <string name="build">Version :</string>
+            <string name="security_patch">MAJ de sécurité :</string>
+            <string name="webview_provider">Fournisseur WebView :</string>
+            <string name="webview_version">Version WebView :</string>
+            <string name="orbot">Orbot :</string>
+            <string name="i2p">I2P :</string>
+            <string name="openkeychain">OpenKeychain :</string>
+            <string name="easylist_label">EasyList :</string>
+            <string name="easyprivacy_label">EasyPrivacy :</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List :</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List :</string>
+            <string name="ultralist_label">UltraList :</string>
+            <string name="ultraprivacy_label">UltraPrivacy :</string>
+        <string name="package_signature">Signature de paquets</string>
+            <string name="issuer_dn">Emetteur DN :</string>
+            <string name="subject_dn">Sujet DN :</string>
+            <string name="certificate_version">Version du certificat :</string>
+            <string name="serial_number">Numéro de série :</string>
+            <string name="signature_algorithm">Algorithme de chiffrement :</string>
     <string name="permissions">Permissions</string>
     <string name="privacy_policy">Politique de confidentialité</string>
     <string name="changelog">Journal des changements</string>
index 0056084cef7398cdeefbb5e69d3310d2d0bb4422..3c040eb3abbdd0d11d0eac757b55c76e4ac318a5 100644 (file)
     <!-- Save Dialogs. -->
     <string name="save_url">Salva URL</string>
     <string name="save_archive">Salva Archivio</string>
+    <string name="save_text">Salva Testo</string>
     <string name="save_image">Salva Immagine</string>
     <string name="save_logcat">Salva il log</string>
     <string name="file_name">Nome File</string>
     <string name="webpage_mht">PaginaWeb.mht</string>
     <string name="webpage_png">PaginaWeb.png</string>
     <string name="privacy_browser_logcat_txt">Privacy Browser Logcat.txt</string>
+    <string name="privacy_browser_version_txt">Versione di Privacy Browser.txt</string>
+    <string name="privacy_browser_version_png">Versione di Privacy Browser.png</string>
     <string name="file">File</string>
     <string name="bytes">byte</string>
     <string name="unknown_size">Dimensione sconosciuta</string>
     <string name="invalid_url">URL non valida</string>
     <string name="ok">OK</string>
     <string name="saving_file">Salvataggio file:</string>
+    <string name="processing_image">Creazione immagine… :</string>
     <string name="file_saved">File salvato:</string>
     <string name="error_saving_file">Errore salvataggio file:</string>
 
     <!-- About Activity. -->
     <string name="about_privacy_browser">Informazioni su Privacy Browser</string>
     <string name="version">Versione</string>
-    <string name="version_code">codice versione</string>
-    <string name="hardware">Hardware</string>
-    <string name="brand">Brand:</string>
-    <string name="manufacturer">Costruttore:</string>
-    <string name="model">Modello:</string>
-    <string name="device">Dispositivo:</string>
-    <string name="bootloader">Bootloader:</string>
-    <string name="radio">Radio:</string>
-    <string name="software">Software</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Build:</string>
-    <string name="security_patch">Patch si sicurezza:</string>
-    <string name="webview_provider">Provider di WebView:</string>
-    <string name="webview_version">Versione di WebView:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Utilizzo della Memoria</string>
-    <string name="app_consumed_memory">Memoria utilizzata dalla App:</string>
-    <string name="app_available_memory">Memoria disponibile App:</string>
-    <string name="app_total_memory">Memoria totale App:</string>
-    <string name="app_maximum_memory">Memoria massima App:</string>
-    <string name="system_consumed_memory">Memoria di sistema utilizzata:</string>
-    <string name="system_available_memory">Memoria di sistema disponibile:</string>
-    <string name="system_total_memory">Memoria totale del sistema:</string>
-    <string name="mebibyte">MiB</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Firma del Pacchetto</string>
-    <string name="issuer_dn">Emittente:</string>
-    <string name="subject_dn">Soggetto:</string>
-    <string name="certificate_version">Versione del Certificato:</string>
-    <string name="serial_number">Numero di Serie:</string>
-    <string name="signature_algorithm">Algoritmo di firma:</string>
+        <string name="version_code">codice versione</string>
+        <string name="hardware">Hardware</string>
+            <string name="brand">Brand:</string>
+            <string name="manufacturer">Costruttore:</string>
+            <string name="model">Modello:</string>
+            <string name="device">Dispositivo:</string>
+            <string name="bootloader">Bootloader:</string>
+            <string name="radio">Radio:</string>
+        <string name="software">Software</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Build:</string>
+            <string name="security_patch">Patch si sicurezza:</string>
+            <string name="webview_provider">Provider di WebView:</string>
+            <string name="webview_version">Versione di WebView:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Utilizzo della Memoria</string>
+            <string name="app_consumed_memory">Memoria utilizzata dalla App:</string>
+            <string name="app_available_memory">Memoria disponibile App:</string>
+            <string name="app_total_memory">Memoria totale App:</string>
+            <string name="app_maximum_memory">Memoria massima App:</string>
+            <string name="system_consumed_memory">Memoria di sistema utilizzata:</string>
+            <string name="system_available_memory">Memoria di sistema disponibile:</string>
+            <string name="system_total_memory">Memoria totale del sistema:</string>
+            <string name="mebibyte">MiB</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Firma del Pacchetto</string>
+            <string name="issuer_dn">Emittente:</string>
+            <string name="subject_dn">Soggetto:</string>
+            <string name="certificate_version">Versione del Certificato:</string>
+            <string name="serial_number">Numero di Serie:</string>
+            <string name="signature_algorithm">Algoritmo di firma:</string>
+        <string name="version_info_copied">Info sulla Versione copiate.</string>
     <string name="permissions">Autorizzazioni</string>
     <string name="privacy_policy">Privacy Policy</string>
     <string name="changelog">Changelog</string>
index cd1b67cd66980f585365126c7330372d759a7742..bea892981e67739d4949100318b706101917e695 100644 (file)
     <!-- About Activity. -->
     <string name="about_privacy_browser">Sobre o Privacy Browser</string>
     <string name="version">Versão</string>
-    <string name="version_code">Código da Versão</string>
-    <string name="hardware">Hardware</string>
-    <string name="brand">Marca:</string>
-    <string name="manufacturer">Fabricante:</string>
-    <string name="model">Modelo:</string>
-    <string name="device">Dispositivo:</string>
-    <string name="bootloader">Bootloader:</string>
-    <string name="radio">Radio:</string>
-    <string name="software">Software</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Build:</string>
-    <string name="security_patch">Patch de segurança:</string>
-    <string name="webview_provider">Fornecedor WebView:</string>
-    <string name="webview_version">Versão do WebView:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Uso da Memória</string>
-    <string name="app_consumed_memory">Consumo da Memória do Aplicativo:</string>
-    <string name="app_available_memory">Memória Disponível do Aplicativo:</string>
-    <string name="app_total_memory">Memória Total do Aplicativo:</string>
-    <string name="app_maximum_memory">Memória Máxima do Aplicativo:</string>
-    <string name="system_consumed_memory">Memória Consumida do Sistema:</string>
-    <string name="system_available_memory">Memória Disponível do Sistema:</string>
-    <string name="system_total_memory">Memória Total do Sistema:</string>
-    <string name="mebibyte">MiB</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Assinatura do Pacote</string>
-    <string name="issuer_dn">DN do emissor:</string>
-    <string name="subject_dn">Assunto DN:</string>
-    <string name="certificate_version">Versão do certificado:</string>
-    <string name="serial_number">Número de série:</string>
-    <string name="signature_algorithm">Algoritmo de Assinatura:</string>
+        <string name="version_code">Código da Versão</string>
+        <string name="hardware">Hardware</string>
+            <string name="brand">Marca:</string>
+            <string name="manufacturer">Fabricante:</string>
+            <string name="model">Modelo:</string>
+            <string name="device">Dispositivo:</string>
+            <string name="bootloader">Bootloader:</string>
+            <string name="radio">Radio:</string>
+        <string name="software">Software</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Build:</string>
+            <string name="security_patch">Patch de segurança:</string>
+            <string name="webview_provider">Fornecedor WebView:</string>
+            <string name="webview_version">Versão do WebView:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Uso da Memória</string>
+            <string name="app_consumed_memory">Consumo da Memória do Aplicativo:</string>
+            <string name="app_available_memory">Memória Disponível do Aplicativo:</string>
+            <string name="app_total_memory">Memória Total do Aplicativo:</string>
+            <string name="app_maximum_memory">Memória Máxima do Aplicativo:</string>
+            <string name="system_consumed_memory">Memória Consumida do Sistema:</string>
+            <string name="system_available_memory">Memória Disponível do Sistema:</string>
+            <string name="system_total_memory">Memória Total do Sistema:</string>
+            <string name="mebibyte">MiB</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Assinatura do Pacote</string>
+            <string name="issuer_dn">DN do emissor:</string>
+            <string name="subject_dn">Assunto DN:</string>
+            <string name="certificate_version">Versão do certificado:</string>
+            <string name="serial_number">Número de série:</string>
+            <string name="signature_algorithm">Algoritmo de Assinatura:</string>
     <string name="permissions">Permissões</string>
     <string name="privacy_policy">Política de Privacidade</string>
     <string name="changelog">Changelog</string>
index aa704486a967eb8f09c1514637abba50591bcd2a..184a8d0cc005b96aeb77d89486b09681fe2fcfc5 100644 (file)
     <!-- Save Dialogs. -->
     <string name="save_url">Сохранить URL</string>
     <string name="save_archive">Сохранить архив</string>
+    <string name="save_text">Сохранить текст</string>
     <string name="save_image">Сохранить изображение</string>
     <string name="save_logcat">Сохранить logcat</string>
     <string name="file_name">Имя файла</string>
     <string name="webpage_mht">Webpage.mht</string>
     <string name="webpage_png">Webpage.png</string>
     <string name="privacy_browser_logcat_txt">Privacy Browser Logcat.txt</string>
+    <string name="privacy_browser_version_txt">Версия Privacy Browser.txt</string>
+    <string name="privacy_browser_version_png">Версия Privacy Browser.png</string>
     <string name="file">Файл</string>
     <string name="bytes">байтов</string>
     <string name="unknown_size">неизвестный размер</string>
     <string name="invalid_url">неправильный URL</string>
     <string name="ok">OK</string>
     <string name="saving_file">Сохранение файла:</string>
+    <string name="processing_image">Обработка изображения… :</string>
     <string name="file_saved">Файл сохранен:</string>
     <string name="error_saving_file">Ошибка сохранения файла:</string>
 
     <!-- About Activity. -->
     <string name="about_privacy_browser">О Privacy Browser</string>
     <string name="version">Версия</string>
-    <string name="version_code">код версии</string>
-    <string name="hardware">Оборудование</string>
-    <string name="brand">Бренд:</string>
-    <string name="manufacturer">Производитель:</string>
-    <string name="model">Модель:</string>
-    <string name="device">Устройство:</string>
-    <string name="bootloader">Загрузчик:</string>
-    <string name="radio">Радио:</string>
-    <string name="software">Программное обеспечение</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Сборка:</string>
-    <string name="security_patch">Патч безопасности:</string>
-    <string name="webview_provider">Провайдер WebView:</string>
-    <string name="webview_version">Версия WebView:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Использование памяти</string>
-    <string name="app_consumed_memory">Потребляемая приложением память:</string>
-    <string name="app_available_memory">Доступная приложению память:</string>
-    <string name="app_total_memory">Общая память приложения:</string>
-    <string name="app_maximum_memory">Максимальная память приложения:</string>
-    <string name="system_consumed_memory">Потребляемая системой память:</string>
-    <string name="system_available_memory">Доступная системе память:</string>
-    <string name="system_total_memory">Общая память системы:</string>
-    <string name="mebibyte">МиБ</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Подпись пакета</string>
-    <string name="issuer_dn">DN эмитента:</string>
-    <string name="subject_dn">DN субъекта:</string>
-    <string name="certificate_version">Версия сертификата:</string>
-    <string name="serial_number">Серийный номер:</string>
-    <string name="signature_algorithm">Алгоритм подписи:</string>
+        <string name="version_code">код версии</string>
+        <string name="hardware">Оборудование</string>
+            <string name="brand">Бренд:</string>
+            <string name="manufacturer">Производитель:</string>
+            <string name="model">Модель:</string>
+            <string name="device">Устройство:</string>
+            <string name="bootloader">Загрузчик:</string>
+            <string name="radio">Радио:</string>
+        <string name="software">Программное обеспечение</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Сборка:</string>
+            <string name="security_patch">Патч безопасности:</string>
+            <string name="webview_provider">Провайдер WebView:</string>
+            <string name="webview_version">Версия WebView:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Использование памяти</string>
+            <string name="app_consumed_memory">Потребляемая приложением память:</string>
+            <string name="app_available_memory">Доступная приложению память:</string>
+            <string name="app_total_memory">Общая память приложения:</string>
+            <string name="app_maximum_memory">Максимальная память приложения:</string>
+            <string name="system_consumed_memory">Потребляемая системой память:</string>
+            <string name="system_available_memory">Доступная системе память:</string>
+            <string name="system_total_memory">Общая память системы:</string>
+            <string name="mebibyte">МиБ</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Подпись пакета</string>
+            <string name="issuer_dn">DN эмитента:</string>
+            <string name="subject_dn">DN субъекта:</string>
+            <string name="certificate_version">Версия сертификата:</string>
+            <string name="serial_number">Серийный номер:</string>
+            <string name="signature_algorithm">Алгоритм подписи:</string>
+        <string name="version_info_copied">Информация о версии скопирована.</string>
     <string name="permissions">Разрешения</string>
     <string name="privacy_policy">Политика конфиденциальности</string>
     <string name="changelog">История изменений</string>
index 883b46d641e98dd7d425bdd5531def362e317e1a..b6570695734397110ebfd405ea0dcf74d59a4c81 100644 (file)
     <!-- About Activity. -->
     <string name="about_privacy_browser">Privacy Browser Hakkında</string>
     <string name="version">Versiyon</string>
-    <string name="version_code">versiyon kodu</string>
-    <string name="hardware">Donanım</string>
-    <string name="brand">Marka:</string>
-    <string name="manufacturer">Üretici:</string>
-    <string name="model">Model:</string>
-    <string name="device">Cihaz:</string>
-    <string name="bootloader">Bootloader:</string>
-    <string name="radio">Donanım Yazılımı:</string>
-    <string name="software">Yazılım</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Derleme:</string>
-    <string name="security_patch">Güvenlik Yaması:</string>
-    <string name="webview_provider">WebView Sağlayıcısı:</string>
-    <string name="webview_version">WebView Versiyonu:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Paket İmzası</string>
-    <string name="issuer_dn">Yayınlayan DN:</string>
-    <string name="subject_dn">Özne DN:</string>
-    <string name="certificate_version">Sertifika Versiyonu:</string>
-    <string name="serial_number">Seri Numarası:</string>
-    <string name="signature_algorithm">İmza Algoritması:</string>
+        <string name="version_code">versiyon kodu</string>
+        <string name="hardware">Donanım</string>
+            <string name="brand">Marka:</string>
+            <string name="manufacturer">Üretici:</string>
+            <string name="model">Model:</string>
+            <string name="device">Cihaz:</string>
+            <string name="bootloader">Bootloader:</string>
+            <string name="radio">Donanım Yazılımı:</string>
+        <string name="software">Yazılım</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Derleme:</string>
+            <string name="security_patch">Güvenlik Yaması:</string>
+            <string name="webview_provider">WebView Sağlayıcısı:</string>
+            <string name="webview_version">WebView Versiyonu:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Paket İmzası</string>
+            <string name="issuer_dn">Yayınlayan DN:</string>
+            <string name="subject_dn">Özne DN:</string>
+            <string name="certificate_version">Sertifika Versiyonu:</string>
+            <string name="serial_number">Seri Numarası:</string>
+            <string name="signature_algorithm">İmza Algoritması:</string>
     <string name="permissions">İzinler</string>
     <string name="privacy_policy">Privacy Politikası</string>
     <string name="changelog">Değişiklik Günlüğü</string>
index 9bf2ae80679fad09fb6137bc53c9b023b7f512ef..517fb2680b37fd2e39c9fd47559cf65c3b88b221 100644 (file)
     <!-- About Activity. -->
     <string name="about_privacy_browser">About Privacy Browser</string>
     <string name="version">Version</string>
-    <string name="version_code">version code</string>
-    <string name="hardware">Hardware</string>
-    <string name="brand">Brand:</string>
-    <string name="manufacturer">Manufacturer:</string>
-    <string name="model">Model:</string>
-    <string name="device">Device:</string>
-    <string name="bootloader">Bootloader:</string>
-    <string name="radio">Radio:</string>
-    <string name="software">Software</string>
-    <string name="android">Android:</string>
-    <string name="api">API</string>
-    <string name="build">Build:</string>
-    <string name="security_patch">Security Patch:</string>
-    <string name="webview_provider">WebView Provider:</string>
-    <string name="webview_version">WebView Version:</string>
-    <string name="orbot">Orbot:</string>
-    <string name="i2p">I2P:</string>
-    <string name="openkeychain">OpenKeychain:</string>
-    <string name="memory_usage">Memory Usage</string>
-    <string name="app_consumed_memory">App Consumed Memory:</string>
-    <string name="app_available_memory">App Available Memory:</string>
-    <string name="app_total_memory">App Total Memory:</string>
-    <string name="app_maximum_memory">App Maximum Memory:</string>
-    <string name="system_consumed_memory">System Consumed Memory:</string>
-    <string name="system_available_memory">System Available Memory:</string>
-    <string name="system_total_memory">System Total Memory:</string>
-    <string name="mebibyte">MiB</string>
-    <string name="easylist_label">EasyList:</string>
-    <string name="easyprivacy_label">EasyPrivacy:</string>
-    <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
-    <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
-    <string name="ultralist_label">UltraList:</string>
-    <string name="ultraprivacy_label">UltraPrivacy:</string>
-    <string name="package_signature">Package Signature</string>
-    <string name="issuer_dn">Issuer DN:</string>
-    <string name="subject_dn">Subject DN:</string>
-    <string name="certificate_version">Certificate Version:</string>
-    <string name="serial_number">Serial Number:</string>
-    <string name="signature_algorithm">Signature Algorithm:</string>
+        <string name="version_code">version code</string>
+        <string name="hardware">Hardware</string>
+            <string name="brand">Brand:</string>
+            <string name="manufacturer">Manufacturer:</string>
+            <string name="model">Model:</string>
+            <string name="device">Device:</string>
+            <string name="bootloader">Bootloader:</string>
+            <string name="radio">Radio:</string>
+        <string name="software">Software</string>
+            <string name="android">Android:</string>
+            <string name="api">API</string>
+            <string name="build">Build:</string>
+            <string name="security_patch">Security Patch:</string>
+            <string name="webview_provider">WebView Provider:</string>
+            <string name="webview_version">WebView Version:</string>
+            <string name="orbot">Orbot:</string>
+            <string name="i2p">I2P:</string>
+            <string name="openkeychain">OpenKeychain:</string>
+        <string name="memory_usage">Memory Usage</string>
+            <string name="app_consumed_memory">App Consumed Memory:</string>
+            <string name="app_available_memory">App Available Memory:</string>
+            <string name="app_total_memory">App Total Memory:</string>
+            <string name="app_maximum_memory">App Maximum Memory:</string>
+            <string name="system_consumed_memory">System Consumed Memory:</string>
+            <string name="system_available_memory">System Available Memory:</string>
+            <string name="system_total_memory">System Total Memory:</string>
+            <string name="mebibyte">MiB</string>
+            <string name="easylist_label">EasyList:</string>
+            <string name="easyprivacy_label">EasyPrivacy:</string>
+            <string name="fanboy_annoyance_label">Fanboy’s Annoyance List:</string>
+            <string name="fanboy_social_label">Fanboy’s Social Blocking List:</string>
+            <string name="ultralist_label">UltraList:</string>
+            <string name="ultraprivacy_label">UltraPrivacy:</string>
+        <string name="package_signature">Package Signature</string>
+            <string name="issuer_dn">Issuer DN:</string>
+            <string name="subject_dn">Subject DN:</string>
+            <string name="certificate_version">Certificate Version:</string>
+            <string name="serial_number">Serial Number:</string>
+            <string name="signature_algorithm">Signature Algorithm:</string>
+        <string name="version_info_copied">Version info copied.</string>
     <string name="permissions">Permissions</string>
     <string name="privacy_policy">Privacy Policy</string>
     <string name="changelog">Changelog</string>
     <string name="licenses">Licenses</string>
     <string name="contributors">Contributors</string>
     <string name="links">Links</string>
-    <string name="version_info_copied">Version info copied.</string>
-    <string name="email">Email</string>  <!-- This is a verb. -->
 
     <!-- Preferences. -->
     <string name="privacy">Privacy</string>