From 718c152a6a63a20c5a49f32f6f0884e32848f4e9 Mon Sep 17 00:00:00 2001 From: pacien Date: Wed, 22 Aug 2018 22:44:53 +0200 Subject: Re-organise string resources --- .../org/pacien/tincapp/activities/BaseActivity.kt | 28 ++-- .../configure/tools/ConfigurationTool.kt | 6 +- .../tincapp/activities/start/ConnectionStarter.kt | 6 +- .../tincapp/activities/start/StartActivity.kt | 2 +- .../tincapp/activities/status/StatusActivity.kt | 2 +- .../VpnInterfaceConfigurationFormatter.kt | 2 +- .../java/org/pacien/tincapp/commands/TincApp.kt | 2 +- .../main/java/org/pacien/tincapp/context/App.kt | 4 +- .../java/org/pacien/tincapp/context/AppInfo.kt | 6 +- .../tincapp/context/AppNotificationManager.kt | 4 +- .../org/pacien/tincapp/service/TincVpnService.kt | 26 ++-- app/src/main/res/layout/dialog_decrypt_keys.xml | 2 +- .../res/layout/status_network_info_fragment.xml | 2 +- app/src/main/res/menu/menu_base.xml | 2 +- app/src/main/res/menu/menu_start.xml | 2 +- app/src/main/res/menu/menu_status.xml | 4 +- app/src/main/res/values-ja/strings.xml | 26 ++-- app/src/main/res/values-nb-rNO/strings.xml | 26 ++-- app/src/main/res/values-zh-rCN/strings.xml | 68 ++++------ app/src/main/res/values-zh-rHK/strings.xml | 68 ++++------ app/src/main/res/values-zh-rTW/strings.xml | 68 ++++------ app/src/main/res/values/strings.xml | 144 +++++++++++---------- 22 files changed, 221 insertions(+), 279 deletions(-) diff --git a/app/src/main/java/org/pacien/tincapp/activities/BaseActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/BaseActivity.kt index d9d549b..975d4cf 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/BaseActivity.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/BaseActivity.kt @@ -85,12 +85,12 @@ abstract class BaseActivity : AppCompatActivity() { fun aboutDialog(m: MenuItem) { AlertDialog.Builder(this) .setTitle(resources.getString(R.string.app_name)) - .setMessage(resources.getString(R.string.app_short_desc) + "\n\n" + - resources.getString(R.string.app_copyright) + " " + - resources.getString(R.string.app_license) + "\n\n" + + .setMessage(resources.getString(R.string.about_app_short_desc) + "\n\n" + + resources.getString(R.string.about_app_copyright) + " " + + resources.getString(R.string.about_app_license) + "\n\n" + AppInfo.all()) - .setNeutralButton(R.string.action_open_project_website) { _, _ -> App.openURL(resources.getString(R.string.app_website_url)) } - .setPositiveButton(R.string.action_close) { _, _ -> Unit } + .setNeutralButton(R.string.about_app_open_project_website) { _, _ -> App.openURL(resources.getString(R.string.about_app_website_url)) } + .setPositiveButton(R.string.generic_action_close) { _, _ -> Unit } .show() } @@ -103,18 +103,18 @@ abstract class BaseActivity : AppCompatActivity() { CrashRecorder.dismissPreviousCrash() AlertDialog.Builder(this) - .setTitle(R.string.title_app_crash) + .setTitle(R.string.crash_modal_title) .setMessage(listOf( - resources.getString(R.string.message_app_crash), - resources.getString(R.string.message_crash_logged, AppPaths.appLogFile().absolutePath) + resources.getString(R.string.crash_modal_message), + resources.getString(R.string.crash_modal_crash_logged, AppPaths.appLogFile().absolutePath) ).joinToString("\n\n")) - .setNeutralButton(R.string.action_send_report) { _, _ -> + .setNeutralButton(R.string.crash_modal_action_send_report) { _, _ -> App.sendMail( - resources.getString(R.string.app_dev_email), - listOf(R.string.app_name, R.string.title_app_crash).joinToString(" / ", transform = resources::getString), + resources.getString(R.string.crash_modal_dev_email), + listOf(R.string.app_name, R.string.crash_modal_title).joinToString(" / ", transform = resources::getString), AppPaths.appLogFile().let { if (it.exists()) it.readText() else "" }) } - .setPositiveButton(R.string.action_close) { _, _ -> Unit } + .setPositiveButton(R.string.generic_action_close) { _, _ -> Unit } .show() } @@ -125,6 +125,6 @@ abstract class BaseActivity : AppCompatActivity() { fun notify(msg: String) = Snackbar.make(base_activity_frame, msg, Snackbar.LENGTH_LONG).show() fun showErrorDialog(msg: String): AlertDialog = AlertDialog.Builder(this) - .setTitle(R.string.title_error).setMessage(msg) - .setPositiveButton(R.string.action_close) { _, _ -> Unit }.show() + .setTitle(R.string.generic_title_error).setMessage(msg) + .setPositiveButton(R.string.generic_action_close) { _, _ -> Unit }.show() } diff --git a/app/src/main/java/org/pacien/tincapp/activities/configure/tools/ConfigurationTool.kt b/app/src/main/java/org/pacien/tincapp/activities/configure/tools/ConfigurationTool.kt index 41d1f55..4fa85f8 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/configure/tools/ConfigurationTool.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/configure/tools/ConfigurationTool.kt @@ -43,7 +43,7 @@ abstract class ConfigurationTool(private val parentActivity: BaseActivity) { .setTitle(title) .setView(view) .setPositiveButton(applyButton) { _, _ -> applyAction(view) } - .setNegativeButton(R.string.action_cancel) { _, _ -> Unit } + .setNegativeButton(R.string.generic_action_cancel) { _, _ -> Unit } .show() } @@ -51,7 +51,7 @@ abstract class ConfigurationTool(private val parentActivity: BaseActivity) { ProgressModal.show(parentActivity, parentActivity.getString(label)).let { progressDialog -> action .whenComplete { _, _ -> progressDialog.dismiss() } - .thenAccept { parentActivity.notify(R.string.message_network_configuration_written) } + .thenAccept { parentActivity.notify(R.string.configure_tools_message_network_configuration_written) } .exceptionallyAccept { parentActivity.runOnUiThread { parentActivity.showErrorDialog(it.cause!!.localizedMessage) } } } } @@ -60,5 +60,5 @@ abstract class ConfigurationTool(private val parentActivity: BaseActivity) { if (networkNamePattern.matcher(netName).matches()) CompletableFuture.completedFuture(Unit) else - CompletableFuture.failedFuture(IllegalArgumentException(parentActivity.getString(R.string.message_invalid_network_name))) + CompletableFuture.failedFuture(IllegalArgumentException(parentActivity.getString(R.string.configure_tools_message_invalid_network_name))) } diff --git a/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt b/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt index 06046e9..d1ccd3f 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt @@ -55,10 +55,10 @@ class ConnectionStarter(private val parentActivity: StartActivity) { val dialogView = parentActivity.layoutInflater.inflate(R.layout.dialog_decrypt_keys, parentActivity.base_activity_frame, false) AlertDialog.Builder(parentActivity) - .setTitle(R.string.title_unlock_private_keys) + .setTitle(R.string.decrypt_key_modal_title) .setView(dialogView) - .setPositiveButton(R.string.action_unlock) { _, _ -> tryStart(passphrase = dialogView.passphrase.text.toString()) } - .setNegativeButton(R.string.action_cancel) { _, _ -> Unit } + .setPositiveButton(R.string.decrypt_key_modal_action_unlock) { _, _ -> tryStart(passphrase = dialogView.passphrase.text.toString()) } + .setNegativeButton(R.string.decrypt_key_modal_action_cancel) { _, _ -> Unit } .show() } diff --git a/app/src/main/java/org/pacien/tincapp/activities/start/StartActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/start/StartActivity.kt index 9cc6159..802115f 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/start/StartActivity.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/start/StartActivity.kt @@ -99,7 +99,7 @@ class StartActivity : BaseActivity() { } fun showConnectProgressDialog() { - connectDialog = ProgressModal.show(this, resources.getString(R.string.message_starting_vpn)) + connectDialog = ProgressModal.show(this, resources.getString(R.string.start_starting_vpn)) } @Suppress("UNUSED_PARAMETER") diff --git a/app/src/main/java/org/pacien/tincapp/activities/status/StatusActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/status/StatusActivity.kt index 3815bc9..152ed83 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/status/StatusActivity.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/status/StatusActivity.kt @@ -104,7 +104,7 @@ class StatusActivity : BaseActivity() { } private fun stopVpn() { - shutdownDialog = ProgressModal.show(this, getString(R.string.message_disconnecting_vpn)) + shutdownDialog = ProgressModal.show(this, getString(R.string.status_activity_disconnecting_vpn)) vpnService.disconnect() } diff --git a/app/src/main/java/org/pacien/tincapp/activities/status/networkinfo/VpnInterfaceConfigurationFormatter.kt b/app/src/main/java/org/pacien/tincapp/activities/status/networkinfo/VpnInterfaceConfigurationFormatter.kt index a519d07..568714e 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/status/networkinfo/VpnInterfaceConfigurationFormatter.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/status/networkinfo/VpnInterfaceConfigurationFormatter.kt @@ -30,7 +30,7 @@ object VpnInterfaceConfigurationFormatter { fun formatList(list: List) = when { list.isNotEmpty() -> list.joinToString("\n", transform = this::formatListElement) - else -> resources.getString(R.string.status_network_info_none_value)!! + else -> resources.getString(R.string.status_network_info_value_none)!! } private fun formatListElement(element: Any) = when (element) { diff --git a/app/src/main/java/org/pacien/tincapp/commands/TincApp.kt b/app/src/main/java/org/pacien/tincapp/commands/TincApp.kt index 32fc1f9..e7ad8e5 100644 --- a/app/src/main/java/org/pacien/tincapp/commands/TincApp.kt +++ b/app/src/main/java/org/pacien/tincapp/commands/TincApp.kt @@ -44,7 +44,7 @@ object TincApp { it.ed25519PrivateKeyFile ?: AppPaths.defaultEd25519PrivateKeyFile(netName)) } } catch (e: FileNotFoundException) { - throw FileNotFoundException(App.getResources().getString(R.string.message_network_config_not_found_format, e.message!!)) + throw FileNotFoundException(App.getResources().getString(R.string.notification_error_message_network_config_not_found_format, e.message!!)) } fun removeScripts(netName: String) = runAsyncTask { diff --git a/app/src/main/java/org/pacien/tincapp/context/App.kt b/app/src/main/java/org/pacien/tincapp/context/App.kt index 359cd23..6f28bd0 100644 --- a/app/src/main/java/org/pacien/tincapp/context/App.kt +++ b/app/src/main/java/org/pacien/tincapp/context/App.kt @@ -67,7 +67,7 @@ class App : Application() { fun openURL(url: String) { val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) - val chooser = Intent.createChooser(intent, getResources().getString(R.string.action_open_web_page)) + val chooser = Intent.createChooser(intent, getResources().getString(R.string.generic_action_open_web_page)) appContext?.startActivity(chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) } @@ -78,7 +78,7 @@ class App : Application() { .apply { if (body != null) putExtra(Intent.EXTRA_TEXT, body) } .apply { if (attachment != null) putExtra(Intent.EXTRA_STREAM, Uri.fromFile(attachment)) } - val chooser = Intent.createChooser(intent, getResources().getString(R.string.action_send_email)) + val chooser = Intent.createChooser(intent, getResources().getString(R.string.crash_modal_action_send_email)) appContext?.startActivity(chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) } } diff --git a/app/src/main/java/org/pacien/tincapp/context/AppInfo.kt b/app/src/main/java/org/pacien/tincapp/context/AppInfo.kt index e0d49f1..a412fa9 100644 --- a/app/src/main/java/org/pacien/tincapp/context/AppInfo.kt +++ b/app/src/main/java/org/pacien/tincapp/context/AppInfo.kt @@ -27,17 +27,17 @@ import org.pacien.tincapp.R */ object AppInfo { private fun appVersion(): String = App.getResources().getString( - R.string.info_version_format, + R.string.about_app_version_format, BuildConfig.VERSION_NAME, BuildConfig.BUILD_TYPE) private fun androidVersion(): String = App.getResources().getString( - R.string.info_running_on_format, + R.string.about_app_running_on_format, Build.VERSION.CODENAME, Build.VERSION.RELEASE) private fun supportedABIs(): String = App.getResources().getString( - R.string.info_supported_abis_format, + R.string.about_app_supported_abis_format, Build.SUPPORTED_ABIS.joinToString(",")) fun all(): String = listOf( diff --git a/app/src/main/java/org/pacien/tincapp/context/AppNotificationManager.kt b/app/src/main/java/org/pacien/tincapp/context/AppNotificationManager.kt index d543210..bdbc8be 100644 --- a/app/src/main/java/org/pacien/tincapp/context/AppNotificationManager.kt +++ b/app/src/main/java/org/pacien/tincapp/context/AppNotificationManager.kt @@ -64,7 +64,7 @@ class AppNotificationManager(private val context: Context) { @RequiresApi(Build.VERSION_CODES.O) private fun registerChannel() { - val name = context.getString(R.string.notification_channel_error_name) + val name = context.getString(R.string.notification_error_channel_name) val importance = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel(CHANNEL_ID, name, importance) val notificationManager = context.getSystemService(NotificationManager::class.java) @@ -79,6 +79,6 @@ class AppNotificationManager(private val context: Context) { private fun NotificationCompat.Builder.setManualLink(manualLink: String) = apply { val intent = Intent(Intent.ACTION_VIEW, Uri.parse(manualLink)) val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0) - addAction(R.drawable.ic_help_primary_24dp, context.getString(R.string.action_open_manual), pendingIntent) + addAction(R.drawable.ic_help_primary_24dp, context.getString(R.string.notification_error_action_open_manual), pendingIntent) } } diff --git a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt index 7176e25..45058e2 100644 --- a/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt +++ b/app/src/main/java/org/pacien/tincapp/service/TincVpnService.kt @@ -85,16 +85,16 @@ class TincVpnService : VpnService() { private fun startVpn(netName: String, passphrase: String? = null): Unit = synchronized(this) { if (netName.isBlank()) - return reportError(resources.getString(R.string.message_no_network_name_provided), docTopic = "intent-api") + return reportError(resources.getString(R.string.notification_error_message_no_network_name_provided), docTopic = "intent-api") if (TincKeyring.needsPassphrase(netName) && passphrase == null) - return reportError(resources.getString(R.string.message_passphrase_required)) + return reportError(resources.getString(R.string.notification_error_message_passphrase_not_provided)) if (!AppPaths.storageAvailable()) return reportError(resources.getString(R.string.start_network_list_empty_storage_not_available)) if (!AppPaths.confDir(netName).exists()) - return reportError(resources.getString(R.string.message_no_configuration_for_network_format, netName), docTopic = "configuration") + return reportError(resources.getString(R.string.notification_error_message_no_configuration_for_network_format, netName), docTopic = "configuration") log.info("Starting tinc daemon for network \"$netName\".") if (isConnected()) stopVpn() @@ -108,19 +108,19 @@ class TincVpnService : VpnService() { } catch (e: FileNotFoundException) { Pair(null, null) } catch (e: PEMException) { - return reportError(resources.getString(R.string.message_could_not_decrypt_private_keys_format, e.message)) + return reportError(resources.getString(R.string.notification_error_message_could_not_decrypt_private_keys_format, e.message)) } catch (e: Exception) { - return reportError(resources.getString(R.string.message_could_not_read_private_key_format, e.defaultMessage()), e) + return reportError(resources.getString(R.string.notification_error_message_could_not_read_private_key_format, e.defaultMessage()), e) } val interfaceCfg = try { VpnInterfaceConfiguration.fromIfaceConfiguration(AppPaths.existing(AppPaths.netConfFile(netName))) } catch (e: FileNotFoundException) { - return reportError(resources.getString(R.string.message_network_config_not_found_format, e.defaultMessage()), e, "configuration") + return reportError(resources.getString(R.string.notification_error_message_network_config_not_found_format, e.defaultMessage()), e, "configuration") } catch (e: ConversionException) { - return reportError(resources.getString(R.string.message_network_config_invalid_format, e.defaultMessage()), e, "network-interface") + return reportError(resources.getString(R.string.notification_error_message_network_config_invalid_format, e.defaultMessage()), e, "network-interface") } catch (e: Exception) { - return reportError(resources.getString(R.string.message_could_not_read_network_configuration_format, e.defaultMessage()), e) + return reportError(resources.getString(R.string.notification_error_message_could_not_read_network_configuration_format, e.defaultMessage()), e) } val deviceFd = try { @@ -129,11 +129,11 @@ class TincVpnService : VpnService() { .also { applyIgnoringException(it::addDisallowedApplication, BuildConfig.APPLICATION_ID) } .establish()!! } catch (e: IllegalArgumentException) { - return reportError(resources.getString(R.string.message_network_config_invalid_format, e.defaultMessage()), e, "network-interface") + return reportError(resources.getString(R.string.notification_error_message_network_config_invalid_format, e.defaultMessage()), e, "network-interface") } catch (e: NullPointerException) { - return reportError(resources.getString(R.string.message_could_not_bind_iface), e) + return reportError(resources.getString(R.string.notification_error_message_could_not_bind_iface), e) } catch (e: Exception) { - return reportError(resources.getString(R.string.message_could_not_configure_iface, e.defaultMessage()), e) + return reportError(resources.getString(R.string.notification_error_message_could_not_configure_iface, e.defaultMessage()), e) } val daemon = Tincd.start(netName, deviceFd.fd, privateKeys.first?.fd, privateKeys.second?.fd) @@ -145,7 +145,7 @@ class TincVpnService : VpnService() { privateKeys.second?.close() if (exception != null) { - reportError(resources.getString(R.string.message_daemon_exited, exception.cause!!.defaultMessage()), exception) + reportError(resources.getString(R.string.notification_error_message_daemon_exited, exception.cause!!.defaultMessage()), exception) } else { log.info("tinc daemon started.") broadcastEvent(Actions.EVENT_CONNECTED) @@ -171,7 +171,7 @@ class TincVpnService : VpnService() { log.error(msg) broadcastEvent(Actions.EVENT_ABORTED) - App.alert(R.string.title_unable_to_start_tinc, msg, + App.alert(R.string.notification_error_title_unable_to_start_tinc, msg, if (docTopic != null) resources.getString(R.string.app_doc_url_format, docTopic) else null) } diff --git a/app/src/main/res/layout/dialog_decrypt_keys.xml b/app/src/main/res/layout/dialog_decrypt_keys.xml index 146f5ba..8f49d87 100644 --- a/app/src/main/res/layout/dialog_decrypt_keys.xml +++ b/app/src/main/res/layout/dialog_decrypt_keys.xml @@ -31,7 +31,7 @@ android:id="@+id/passphrase" android:layout_width="match_parent" android:layout_height="match_parent" - android:hint="@string/field_passphrase" + android:hint="@string/decrypt_key_modal_field_passphrase" android:inputType="textPassword"/> diff --git a/app/src/main/res/layout/status_network_info_fragment.xml b/app/src/main/res/layout/status_network_info_fragment.xml index 1013470..0b50839 100644 --- a/app/src/main/res/layout/status_network_info_fragment.xml +++ b/app/src/main/res/layout/status_network_info_fragment.xml @@ -131,7 +131,7 @@ diff --git a/app/src/main/res/menu/menu_base.xml b/app/src/main/res/menu/menu_base.xml index 4a39baf..703f7c2 100644 --- a/app/src/main/res/menu/menu_base.xml +++ b/app/src/main/res/menu/menu_base.xml @@ -28,7 +28,7 @@ android:icon="@drawable/ic_help_primary_24dp" android:onClick="aboutDialog" android:tint="@color/textAccent" - android:title="@string/menu_about" + android:title="@string/about_app_menu_about" app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/menu_start.xml b/app/src/main/res/menu/menu_start.xml index 311c36a..c764258 100644 --- a/app/src/main/res/menu/menu_start.xml +++ b/app/src/main/res/menu/menu_start.xml @@ -28,7 +28,7 @@ android:icon="@drawable/ic_build_primary_24dp" android:onClick="openConfigureActivity" android:tint="@color/textAccent" - android:title="@string/menu_configure" + android:title="@string/start_activity_menu_configure" app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/menu_status.xml b/app/src/main/res/menu/menu_status.xml index a6ad5bf..5585783 100644 --- a/app/src/main/res/menu/menu_status.xml +++ b/app/src/main/res/menu/menu_status.xml @@ -28,7 +28,7 @@ android:icon="@drawable/ic_link_off_primary_24dp" android:onClick="stopVpn" android:tint="@color/textAccent" - android:title="@string/menu_disconnect" + android:title="@string/status_activity_menu_disconnect" app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 38a2c6c..134a012 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -20,24 +20,14 @@ --> - Tinc App - Tinc - tinc mesh VPN デーモン用の Android バインディングとユーザーインターフェース。 - Copyright © 2017–2018 Pacien TRAN-GIRARD. - GNU General Public License v3 の条件で配布されるソフトウェア。 - https://tincapp.pacien.org - - アプリバージョン %1$s (%2$s ビルド) - Android %1$s %2$s で実行中 - デバイス ABI: %1$s - - このアプリについて - + tinc mesh VPN デーモン用の Android バインディングとユーザーインターフェース。 + GNU General Public License v3 の条件で配布されるソフトウェア。 + アプリバージョン %1$s (%2$s ビルド) + Android %1$s %2$s で実行中 + デバイス ABI: %1$s + このアプリについて Tinc ネットワーク名 - ネットワークに接続 - VPN 権限のリクエスト - - 閉じる - プロジェクト Web サイト + 閉じる + プロジェクト Web サイト diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 074e3a0..0f9985d 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -20,24 +20,14 @@ --> - Tinc-app - Tinc - Android-binding og brukergrensesnitt tiltenkt maskenett-VPN-nissen for Tinc. - Opphavsrett © 2017–2018 Pacien TRAN-GIRARD. - Programvare distribuert i henhold til vilkårene i GNU General Public Lisens v3. - https://tincapp.pacien.org - - Programversjon %1$s (%2$s build) - Kjører på Android %1$s %2$s - Enhets-binærkompabilitet: %1$s - - Om - + Android-binding og brukergrensesnitt tiltenkt maskenett-VPN-nissen for Tinc. + Programvare distribuert i henhold til vilkårene i GNU General Public Lisens v3. + Programversjon %1$s (%2$s build) + Kjører på Android %1$s %2$s + Enhets-binærkompabilitet: %1$s + Om Tinc-nettverksnavn - Koble til nettverk - Forespør VPN-tilganger - - Lukk - Prosjektets nettside + Lukk + Prosjektets nettside diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 34039ef..f6e1eda 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,32 +20,22 @@ --> - Tinc App - Tinc - tinc mesh VPN 守护进程的 Android 绑定和用户界面。 - 版权所有 © 2017–2018 Pacien TRAN-GIRARD。 - 软件根据 GNU 通用公共许可证第3版的条款进行分发。 - https://tincapp.pacien.org - https://tincapp.pacien.org/doc.html#%1$s - - 应用程序版本 %1$s(%2$s build) - 于 Android %1$s %2$s 上运行 - 设备 ABI:%1$s - - 关于此应用 - 配置 - 断开连接 - + tinc mesh VPN 守护进程的 Android 绑定和用户界面。 + 软件根据 GNU 通用公共许可证第3版的条款进行分发。 + 应用程序版本 %1$s(%2$s build) + 于 Android %1$s %2$s 上运行 + 设备 ABI:%1$s + 关于此应用 + 配置 + 断开连接 Tinc 网络名称 此节点名称 邀请 URL 当前密码\n(没有则为空) 新密码\n(空白以解密) 密码(可选) - 密码 - + 密码 连接到网络 - 请求 VPN 权限 路径信息 节点信息 工具 @@ -62,39 +52,35 @@ 不允许的应用程序 允许旁路 节点 - 错误 + 错误 新建网络 加入网络 - 无法启动 tinc + 无法启动 tinc 私钥加密 - 解锁 tinc 私钥 - - 关闭 - 取消 - 项目网站 + 解锁 tinc 私钥 + 关闭 + 取消 + 项目网站 生成节点配置和密钥 通过邀请 URL 加入网络 创建 加入 - 打开手册 + 打开手册 扫描 QR 码 - 安装 - 解锁 - 应用 + 解锁 + 应用 加密或解密私钥 - 未找到网络配置。 生成节点配置… 加入网络… - 网络配置写入成功。 - 没有提供网络名称。 - 没有找到网络“%1$s”的配置。 - 在“%1$s”找不到网络配置文件。 - network.conf 中的网络配置无效:\n%1$s + 网络配置写入成功。 + 没有提供网络名称。 + 没有找到网络“%1$s”的配置。 + 在“%1$s”找不到网络配置文件。 + network.conf 中的网络配置无效:\n%1$s 加密/解密私钥 - 无法解密私钥:\n%1$s - - - - + 无法解密私钥:\n%1$s + + + diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 3909347..d955ec0 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -20,32 +20,22 @@ --> - Tinc App - Tinc - tinc mesh VPN 守護進程的 Android 綁定和用户界面。 - 版權所有 © 2017–2018 Pacien TRAN-GIRARD。 - 軟件根據 GNU 通用公共許可證第3版的條款進行分發。 - https://tincapp.pacien.org - https://tincapp.pacien.org/doc.html#%1$s - - 應用程序版本 %1$s(%2$s build) - 於 Android %1$s %2$s 上運行 - 設備 ABI:%1$s - - 關於此應用 - 配置 - 斷開連接 - + tinc mesh VPN 守護進程的 Android 綁定和用户界面。 + 軟件根據 GNU 通用公共許可證第3版的條款進行分發。 + 應用程序版本 %1$s(%2$s build) + 於 Android %1$s %2$s 上運行 + 設備 ABI:%1$s + 關於此應用 + 配置 + 斷開連接 Tinc 網絡名稱 此節點名稱 邀請 URL 當前密碼\n(沒有則為空) 新密碼\n(空白以解密) 密碼(可選) - 密碼 - + 密碼 連接到網絡 - 請求 VPN 權限 路徑信息 節點信息 工具 @@ -62,39 +52,35 @@ 不允許的應用程序 允許旁路 節點 - 錯誤 + 錯誤 新建網絡 加入網絡 - 無法啟動 tinc + 無法啟動 tinc 私鑰加密 - 解鎖 tinc 私鑰 - - 關閉 - 取消 - 項目網站 + 解鎖 tinc 私鑰 + 關閉 + 取消 + 項目網站 生成節點配置和密鑰 通過邀請 URL 加入網絡 創建 加入 - 打開手冊 + 打開手冊 掃描 QR 碼 - 安裝 - 解鎖 - 應用 + 解鎖 + 應用 加密或解密私鑰 - 未找到網絡配置。 生成節點配置… 加入網絡… - 網絡配置寫入成功。 - 沒有提供網絡名稱。 - 沒有找到網絡“%1$s”的配置。 - 在“%1$s”找不到網絡配置文件。 - network.conf 中的網絡配置無效:\n%1$s + 網絡配置寫入成功。 + 沒有提供網絡名稱。 + 沒有找到網絡“%1$s”的配置。 + 在“%1$s”找不到網絡配置文件。 + network.conf 中的網絡配置無效:\n%1$s 加密/解密私鑰 - 無法解密私鑰:\n%1$s - - - - + 無法解密私鑰:\n%1$s + + + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index befb5ad..f500d6a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -20,32 +20,22 @@ --> - Tinc App - Tinc - tinc mesh VPN 守護程序的 Android 繫結和使用者介面。 - 版權所有 © 2017–2018 Pacien TRAN-GIRARD。 - 軟體根據 GNU 通用公共許可證第3版的條款進行分發。 - https://tincapp.pacien.org - https://tincapp.pacien.org/doc.html#%1$s - - 應用程式版本 %1$s(%2$s build) - 於 Android %1$s %2$s 上執行 - 裝置 ABI:%1$s - - 關於此應用 - 配置 - 斷開連線 - + tinc mesh VPN 守護程序的 Android 繫結和使用者介面。 + 軟體根據 GNU 通用公共許可證第3版的條款進行分發。 + 應用程式版本 %1$s(%2$s build) + 於 Android %1$s %2$s 上執行 + 裝置 ABI:%1$s + 關於此應用 + 配置 + 斷開連線 Tinc 網路名稱 此節點名稱 邀請 URL 當前密碼\n(沒有則為空) 新密碼\n(空白以解密) 密碼(可選) - 密碼 - + 密碼 連線到網路 - 請求 VPN 許可權 路徑資訊 節點資訊 工具 @@ -62,39 +52,35 @@ 不允許的應用程式 允許旁路 節點 - 錯誤 + 錯誤 新建網路 加入網路 - 無法啟動 tinc + 無法啟動 tinc 私鑰加密 - 解鎖 tinc 私鑰 - - 關閉 - 取消 - 專案網站 + 解鎖 tinc 私鑰 + 關閉 + 取消 + 專案網站 生成節點配置和金鑰 通過邀請 URL 加入網路 建立 加入 - 開啟手冊 + 開啟手冊 掃描 QR 碼 - 安裝 - 解鎖 - 應用 + 解鎖 + 應用 加密或解密私鑰 - 未找到網路配置。 生成節點配置… 加入網路… - 網路配置寫入成功。 - 沒有提供網路名稱。 - 沒有找到網路“%1$s”的配置。 - 在“%1$s”找不到網路配置檔案。 - network.conf 中的網路配置無效:\n%1$s + 網路配置寫入成功。 + 沒有提供網路名稱。 + 沒有找到網路“%1$s”的配置。 + 在“%1$s”找不到網路配置檔案。 + network.conf 中的網路配置無效:\n%1$s 加密/解密私鑰 - 無法解密私鑰:\n%1$s - - - - + 無法解密私鑰:\n%1$s + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6a06a4..f4e6658 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,71 +19,72 @@ --> - Tinc App - Tinc - Android binding and user interface for the tinc mesh VPN daemon. - Copyright © 2017–2018 Pacien TRAN-GIRARD and contributors. - Software distributed under the terms of the GNU General Public License v3. - https://tincapp.pacien.org - https://tincapp.pacien.org/doc.html#%1$s - pacien.gplayfr@gmail.com - - App version %1$s (%2$s build) - Running on Android %1$s %2$s - Device ABIs: %1$s - - Errors - - About this app - Configure - Disconnect - Show log - - Passphrase - - Request VPN permissions - Error - Unable to start tinc - Unlock tinc private keys - App crash - - Close - Cancel - Project website - Open manual - Install - Unlock - - Dismiss - Open web page - Send e-mail - Send report - - Network configuration successfully written. - No network name has been provided. - No configuration has been found for network \"%1$s\". - Network configuration file not found at \"%1$s\". - Invalid network configuration in network.conf:\n%1$s - Could not decrypt private keys:\n%1$s - Starting VPN… - Disconnecting VPN… - A passphrase is required to unlock the keyring. - Tinc daemon exited during startup:\n%1$s\nCheck the logs for more details. - Could not apply network interface configuration:\n%1$s - Could not bind network interface. Is another VPN running? - Invalid network name. - The application has previously encountered a fatal error. - The crash details have been saved in \"%1$s\". - No running tinc daemon has been found. - Could not read network interface configuration:\n%1$s - Could not read tinc private keys:\n%1$s + Tinc App + https://tincapp.pacien.org/doc.html#%1$s + + + Error + Loading… + yes + no + none + Close + Cancel + Apply + Open web page + + + About this app + Android binding and user interface for the tinc mesh VPN daemon. + Copyright © 2017–2018 Pacien TRAN-GIRARD and contributors. + Software distributed under the terms of the GNU General Public License v3. + https://tincapp.pacien.org + App version %1$s (%2$s build) + Running on Android %1$s %2$s + Device ABIs: %1$s + Project website + + + App crash + The application has previously encountered a fatal error. + The crash details have been saved in \"%1$s\". + Send e-mail + Send report + pacien.gplayfr@gmail.com + + + Unlock tinc private keys + Passphrase + Unlock + @string/generic_action_cancel + + + Errors + Open manual + Unable to start tinc + Could not read tinc private keys:\n%1$s + Could not read network interface configuration:\n%1$s + Could not bind network interface. Is another VPN running? + Could not apply network interface configuration:\n%1$s + Tinc daemon exited during startup:\n%1$s\nCheck the logs for more details. + No passphrase provided to unlock the keyring. + No network name has been provided. + No configuration has been found for network \"%1$s\". + Network configuration file not found at \"%1$s\". + Invalid network configuration in network.conf:\n%1$s + Could not decrypt private keys:\n%1$s + Configure Connect to network No network configuration has been found. Storage directory is unavailable. + Starting VPN… + Invalid network name. + Network configuration successfully written. + Path info Configuration directory Log directory @@ -110,15 +111,16 @@ Private keys encryption Current passphrase\n(leave empty if none) New passphrase\n(leave empty to decrypt) - Apply + @string/generic_action_apply Encrypting/decrypting private keys Connected to %s - Network - Nodes - Subnets + Disconnect + Show log + Disconnecting VPN… + Network Network name IP addresses Routes @@ -127,21 +129,23 @@ Allowed applications Disallowed applications Allow bypass + @string/generic_yes + @string/generic_no + @string/generic_none - yes - no - none - - Loading… + Nodes + @string/generic_loading unreachable this node direct via %s - Loading… + @string/generic_loading Node info - Close - Loading… + @string/generic_action_close + + Subnets + @string/generic_loading Log level: %s -- cgit v1.2.3