summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2013-02-05 09:49:06 +0100
committerArne Schwabe <arne@rfc2549.org>2013-02-05 09:49:06 +0100
commit1a65622af5d97bfcf56c84e90e40bfd0b214e43b (patch)
treed4ba0b20e995fd9cfc5030c3d889c2a963b10b73
parent84ccab8d6510835316b0a89085dae31801bd50dc (diff)
Fix Locale related errors/bugs. Update … to unicode replacement. Fix the speed display.
-rw-r--r--AndroidManifest.xml8
-rw-r--r--openvpn/config.h2
-rw-r--r--res/layout/basic_settings.xml2
-rwxr-xr-xres/values-ca/strings.xml6
-rwxr-xr-xres/values-es/strings.xml6
-rwxr-xr-xres/values-fr/strings.xml6
-rwxr-xr-xres/values-id/strings.xml16
-rwxr-xr-xres/values-it/strings.xml4
-rwxr-xr-xres/values-ko/strings.xml4
-rwxr-xr-xres/values-no/strings.xml6
-rwxr-xr-xres/values-ro/strings.xml4
-rwxr-xr-xres/values-uk/strings.xml4
-rwxr-xr-xres/values-zh-rCN/strings.xml38
-rwxr-xr-xres/values-zh-rTW/strings.xml2
-rwxr-xr-xres/values/strings.xml4
-rw-r--r--src/de/blinkt/openvpn/CIDRIP.java4
-rw-r--r--src/de/blinkt/openvpn/FileSelectionFragment.java5
-rw-r--r--src/de/blinkt/openvpn/OpenVPN.java1
-rw-r--r--src/de/blinkt/openvpn/OpenVpnManagementThread.java3
-rw-r--r--src/de/blinkt/openvpn/OpenVpnService.java19
-rw-r--r--src/de/blinkt/openvpn/Settings_Basic.java17
-rw-r--r--src/de/blinkt/openvpn/VpnProfile.java8
22 files changed, 98 insertions, 71 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4d0d183f..c37199ec 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -30,7 +30,7 @@
<uses-sdk
android:minSdkVersion="15"
- android:targetSdkVersion="15" />
+ android:targetSdkVersion="17" />
<permission
android:name="de.blinkt.openvpn.REMOTE_API"
@@ -42,7 +42,8 @@
<application
android:allowBackup="true"
android:icon="@drawable/icon"
- android:label="@string/app" >
+ android:label="@string/app"
+ android:supportsRtl="true" >
<activity android:name=".AboutFragment" />
<activity
android:name=".VPNPreferences"
@@ -110,7 +111,8 @@
<data android:mimeType="application/ovpn" />
</intent-filter>
<intent-filter android:label="@string/import_config" >
- <!-- http://stackoverflow.com/questions/7030832/associating-certain-file-extension-to-my-android-application/7102838#7102838 -->
+
+ <!-- http://stackoverflow.com/questions/7030832/associating-certain-file-extension-to-my-android-application/7102838#7102838 -->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
diff --git a/openvpn/config.h b/openvpn/config.h
index 0d86c1d9..f72e8b70 100644
--- a/openvpn/config.h
+++ b/openvpn/config.h
@@ -456,7 +456,7 @@
#define PACKAGE_TARNAME "openvpn"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.3_beta1"
+#define PACKAGE_VERSION "2.3_master"
/* Define to the necessary symbol if this constant uses a non-standard name on
your system. */
diff --git a/res/layout/basic_settings.xml b/res/layout/basic_settings.xml
index d37bc37a..d8f39a83 100644
--- a/res/layout/basic_settings.xml
+++ b/res/layout/basic_settings.xml
@@ -23,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:padding="3mm" >
+ android:padding="4dp" >
<TextView
style="@style/item"
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b9f2f07c..86d7c823 100755
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -20,7 +20,7 @@
<string name="vpn_list_title">Perfils VPN</string>
<string name="vpn_type">Tipus</string>
<string name="pkcs12pwquery">Contrasenya PKCS12</string>
- <string name="file_select">Selecciona...</string>
+ <string name="file_select">Selecciona…</string>
<string name="useTLSAuth">Utiltiza autenticació TLS</string>
<string name="tls_direction">Direcció TLS</string>
<string name="ipv6_dialog_tile">Introduïu l\'adreça/mascara de xarxa IPv6 en format CIDR Format (e.g. 2000:dd::23/64)</string>
@@ -90,7 +90,7 @@
<string name="import_vpn">Importa</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">Esperant el missatge d\'estat...</string>
+ <string name="speed_waiting">Esperant el missatge d\'estat…</string>
<string name="converted_profile">Perfil importat</string>
<string name="converted_profile_i">Perfil importat %d</string>
<string name="broken_images">Imatges trencades</string>
@@ -103,7 +103,7 @@
<string name="owner_fix">Corregir els permisos de /dev/tun</string>
<string name="generated_config_summary">Mostra el fitxer de configuració d\'OpenVPN generat</string>
<string name="edit_profile_title">Editant \"%s\"</string>
- <string name="building_configration">Construint la configuració...</string>
+ <string name="building_configration">Construint la configuració…</string>
<string name="netchange">Reconecta al canviar de xarxa</string>
<string name="netstatus">Estat de la xarxa %s</string>
<string name="select_file">Selecciona</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 521985db..8e1b3a5a 100755
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -24,7 +24,7 @@
<string name="vpn_list_title">Perfiles VPN</string>
<string name="vpn_type">Tipo</string>
<string name="pkcs12pwquery">Contraseña PKCS12</string>
- <string name="file_select">Seleccionar...</string>
+ <string name="file_select">Seleccionar…</string>
<string name="file_nothing_selected">Debe seleccionar un archivo</string>
<string name="useTLSAuth">Utilizar la autenticación TLS</string>
<string name="tls_direction">Dirección TLS</string>
@@ -153,7 +153,7 @@
<string name="broken_image_cert">Se obtuvo una excepción al intentar mostrar el diálogo de selección de certificado de Android 4.0+. Esto nunca debería ocurrir por ser una funcionalidad estándar de Android 4.0+. Quizás el respaldo ROM para almacenamiento de certificados de su Android está arruinado</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">Esperando el mensaje de estado...</string>
+ <string name="speed_waiting">Esperando el mensaje de estado…</string>
<string name="converted_profile">perfil importado</string>
<string name="converted_profile_i">perfil importado %d</string>
<string name="broken_images">Imágenes rotas</string>
@@ -169,7 +169,7 @@
<string name="owner_fix">Arreglar la propiedad de /dev/tun</string>
<string name="generated_config_summary">Muestra el archivo de configuración OpenVPN generado</string>
<string name="edit_profile_title">Editando \"%s\"</string>
- <string name="building_configration">Construyendo configuracion...</string>
+ <string name="building_configration">Construyendo configuracion…</string>
<string name="netchange_summary">Turning this option on will force a reconnect if the network state is changed (e.g. WiFi to/from mobile)</string>
<string name="netchange">Reconectar en cambio de red</string>
<string name="cert_from_keystore">Conseguido el certificado de \'%s\' de almacén de claves</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 9da62050..e7048048 100755
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -24,7 +24,7 @@
<string name="vpn_list_title">"Vos VPNs"</string>
<string name="vpn_type">"Type"</string>
<string name="pkcs12pwquery">"Mot de passe PKCS12"</string>
- <string name="file_select">"Sélectionner..."</string>
+ <string name="file_select">"Sélectionner…"</string>
<string name="useTLSAuth">"Utiliser l\'authentification TLS"</string>
<string name="tls_direction">"Direction de l\'authentification TLS"</string>
<string name="ipv6_dialog_tile">"Entrez l\'adresse IPv6 / masque de réseau au format CIDR (ex.: 2000:jj::23/64)"</string>
@@ -152,7 +152,7 @@
<string name="broken_image_cert">"Exception en essayant d\'afficher le dialogue de sélection du certification d\'Android 4.0+. Ceci ne devrait pas se produire car c\'est une des fonctionnalités de base de ce système. Il est donc possible que votre ROM ne supporte pas le stockage de certfiicats."</string>
<string name="ipv4">"IPv4"</string>
<string name="ipv6">"IPv6"</string>
- <string name="speed_waiting">"Attente du status..."</string>
+ <string name="speed_waiting">"Attente du status…"</string>
<string name="converted_profile">"profil importé"</string>
<string name="converted_profile_i">"profil importé: %d"</string>
<string name="broken_images">"Images corrompues "</string>
@@ -169,7 +169,7 @@
<string name="owner_fix">"Corriger le propriétaire de /dev/tun"</string>
<string name="generated_config_summary">"Affiche le fichier de configuration OpenVPN généré"</string>
<string name="edit_profile_title">"Modification \"%s\""</string>
- <string name="building_configration">"Création de la configuration ..."</string>
+ <string name="building_configration">"Création de la configuration…"</string>
<string name="netchange_summary">"L\'activation de cette option forcera l\'appareil à se reconnecter si l\'état du réseau change (ex.: WIFI/Mobile)"</string>
<string name="netchange">"Reconnexion lors de changement du réseau"</string>
<string name="cert_from_keystore">"Certificat \'%s\' obtenu"</string>
diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml
index 857cde22..50459a66 100755
--- a/res/values-id/strings.xml
+++ b/res/values-id/strings.xml
@@ -18,7 +18,7 @@
<string name="no_certificate">Anda harus memilih sertifikat</string>
<string name="copyright_guicode">Kode program dan perekam masalah tersedia di</string>
<string name="copyright_others">Aplikasi memakai komponen berikut; lihat kode program untuk lebih jelas mengenai lisensi</string>
- <string name="about">Tentang...</string>
+ <string name="about">Tentang…</string>
<string name="about_summary">Tentang OpenVPN untuk Android</string>
<string name="vpn_list_summary">Daftar konfigurasi VPN</string>
<string name="vpn_list_title">Profil VPN</string>
@@ -103,8 +103,8 @@
<string name="dns_domain_info">Domain DNS : %s</string>
<string name="routes_info">Rute: %s</string>
<string name="routes_info6">Rute IPv6: %s</string>
- <string name="ip_not_cidr">Memilki informasi antarmuka %1$ s dan %2$, asumsi alamat kedua adalah alamat remote. Menggunakan netmask /32 untuk IP lokal. Mode yang diberikan oleh OpenVPN adalah \"%3$\".</string>
- <string name="route_not_cidr">Tidak masuk akal membuat %1$ s dan %2$ s sebagai rute IP dengan netmask CIDR, Gunakan /32 sebagai netmask.</string>
+ <string name="ip_not_cidr">Memilki informasi antarmuka %1$s dan %2$s, asumsi alamat kedua adalah alamat remote. Menggunakan netmask /32 untuk IP lokal. Mode yang diberikan oleh OpenVPN adalah \"%3$s\".</string>
+ <string name="route_not_cidr">Tidak masuk akal membuat %1$s dan %2$s sebagai rute IP dengan netmask CIDR, Gunakan /32 sebagai netmask.</string>
<string name="route_not_netip">rute yang diperbaiki %1$s/%2$s hingga %3$s/%2$s</string>
<string name="keychain_access">Tidak dapat mengakses sertifikat Keychain Android. Dapat disebabkan karena upgrade firmware atau pengembalian backup pengaturan app. Mohon ubah VPN, dan pilih ulang sertifikat berbasis pengaturan dasar agar izin mengakses sertifikat dapat dibuat ulang.</string>
<string name="version_info">%1$s %2$s</string>
@@ -181,7 +181,7 @@
<string name="show_log_summary">Tampilkan jendela catatan saat terkoneksi. Jendela catatan juga dapat diakses melalui status notifikasi</string>
<string name="show_log_window">Tampilkan jendela catatan</string>
<string name="mobile_info">Berjalan di %1$s (%2$s) %3$s, Android API %4$d</string>
- <string name="error_rsa_sign">Kesalahan masuk dengan kunci Android keystore %1$ s: %2$ s</string>
+ <string name="error_rsa_sign">Kesalahan masuk dengan kunci Android keystore %1$s: %2$s</string>
<string name="faq_system_dialogs">Peringatan sambungan VPN yang memberitahukan Anda bahwa aplikasi ini dapat mencegat semua lalu lintas dikeluarkan oleh sistem untuk mencegah penyalahgunaan dari sambungan VPNService API.\nPemberitahuan sambungan VPN (simbol kunci) juga dikeluarkan oleh sistem Android untuk memberitahu VPN yang sedang berlangsung. Pada beberapa gambar pemberitahuan ini memainkan suara. \nAndroid memperkenalkan sistem dialog ini untuk keselamatan Anda sendiri dan memastikan bahwa mereka tidak membuat masalah. (Pada beberapa gambar sayangnya ini termasuk peringatan suara)</string>
<string name="faq_system_dialogs_title">Peringatan sambungan dan pemberitahuan melalui suara</string>
<string name="translationby">Terjemah Bahasa Indonesia oleh Dayro</string>
@@ -192,14 +192,14 @@
<string name="advanced">Lanjutan</string>
<string name="export_config_title">Konfigurasi ICS Openvpn</string>
<string name="warn_no_dns">Tidak ada server DNS yang digunakan. Resolusi nama mungkin tidak bisa bekerja. Pertimbangkan seting server DNS yang diatur sendiri </string>
- <string name="dns_add_error">Tak bisa menambahkan Server DNS \"%1$ s\", ditolak oleh sistem: %2$ s</string>
+ <string name="dns_add_error">Tak bisa menambahkan Server DNS \"%1$s\", ditolak oleh sistem: %2$s</string>
<string name="faq_howto">&lt;p&gt; Ambil konfigurasi yang dapat berjalan (diuji pada komputer Anda atau download dari penyedia/organisasi) &lt;/p&gt; &lt;p&gt; Satu file(berkas) saja tanpa tambahan berkas pem/pks12. Anda dapat kirim imel berkas dan membuka lampirannya. Jika Anda memiliki beberapa berkas, salin ke sd-card &lt;/p&gt; &lt;p&gt; klik pada lampiran imel atau gunakan ikon folder dalam daftar vpn untuk mengimpor berkas konfigurasi &lt;/p&gt; &lt;p&gt; jika ada berkas yang kurang, salin file hilang ke sd-card. &lt;/p&gt; &lt;p&gt; klik pada simbol Simpan untuk menambahkan VPN yang diimpor ke daftar VPN &lt;/p&gt; &lt;p &gt; Connect VPN dengan mengklik nama VPN &lt;/p&gt; &lt;p&gt; jika ada kesalahan atau peringatan di catatan, coba pahami peringatannya dan coba untuk memperbaikinya &lt;/p&gt; </string>
<string name="faq_howto_title">Mulai Cepat</string>
<string name="setting_loadtun_summary">Coba pakai tun.ko kernel sebelum mencoba koneksi. Membutuhkan perangkat yang sudah diroot. Google: android superuser</string>
<string name="setting_loadtun">Pakai modul TUN</string>
<string name="importpkcs12fromconfig">Ambil PKCS12 dari konfigurasi ke Android Keystore</string>
<string name="getproxy_error">Gagal mendapatkan pengaturan proxy: %s</string>
- <string name="using_proxy">Menggunakan proxy %1$ s %2$ d</string>
+ <string name="using_proxy">Menggunakan proxy %1$s %2$d</string>
<string name="use_system_proxy">Gunakan sistem proxy</string>
<string name="use_system_proxy_summary">Gunakan konfigurasi lebih luas untuk menyambung system melalui proxy HTTP/HTTPS</string>
<string name="donatewithpaypal">Anda dapat melakukan donasi &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;dengan PayPal&lt;/a&gt; </string>
@@ -236,8 +236,8 @@
<string name="send_minidump">Mengirim MiniDump untuk pengembang</string>
<string name="send_minidump_summary">Kirim informasi kesalahan tentang kegagalan aplikasi yang terakhir ke pengembang</string>
<string name="notifcation_title">OpenVPN - %s</string>
- <string name="session_ipv4string">%1$ s - %2$ s</string>
- <string name="session_ipv6string">%1$ s - %3$ s, %2$ s</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
<string name="state_connecting">Menghubungkan</string>
<string name="state_wait">Menunggu jawaban server</string>
<string name="state_auth">Melakukan otentifikasi</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index a8f39816..3ad6fdd2 100755
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -155,7 +155,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="broken_image_cert">Si è incappati in una eccezione tentando di visualizzare la finestra di selezione dei certificati di Android 4.0+. Questo non dovrebbe mai accadere dato che questa è una caratteristica standard di Android 4.0+. Forse il supporto al salvataggio dei certificati del tuo firmware di Android è corrotto.</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">In attesa del messaggio di stato...</string>
+ <string name="speed_waiting">In attesa del messaggio di stato…</string>
<string name="converted_profile">profilo importato</string>
<string name="converted_profile_i">profilo importato %d</string>
<string name="broken_images">Firmware bacati</string>
@@ -173,7 +173,7 @@ nel bug tracker).&lt;/p&gt;&lt;p&gt;Si è visto che ai firmware ufficiali della
<string name="owner_fix">Correggi i diritti su /dev/tun</string>
<string name="generated_config_summary">Mostra il file di configurazione di OpenVPN generato</string>
<string name="edit_profile_title">Modifica \"%s\"</string>
- <string name="building_configration">Configurazione in corso...</string>
+ <string name="building_configration">Configurazione in corso…</string>
<string name="netchange_summary">Selezionando questa opzione verrà forzata una riconnessione se lo stato della rete cambia (da WIFI a cellulare e viceversa)</string>
<string name="netchange">Riconnetti in caso cambi la rete</string>
<string name="cert_from_keystore">Ottenuto il certificato \'%s\' dal Keystore</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index dd83c09d..07989d5d 100755
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -24,7 +24,7 @@
<string name="vpn_list_title">VPN 프로파일</string>
<string name="vpn_type">유형</string>
<string name="pkcs12pwquery">PKCS12 암호</string>
- <string name="file_select">선택...</string>
+ <string name="file_select">선택…</string>
<string name="file_nothing_selected">파일을 선택 해야 합니다</string>
<string name="useTLSAuth">TLS 인증 사용</string>
<string name="tls_direction">TLS 방향</string>
@@ -153,7 +153,7 @@
<string name="broken_image_cert">안드로이드 4.0+의 인증서 선택창을 보여주려는 과정에서 예외가 발생됐습니다. 안드로이드 4.0+의 표준 기능임으로 이 같은 일은 일어나면 안됩니다. 어쩌면 인증서 저장소에 대한 귀하의 안드로이드 ROM 지원이 깨졌습니다.</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">상태 메시지를 기다리는 중...</string>
+ <string name="speed_waiting">상태 메시지를 기다리는 중…</string>
<string name="converted_profile">가져온 프로파일</string>
<string name="converted_profile_i">가져온 프로파일 %d</string>
<string name="broken_images">깨진 이미지</string>
diff --git a/res/values-no/strings.xml b/res/values-no/strings.xml
index 1ee26c0d..9ea085b3 100755
--- a/res/values-no/strings.xml
+++ b/res/values-no/strings.xml
@@ -20,7 +20,7 @@
<string name="vpn_list_title">VPN-profiler</string>
<string name="vpn_type">Type</string>
<string name="pkcs12pwquery">PKCS12 passord</string>
- <string name="file_select">Velg...</string>
+ <string name="file_select">Velg…</string>
<string name="useTLSAuth">Bruke TLS-godkjenning</string>
<string name="tls_direction">TLS-retning</string>
<string name="ipv6_dialog_tile">Angi IPv6-adresse/nettmaske i CIDR format (f.eks 2000:dd::23/64)</string>
@@ -91,7 +91,7 @@
<string name="broken_image_cert_title">Feil ved visning av sertifikatvalg</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">Venter på tilstands melding...</string>
+ <string name="speed_waiting">Venter på tilstands melding…</string>
<string name="converted_profile">importert profil</string>
<string name="converted_profile_i">importert profilen %d</string>
<string name="broken_images">Ødelagte bilder</string>
@@ -105,7 +105,7 @@
<string name="generalsettings">Generelle innstillinger</string>
<string name="owner_fix">Fiks eierskap av /dev/tun</string>
<string name="edit_profile_title">Rediger \"%s\"</string>
- <string name="building_configration">Lager konfigurasjon...</string>
+ <string name="building_configration">Lager konfigurasjon…</string>
<string name="netchange">Koble til på nytt ved nettverks endring</string>
<string name="netstatus">Nettverksstatus: %s</string>
<string name="select_file">Velg</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 842d9352..c0ced54d 100755
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -123,7 +123,7 @@
<string name="menu_import_short">Import</string>
<string name="error_reading_config_file">Eroare la citirea fişierului de configurare</string>
<string name="add_profile">Adaugă profil</string>
- <string name="import_could_not_open">Imposibil de găsit fișierul %1$ s menţionat în fişierul de configurare importat</string>
+ <string name="import_could_not_open">Imposibil de găsit fișierul %1$s menţionat în fişierul de configurare importat</string>
<string name="import_done">S-a terminat citirea fişierului de configurare.</string>
<string name="no_bind">Fără binding local</string>
<string name="import_configuration_file">Import fişier de configurare</string>
@@ -160,7 +160,7 @@
<string name="faq_howto_title">Pornire rapidă</string>
<string name="setting_loadtun">Încarcă modulul tun</string>
<string name="importpkcs12fromconfig">Import PKCS12 configurare în Android Keystore</string>
- <string name="using_proxy">Folosesc proxy %1$ s %2$ d</string>
+ <string name="using_proxy">Folosesc proxy %1$s %2$d</string>
<string name="use_system_proxy">Foloseşte proxy sistem</string>
<string name="onbootrestart">Reconectarea la reboot</string>
<string name="ignore">Ignora</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index e8482370..064c20fa 100755
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -24,7 +24,7 @@
<string name="vpn_list_title">VPN профілі</string>
<string name="vpn_type">Тип</string>
<string name="pkcs12pwquery">Пароль PKCS12</string>
- <string name="file_select">Виберіть...</string>
+ <string name="file_select">Виберіть…</string>
<string name="file_nothing_selected">Слід вибрати файл</string>
<string name="useTLSAuth">Використовувати TLS аутентифікацію</string>
<string name="tls_direction">TLS напрямок</string>
@@ -153,7 +153,7 @@
<string name="broken_image_cert">Відбулася помилка при спробі виклику системного діалогу вибору сертифікатів Android 4.0 + Цього не повинно було статися на стандартній прошивці. Можливо у вашій прошивці зіпсовано сховище сертифікатів</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">Очікування повідомлення стану...</string>
+ <string name="speed_waiting">Очікування повідомлення стану…</string>
<string name="converted_profile">імпортований профіль</string>
<string name="converted_profile_i">імпортований профіль: %d</string>
<string name="broken_images">Пошкоджені зображення</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 74a672ad..b6156ab2 100755
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,7 +16,7 @@
<string name="client_pkcs12_title">PKCS12 文件</string>
<string name="ca_title">CA 证书</string>
<string name="no_certificate">您必须选择一个证书</string>
- <string name="copyright_guicode">请前往 http://code.google.com/p/ics-openvpn/ 源码或提供问题反馈</string>
+ <string name="copyright_guicode">请前往 http://code.google.com/p/ics-openvpn/ 查看源码或提供问题反馈</string>
<string name="copyright_others">本程序使用以下组件,请在 Licenses 查看源码获取更详细内容。</string>
<string name="about">关于</string>
<string name="about_summary">关于 OpenVPN for Android</string>
@@ -39,14 +39,15 @@
<string name="menu_add_profile">添加配置文件</string>
<string name="add_profile_name_prompt">输入新配置文件名:</string>
<string name="duplicate_profile_name">请输入一个唯一的配置文件名称</string>
- <string name="profilename">配置文件名</string>
+ <string name="profilename">配置文件名称</string>
+ <string name="no_keystore_cert_selected">您必须选择一个用户证书</string>
<string name="no_error_found">未找到错误</string>
<string name="config_error_found">配置有错误</string>
<string name="ipv4_format_error">无法解析 IPv4 地址</string>
<string name="custom_route_format_error">无法解析自定义路由</string>
<string name="pw_query_hint">(根据需求留空)</string>
<string name="vpn_shortcut">OpenVPN 快捷方式</string>
- <string name="vpn_launch_title">连接到 VPN</string>
+ <string name="vpn_launch_title">连接至 VPN</string>
<string name="shortcut_profile_notfound">未找到快捷方式中指定的配置文件</string>
<string name="random_host_prefix">随机主机前缀</string>
<string name="random_host_summary">在主机名前添加6个随机字符</string>
@@ -64,7 +65,7 @@
<string name="enter_tlscn_title">远程主机名 (CN)</string>
<string name="tls_key_auth">启用 TLS 密钥认证</string>
<string name="tls_auth_file">TLS 认证文件</string>
- <string name="use_pull">使用pull</string>
+ <string name="use_pull">Pull 设置</string>
<string name="dns">DNS</string>
<string name="override_dns">覆盖服务器 DNS 设置</string>
<string name="dns_override_summary">使用自定义 DNS 服务器</string>
@@ -84,6 +85,7 @@
<string name="float_title">允许浮服务器</string>
<string name="custom_options_title">自定义选项</string>
<string name="edit_vpn">编辑 VPN 设置</string>
+ <string name="remove_vpn_query">移除 VPN 配置文件 \'%s\' 吗?</string>
<string name="tun_open_error">未能打开 tun 模块</string>
<string name="error">错误</string>
<string name="clear">清除</string>
@@ -153,14 +155,16 @@
<string name="select_file">选择</string>
<string name="show_log_window">显示日志窗口</string>
<string name="mobile_info">运行 %1$s ( %2$s ) %3$s ,Android API %4$d</string>
- <string name="translationby">中文翻译: 白达卫
-&lt;59539051+ovpntrans.zh@mail.dcu.ie&gt;</string>
+ <string name="faq_system_dialogs_title">连接警告和通知声音</string>
+ <string name="translationby">中文翻译:Christopher Meng
+&lt;trans@cicku.me&gt;</string>
<string name="ipdns">IP 和 DNS 设置</string>
<string name="basic">基本</string>
<string name="routing">路由设置</string>
<string name="obscure">其他 OpenVPN 设置,一般不需要修改。</string>
<string name="advanced">高级设置</string>
<string name="export_config_title">ICS Openvpn 配置</string>
+ <string name="dns_add_error">无法添加 DNS 服务器 \"%1$s\",%2$s 拒绝了您的操作。</string>
<string name="faq_howto_title">快速入门</string>
<string name="setting_loadtun_summary">尝试在连接之前加载 tun.ko 内核模块。需要 root 权限。</string>
<string name="setting_loadtun">载入 tun 模块</string>
@@ -175,11 +179,31 @@
<string name="configuration_changed">配置已更改</string>
<string name="faq_duplicate_notification_title">重复的通知</string>
<string name="no_vpn_profiles_defined">没有定义 VPN 配置文件</string>
- <string name="add_new_vpn_hint">使用 &lt; img src =\"ic_menu_add\"/ &gt; 图标以添加新的 VPN</string>
+ <string name="add_new_vpn_hint">点击 &lt;img src=\"ic_menu_add\"/&gt; 图标添加新的 VPN 配置</string>
+ <string name="faq_routing_title">路由/接口配置</string>
<string name="persisttun_summary">当 OpenVPN 重连时,也一直使用 VPN 连接。</string>
<string name="persistent_tun_title">保持 tun 通道</string>
<string name="translation">翻译</string>
<string name="openvpn_log">OpenVPN 日志</string>
<string name="import_config">导入 OpenVPN 配置文件</string>
<string name="battery_consumption_title">电池消耗</string>
+ <string name="vpn_tethering_title">VPN 和中继</string>
+ <string name="connection_retries">连接重试次数</string>
+ <string name="reconnection_settings">重新连接设置</string>
+ <string name="connectretrymessage">每次尝试连接等待时间(秒)。</string>
+ <string name="connectretrywait">两次连接间隔时间(秒)</string>
+ <string name="minidump_generated">OpenVPN 意外崩溃。建议您使用主菜单中的发送转储文件功能向开发者发送转储文件</string>
+ <string name="send_minidump">向开发者发送转储信息</string>
+ <string name="notifcation_title">OpenVPN - %s</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
+ <string name="state_connecting">连接中</string>
+ <string name="state_wait">等待服务器响应</string>
+ <string name="state_auth">验证中</string>
+ <string name="state_exiting">正在退出</string>
+ <string name="state_noprocess">未运行</string>
+ <string name="state_resolve">正在解析主机名</string>
+ <string name="state_tcp_connect">连接中(TCP)</string>
+ <string name="state_auth_failed">验证失败</string>
+ <string name="state_nonetwork">等待可用网络</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 23e9c002..20807bb9 100755
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -131,7 +131,7 @@
<string name="import_vpn">匯入</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
- <string name="speed_waiting">等待狀態訊息...</string>
+ <string name="speed_waiting">等待狀態訊息…</string>
<string name="error_empty_username">使用者名稱不能為空。</string>
<string name="pkcs12_file_encryption_key">PKCS12檔加密金鑰</string>
<string name="private_key_password">私密金鑰密碼</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f1bd9bd9..1fe96ae2 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -254,9 +254,9 @@
<string name="state_tcp_connect">Connecting (TCP)</string>
<string name="state_auth_failed">Authentication failed</string>
<string name="state_nonetwork">Waiting for usable network</string>
- <string name="statusline_bytecount">In: %8$1s %8$2s/s Out: %8$3s %8$4s/s</string>
+ <string name="statusline_bytecount">In: %1$8s %2$8s/s Out: %3$8s %4$8s/s</string>
<string name="notifcation_title_notconnect">Not connected</string>
- <string name="jelly_keystore_alphanumeric_bug">Some versions of Android 4.1 have problem if the name of the keystore certificate contains non alphanumeric character (like spaces or dashes)</string>
+ <string name="jelly_keystore_alphanumeric_bug">Some versions of Android 4.1 have problems if the name of the keystore certificate contains non alphanumeric characters (like spaces, underscores or dashes). Try to reimport the certificate without special characters</string>
<string name="encryption_cipher">Encryption cipher</string>
<string name="packet_auth">Packets authentication</string>
<string name="auth_dialog_title">Enter packet authentication method</string>
diff --git a/src/de/blinkt/openvpn/CIDRIP.java b/src/de/blinkt/openvpn/CIDRIP.java
index ccb3836a..d3939dfc 100644
--- a/src/de/blinkt/openvpn/CIDRIP.java
+++ b/src/de/blinkt/openvpn/CIDRIP.java
@@ -1,5 +1,7 @@
package de.blinkt.openvpn;
+import java.util.Locale;
+
class CIDRIP{
String mIp;
int len;
@@ -26,7 +28,7 @@ class CIDRIP{
}
@Override
public String toString() {
- return String.format("%s/%d",mIp,len);
+ return String.format(Locale.ENGLISH,"%s/%d",mIp,len);
}
public boolean normalise(){
diff --git a/src/de/blinkt/openvpn/FileSelectionFragment.java b/src/de/blinkt/openvpn/FileSelectionFragment.java
index 2d8110e1..5badc6e0 100644
--- a/src/de/blinkt/openvpn/FileSelectionFragment.java
+++ b/src/de/blinkt/openvpn/FileSelectionFragment.java
@@ -4,6 +4,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.TreeMap;
import android.app.AlertDialog;
@@ -180,12 +181,12 @@ public class FileSelectionFragment extends ListFragment {
dirsPathMap.put(dirName, file.getPath());
} else {
final String fileName = file.getName();
- final String fileNameLwr = fileName.toLowerCase();
+ final String fileNameLwr = fileName.toLowerCase(Locale.getDefault());
// se ha um filtro de formatos, utiliza-o
if (formatFilter != null) {
boolean contains = false;
for (int i = 0; i < formatFilter.length; i++) {
- final String formatLwr = formatFilter[i].toLowerCase();
+ final String formatLwr = formatFilter[i].toLowerCase(Locale.getDefault());
if (fileNameLwr.endsWith(formatLwr)) {
contains = true;
break;
diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java
index 9cfaf1e8..c1616f2d 100644
--- a/src/de/blinkt/openvpn/OpenVPN.java
+++ b/src/de/blinkt/openvpn/OpenVPN.java
@@ -4,7 +4,6 @@ import java.util.LinkedList;
import java.util.Locale;
import java.util.Vector;
-
import android.content.Context;
import android.os.Build;
diff --git a/src/de/blinkt/openvpn/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/OpenVpnManagementThread.java
index c67d027d..381fee82 100644
--- a/src/de/blinkt/openvpn/OpenVpnManagementThread.java
+++ b/src/de/blinkt/openvpn/OpenVpnManagementThread.java
@@ -11,6 +11,7 @@ import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.util.LinkedList;
+import java.util.Locale;
import java.util.Vector;
import javax.crypto.BadPaddingException;
@@ -261,7 +262,7 @@ public class OpenVpnManagementThread implements Runnable {
OpenVPN.logInfo(R.string.using_proxy, isa.getHostName(),isa.getPort());
- String proxycmd = String.format("proxy HTTP %s %d\n", isa.getHostName(),isa.getPort());
+ String proxycmd = String.format(Locale.ENGLISH,"proxy HTTP %s %d\n", isa.getHostName(),isa.getPort());
managmentCommand(proxycmd);
} else {
managmentCommand("proxy NONE\n");
diff --git a/src/de/blinkt/openvpn/OpenVpnService.java b/src/de/blinkt/openvpn/OpenVpnService.java
index 0ac57406..71cc5cd2 100644
--- a/src/de/blinkt/openvpn/OpenVpnService.java
+++ b/src/de/blinkt/openvpn/OpenVpnService.java
@@ -17,6 +17,7 @@
package de.blinkt.openvpn;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.Locale;
import java.util.Vector;
import android.annotation.TargetApi;
@@ -37,10 +38,10 @@ import android.os.Handler.Callback;
import android.os.IBinder;
import android.os.Message;
import android.os.ParcelFileDescriptor;
-
+import de.blinkt.openvpn.OpenVPN.ByteCountListener;
import de.blinkt.openvpn.OpenVPN.StateListener;
-public class OpenVpnService extends VpnService implements StateListener, Callback {
+public class OpenVpnService extends VpnService implements StateListener, Callback, ByteCountListener {
public static final String START_SERVICE = "de.blinkt.openvpn.START_SERVICE";
public static final String START_SERVICE_STICKY = "de.blinkt.openvpn.START_SERVICE_STICKY";
public static final String ALWAYS_SHOW_NOTIFICATION = "de.blinkt.openvpn.NOTIFICATION_ALWAYS_VISIBLE";
@@ -116,6 +117,8 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
private void endVpnService() {
mProcessThread=null;
OpenVPN.logBuilderConfig(null);
+ OpenVPN.removeStateListener(this);
+ OpenVPN.removeByteCountListener(this);
ProfileManager.setConntectedVpnProfileDisconnected(this);
if(!mStarting) {
stopSelf();
@@ -158,6 +161,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
startForeground(OPENVPN_STATUS, notification);
}
+
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void jbNotificationExtras(boolean lowpriority,
android.app.Notification.Builder nbuilder) {
@@ -217,6 +221,12 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
return lss;
} catch (IOException e) {
e.printStackTrace();
+ } finally {
+ try {
+ sock.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
return null;
@@ -238,6 +248,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
mNotificationalwaysVisible=true;
OpenVPN.addStateListener(this);
+ OpenVPN.addByteCountListener(this);
if(intent != null && intent.getAction() !=null &&intent.getAction().equals(START_SERVICE))
return START_NOT_STICKY;
@@ -517,7 +528,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
}
}
-
+ @Override
public void updateByteCount(long in, long out, long diffin, long diffout) {
if(mDisplayBytecount) {
String netstat = String.format(getString(R.string.statusline_bytecount),
@@ -538,7 +549,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac
if (bytes < unit) return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
- return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
+ return String.format(Locale.getDefault(),"%.1f %sB", bytes / Math.pow(unit, exp), pre);
}
@Override
diff --git a/src/de/blinkt/openvpn/Settings_Basic.java b/src/de/blinkt/openvpn/Settings_Basic.java
index 9c85094a..137e75c5 100644
--- a/src/de/blinkt/openvpn/Settings_Basic.java
+++ b/src/de/blinkt/openvpn/Settings_Basic.java
@@ -58,29 +58,15 @@ public class Settings_Basic extends Fragment implements View.OnClickListener, On
private Spinner mType;
private FileSelectLayout mpkcs12;
private TextView mPKCS12Password;
-
private Handler mHandler;
-
-
-
-
-
- private SparseArray<FileSelectLayout> fileselects = new SparseArray<FileSelectLayout>();
-
-
private EditText mUserName;
-
-
private EditText mPassword;
-
-
private View mView;
-
-
private VpnProfile mProfile;
private EditText mProfileName;
private EditText mKeyPassword;
+ private SparseArray<FileSelectLayout> fileselects = new SparseArray<FileSelectLayout>();
private void addFileSelectLayout (FileSelectLayout fsl) {
@@ -129,7 +115,6 @@ public class Settings_Basic extends Fragment implements View.OnClickListener, On
mpkcs12.setBase64Encode();
mCaCert.setShowClear();
-
mType.setOnItemSelectedListener(this);
mView.findViewById(R.id.select_keystore_button).setOnClickListener(this);
diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java
index 6f21397e..37e9b2ff 100644
--- a/src/de/blinkt/openvpn/VpnProfile.java
+++ b/src/de/blinkt/openvpn/VpnProfile.java
@@ -15,6 +15,7 @@ import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Collection;
+import java.util.Locale;
import java.util.UUID;
import java.util.Vector;
@@ -391,12 +392,13 @@ public class VpnProfile implements Serializable{
//! Put inline data inline and other data as normal escaped filename
private String insertFileData(String cfgentry, String filedata) {
if(filedata==null) {
+ // TODO: generate good error
return String.format("%s %s\n",cfgentry,"missing");
}else if(filedata.startsWith(VpnProfile.INLINE_TAG)){
String datawoheader = filedata.substring(VpnProfile.INLINE_TAG.length());
- return String.format("<%s>\n%s\n</%s>\n",cfgentry,datawoheader,cfgentry);
+ return String.format(Locale.ENGLISH,"<%s>\n%s\n</%s>\n",cfgentry,datawoheader,cfgentry);
} else {
- return String.format("%s %s\n",cfgentry,openVpnEscape(filedata));
+ return String.format(Locale.ENGLISH,"%s %s\n",cfgentry,openVpnEscape(filedata));
}
}
@@ -465,7 +467,7 @@ public class VpnProfile implements Serializable{
long nm = 0xffffffffl;
nm = (nm << (32-len)) & 0xffffffffl;
- String netmask =String.format("%d.%d.%d.%d", (nm & 0xff000000) >> 24,(nm & 0xff0000) >> 16, (nm & 0xff00) >> 8 ,nm & 0xff );
+ String netmask =String.format(Locale.ENGLISH,"%d.%d.%d.%d", (nm & 0xff000000) >> 24,(nm & 0xff0000) >> 16, (nm & 0xff00) >> 8 ,nm & 0xff );
return parts[0] + " " + netmask;
}