am 0512f51f: (-s ours) Import revised translations. DO NOT MERGE
Merge commit '0512f51f21901e4a3f3f60aba82e3bb87ab0cc72' into eclair
* commit '0512f51f21901e4a3f3f60aba82e3bb87ab0cc72':
Import revised translations. DO NOT MERGE
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1500d8b..6ddd679 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -6,6 +6,7 @@
<uses-permission android:name="com.google.android.providers.gmail.permission.READ_GMAIL" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.VIBRATE" />
@@ -15,6 +16,7 @@
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MASTER_CLEAR" />
+ <uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
@@ -64,7 +66,7 @@
<!-- Wireless Controls -->
<activity android:name="WirelessSettings"
- android:label="@string/radio_controls_title"
+ android:label="@string/wireless_networks_settings_title"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -124,6 +126,10 @@
<category android:name="com.android.settings.SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
+ <intent-filter>
+ <action android:name="android.bluetooth.devicepicker.action.LAUNCH" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
</activity>
<activity android:name=".vpn.VpnSettings"
@@ -176,7 +182,8 @@
</intent-filter>
</activity>
- <activity android:name="LanguageSettings" android:label="@string/language_picker_title"
+ <activity android:name="LanguageSettings"
+ android:label="@string/language_keyboard_settings_title"
android:clearTaskOnLaunch="true"
>
<intent-filter>
@@ -209,7 +216,8 @@
</intent-filter>
</activity>
- <activity android:name="SoundAndDisplaySettings" android:label="@string/sound_and_display_settings"
+ <activity android:name="SoundAndDisplaySettings"
+ android:label="@string/sound_and_display_settings_title"
android:clearTaskOnLaunch="true"
>
<intent-filter>
@@ -217,6 +225,7 @@
<action android:name="com.android.settings.SOUND_SETTINGS" />
<action android:name="com.android.settings.DISPLAY_SETTINGS" />
<action android:name="android.settings.DISPLAY_SETTINGS" />
+ <action android:name="android.settings.SOUND_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" />
<category android:name="com.android.settings.SHORTCUT" />
@@ -241,6 +250,15 @@
</intent-filter>
</activity>
+ <activity android:name="SettingsSafetyLegalActivity"
+ android:label="@string/settings_safetylegal_activity_title"
+ android:theme="@*android:style/Theme.Dialog.Alert">
+ <intent-filter>
+ <action android:name="android.settings.SAFETY" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
<activity android:name="ApplicationSettings" android:label="@string/applications_settings_header"
>
<intent-filter>
@@ -274,7 +292,20 @@
</intent-filter>
</activity>
- <activity android:name="SecuritySettings" android:label="@string/security_settings_title"
+ <activity android:name="RunningServices"
+ android:label="@string/runningservices_settings_title"
+ android:clearTaskOnLaunch="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.MONKEY" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ <category android:name="com.android.settings.SHORTCUT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="SecuritySettings"
+ android:label="@string/location_security_settings_title"
android:configChanges="orientation|keyboardHidden"
android:clearTaskOnLaunch="true"
>
@@ -282,14 +313,34 @@
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.SECURITY_SETTINGS" />
<action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
- <action android:name="android.security.ADD_CREDENTIAL" />
- <action android:name="android.security.UNLOCK_CREDENTIAL_STORAGE" />
+ <action android:name="android.credentials.UNLOCK" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" />
<category android:name="com.android.settings.SHORTCUT" />
</intent-filter>
</activity>
+ <activity android:name="CredentialInstaller"
+ android:label="@string/credential_installer_activity_title">
+ <intent-filter>
+ <action android:name="android.credentials.SYSTEM_INSTALL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name="PrivacySettings"
+ android:label="@string/privacy_settings_title"
+ android:configChanges="orientation|keyboardHidden"
+ android:clearTaskOnLaunch="true"
+ >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.settings.PRIVACY_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ </intent-filter>
+ </activity>
+
<activity android:name="IccLockSettings" android:label="@string/sim_lock_settings"
android:process="com.android.phone">
<intent-filter>
@@ -299,10 +350,12 @@
</intent-filter>
</activity>
- <activity android:name="AccessibilitySettings" android:label="@string/accessibility_settings_title"
- android:theme="@android:style/Theme.NoTitleBar">
+ <activity android:name="AccessibilitySettings"
+ android:label="@string/accessibility_settings_title">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
+ <action android:name="android.settings.ACCESSIBILITY_SETTINGS" />
+ <!-- Wtf... this action is bogus! Can we remove it? -->
<action android:name="ACCESSIBILITY_FEEDBACK_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" />
@@ -353,7 +406,8 @@
</intent-filter>
</activity>
- <activity android:name=".deviceinfo.Memory" android:label="@string/storage_settings_title">
+ <activity android:name=".deviceinfo.Memory"
+ android:label="@string/storage_settings_title">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.INTERNAL_STORAGE_SETTINGS" />
@@ -424,25 +478,46 @@
<activity android:name=".bluetooth.ConnectSpecificProfilesActivity"
android:label="@string/bluetooth_connect_specific_profiles_title" />
- <activity android:name=".bluetooth.BluetoothPinDialog"
- android:label="@string/bluetooth_pin_entry"
+ <activity android:name=".bluetooth.BluetoothPairingDialog"
+ android:label="@string/bluetooth_pairing_request"
+ android:excludeFromRecents="true"
android:theme="@*android:style/Theme.Dialog.Alert">
<intent-filter>
- <action android:name="android.bluetooth.intent.action.PAIRING_REQUEST" />
+ <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- <receiver android:name=".bluetooth.BluetoothPinRequest">
+ <activity android:name=".bluetooth.RequestPermissionActivity"
+ android:label="@string/bluetooth_permission_request"
+ android:excludeFromRecents="true"
+ android:permission="android.permission.BLUETOOTH"
+ android:theme="@*android:style/Theme.Dialog.Alert">
<intent-filter>
- <action android:name="android.bluetooth.intent.action.PAIRING_REQUEST" />
- <action android:name="android.bluetooth.intent.action.PAIRING_CANCEL" />
+ <action android:name="android.bluetooth.adapter.action.REQUEST_DISCOVERABLE" />
+ <action android:name="android.bluetooth.adapter.action.REQUEST_ENABLE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
+
+ <activity android:name=".bluetooth.RequestPermissionHelperActivity"
+ android:label="@string/bluetooth_pairing_request"
+ android:excludeFromRecents="true"
+ android:permission="android.permission.BLUETOOTH"
+ android:theme="@*android:style/Theme.Dialog.Alert">
+ </activity>
+
+ <receiver android:name=".bluetooth.BluetoothPairingRequest">
+ <intent-filter>
+ <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
+ <action android:name="android.bluetooth.device.action.PAIRING_CANCEL" />
</intent-filter>
</receiver>
<activity android:name="ActivityPicker"
android:label="@string/activity_picker_label"
- android:theme="@*android:style/Theme.Dialog.Alert">
+ android:theme="@*android:style/Theme.Dialog.Alert"
+ android:finishOnCloseSystemDialogs="true">
<intent-filter>
<action android:name="android.intent.action.PICK_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
@@ -545,7 +620,8 @@
<!-- Standard picker for widgets -->
<activity android:name="AppWidgetPickActivity"
android:label="@string/widget_picker_title"
- android:theme="@*android:style/Theme.Dialog.Alert">
+ android:theme="@*android:style/Theme.Dialog.Alert"
+ android:finishOnCloseSystemDialogs="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_PICK" />
<category android:name="android.intent.category.DEFAULT" />
@@ -590,7 +666,7 @@
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.conn.BACKGROUND_DATA_SETTING_CHANGED" />
- <action android:name="android.bluetooth.intent.action.BLUETOOTH_STATE_CHANGED" />
+ <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.intent.action.CLOSE_SYSTEM_DIALOGS" /> <!-- pick up misc changes -->
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget_info" />
diff --git a/res/drawable-hdpi/app_gauge.9.png b/res/drawable-hdpi/app_gauge.9.png
new file mode 100644
index 0000000..ac79d21
--- /dev/null
+++ b/res/drawable-hdpi/app_gauge.9.png
Binary files differ
diff --git a/res/drawable-hdpi/app_settings.png b/res/drawable-hdpi/app_settings.png
new file mode 100644
index 0000000..68b6ec6
--- /dev/null
+++ b/res/drawable-hdpi/app_settings.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_bg.9.png b/res/drawable-hdpi/appwidget_bg.9.png
new file mode 100644
index 0000000..6861664
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_bg.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_inner_default.9.png b/res/drawable-hdpi/appwidget_inner_default.9.png
new file mode 100644
index 0000000..ffdc02e
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_inner_default.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_inner_pressed.9.png b/res/drawable-hdpi/appwidget_inner_pressed.9.png
new file mode 100644
index 0000000..699173d
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_inner_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_inner_selected.9.png b/res/drawable-hdpi/appwidget_inner_selected.9.png
new file mode 100644
index 0000000..591c778
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_inner_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_outer_default.9.png b/res/drawable-hdpi/appwidget_outer_default.9.png
new file mode 100644
index 0000000..7952ea1
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_outer_default.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_outer_pressed.9.png b/res/drawable-hdpi/appwidget_outer_pressed.9.png
new file mode 100644
index 0000000..b85aef3
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_outer_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/appwidget_outer_selected.9.png b/res/drawable-hdpi/appwidget_outer_selected.9.png
new file mode 100644
index 0000000..f2d5e39
--- /dev/null
+++ b/res/drawable-hdpi/appwidget_outer_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi/dotted_line_480px.png b/res/drawable-hdpi/dotted_line_480px.png
new file mode 100644
index 0000000..4c25bae
--- /dev/null
+++ b/res/drawable-hdpi/dotted_line_480px.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bt_cellphone.png b/res/drawable-hdpi/ic_bt_cellphone.png
new file mode 100644
index 0000000..a3571ad
--- /dev/null
+++ b/res/drawable-hdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bt_headphones_a2dp.png b/res/drawable-hdpi/ic_bt_headphones_a2dp.png
new file mode 100644
index 0000000..777094e
--- /dev/null
+++ b/res/drawable-hdpi/ic_bt_headphones_a2dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bt_headset_hfp.png b/res/drawable-hdpi/ic_bt_headset_hfp.png
new file mode 100644
index 0000000..6450b4b
--- /dev/null
+++ b/res/drawable-hdpi/ic_bt_headset_hfp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bt_laptop.png b/res/drawable-hdpi/ic_bt_laptop.png
new file mode 100644
index 0000000..6a04c1d
--- /dev/null
+++ b/res/drawable-hdpi/ic_bt_laptop.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_next.png b/res/drawable-hdpi/ic_btn_next.png
new file mode 100644
index 0000000..ad00a95
--- /dev/null
+++ b/res/drawable-hdpi/ic_btn_next.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_launcher_settings.png b/res/drawable-hdpi/ic_launcher_settings.png
new file mode 100644
index 0000000..ff34a7f
--- /dev/null
+++ b/res/drawable-hdpi/ic_launcher_settings.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_3d_globe.png b/res/drawable-hdpi/ic_menu_3d_globe.png
new file mode 100644
index 0000000..0858fec
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_3d_globe.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_add.png b/res/drawable-hdpi/ic_menu_add.png
new file mode 100644
index 0000000..65cc01e
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_add.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_filter_settings.png b/res/drawable-hdpi/ic_menu_filter_settings.png
new file mode 100644
index 0000000..a6777e9
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_filter_settings.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_scan_network.png b/res/drawable-hdpi/ic_menu_scan_network.png
new file mode 100644
index 0000000..196ece0
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_scan_network.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_network_signal_0.png b/res/drawable-hdpi/ic_network_signal_0.png
new file mode 100644
index 0000000..6bbf947
--- /dev/null
+++ b/res/drawable-hdpi/ic_network_signal_0.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_network_signal_1.png b/res/drawable-hdpi/ic_network_signal_1.png
new file mode 100644
index 0000000..d3aa559
--- /dev/null
+++ b/res/drawable-hdpi/ic_network_signal_1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_network_signal_2.png b/res/drawable-hdpi/ic_network_signal_2.png
new file mode 100644
index 0000000..9c48285
--- /dev/null
+++ b/res/drawable-hdpi/ic_network_signal_2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_network_signal_3.png b/res/drawable-hdpi/ic_network_signal_3.png
new file mode 100644
index 0000000..3e94fc5
--- /dev/null
+++ b/res/drawable-hdpi/ic_network_signal_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_network_signal_4.png b/res/drawable-hdpi/ic_network_signal_4.png
new file mode 100644
index 0000000..e29b3ae
--- /dev/null
+++ b/res/drawable-hdpi/ic_network_signal_4.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_popup_brightness.png b/res/drawable-hdpi/ic_popup_brightness.png
new file mode 100644
index 0000000..a68b44f
--- /dev/null
+++ b/res/drawable-hdpi/ic_popup_brightness.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_bluetooth.png b/res/drawable-hdpi/ic_settings_bluetooth.png
new file mode 100644
index 0000000..3d9015f
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_bluetooth.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_cell_standby.png b/res/drawable-hdpi/ic_settings_cell_standby.png
new file mode 100644
index 0000000..262a860
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_cell_standby.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_display.png b/res/drawable-hdpi/ic_settings_display.png
new file mode 100644
index 0000000..20568d2
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_phone_idle.png b/res/drawable-hdpi/ic_settings_phone_idle.png
new file mode 100644
index 0000000..fd66f84
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_phone_idle.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_privacy.png b/res/drawable-hdpi/ic_settings_privacy.png
new file mode 100644
index 0000000..5fb60c2
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_privacy.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_sync.png b/res/drawable-hdpi/ic_settings_sync.png
new file mode 100755
index 0000000..f30da78
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_sync.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_voice_calls.png b/res/drawable-hdpi/ic_settings_voice_calls.png
new file mode 100644
index 0000000..3cb7e49
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_voice_calls.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_settings_wifi.png b/res/drawable-hdpi/ic_settings_wifi.png
new file mode 100644
index 0000000..b8c3eaa
--- /dev/null
+++ b/res/drawable-hdpi/ic_settings_wifi.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_1.png b/res/drawable-hdpi/ic_wifi_lock_signal_1.png
new file mode 100644
index 0000000..688df55
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_2.png b/res/drawable-hdpi/ic_wifi_lock_signal_2.png
new file mode 100644
index 0000000..a88675b
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_3.png b/res/drawable-hdpi/ic_wifi_lock_signal_3.png
new file mode 100644
index 0000000..1b8e15a
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_lock_signal_4.png b/res/drawable-hdpi/ic_wifi_lock_signal_4.png
new file mode 100644
index 0000000..9ad6432
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_1.png b/res/drawable-hdpi/ic_wifi_signal_1.png
new file mode 100644
index 0000000..b27f69b
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_signal_1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_2.png b/res/drawable-hdpi/ic_wifi_signal_2.png
new file mode 100644
index 0000000..5ea37f2
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_signal_2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_3.png b/res/drawable-hdpi/ic_wifi_signal_3.png
new file mode 100644
index 0000000..f8c0221
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_signal_3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_wifi_signal_4.png b/res/drawable-hdpi/ic_wifi_signal_4.png
new file mode 100644
index 0000000..b62bf35
--- /dev/null
+++ b/res/drawable-hdpi/ic_wifi_signal_4.png
Binary files differ
diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png
new file mode 100644
index 0000000..c30cc55
--- /dev/null
+++ b/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_00.png b/res/drawable-hdpi/lock_anim_00.png
new file mode 100644
index 0000000..08732e4
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_00.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_02.png b/res/drawable-hdpi/lock_anim_02.png
new file mode 100644
index 0000000..495b2da
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_02.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_04.png b/res/drawable-hdpi/lock_anim_04.png
new file mode 100644
index 0000000..8201fd9
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_04.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_06.png b/res/drawable-hdpi/lock_anim_06.png
new file mode 100644
index 0000000..dac09e1
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_06.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_08.png b/res/drawable-hdpi/lock_anim_08.png
new file mode 100644
index 0000000..07f7e34
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_08.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_10.png b/res/drawable-hdpi/lock_anim_10.png
new file mode 100644
index 0000000..adb981d
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_10.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_12.png b/res/drawable-hdpi/lock_anim_12.png
new file mode 100644
index 0000000..3ccdc85
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_12.png
Binary files differ
diff --git a/res/drawable-hdpi/lock_anim_14.png b/res/drawable-hdpi/lock_anim_14.png
new file mode 100644
index 0000000..2f40d9e
--- /dev/null
+++ b/res/drawable-hdpi/lock_anim_14.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_bluetooth.png b/res/drawable-hdpi/widget_btn_bluetooth.png
new file mode 100644
index 0000000..354ea0d
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_bluetooth.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_bluetooth_gray.png b/res/drawable-hdpi/widget_btn_bluetooth_gray.png
new file mode 100644
index 0000000..42bef3b
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_bluetooth_gray.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_bluetooth_off.png b/res/drawable-hdpi/widget_btn_bluetooth_off.png
new file mode 100644
index 0000000..bce5cfb
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_bluetooth_off.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_brightness.png b/res/drawable-hdpi/widget_btn_brightness.png
new file mode 100644
index 0000000..605a051
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_brightness.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_brightness_off.png b/res/drawable-hdpi/widget_btn_brightness_off.png
new file mode 100644
index 0000000..30c4aca
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_brightness_off.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_gps.png b/res/drawable-hdpi/widget_btn_gps.png
new file mode 100644
index 0000000..2a7baae
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_gps.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_gps_off.png b/res/drawable-hdpi/widget_btn_gps_off.png
new file mode 100644
index 0000000..ea1c7f3
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_gps_off.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_sync.png b/res/drawable-hdpi/widget_btn_sync.png
new file mode 100644
index 0000000..76b76e1
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_sync.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_sync_off.png b/res/drawable-hdpi/widget_btn_sync_off.png
new file mode 100644
index 0000000..8a489ad
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_sync_off.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_wifi.png b/res/drawable-hdpi/widget_btn_wifi.png
new file mode 100644
index 0000000..06d0dbf
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_wifi.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_wifi_gray.png b/res/drawable-hdpi/widget_btn_wifi_gray.png
new file mode 100644
index 0000000..d16f903
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_wifi_gray.png
Binary files differ
diff --git a/res/drawable-hdpi/widget_btn_wifi_off.png b/res/drawable-hdpi/widget_btn_wifi_off.png
new file mode 100644
index 0000000..823d040
--- /dev/null
+++ b/res/drawable-hdpi/widget_btn_wifi_off.png
Binary files differ
diff --git a/res/drawable/app_gauge.9.png b/res/drawable-mdpi/app_gauge.9.png
similarity index 100%
rename from res/drawable/app_gauge.9.png
rename to res/drawable-mdpi/app_gauge.9.png
Binary files differ
diff --git a/res/drawable/app_settings.png b/res/drawable-mdpi/app_settings.png
similarity index 100%
rename from res/drawable/app_settings.png
rename to res/drawable-mdpi/app_settings.png
Binary files differ
diff --git a/res/drawable-mdpi/appwidget_bg.9.png b/res/drawable-mdpi/appwidget_bg.9.png
new file mode 100644
index 0000000..8e7e3d7
--- /dev/null
+++ b/res/drawable-mdpi/appwidget_bg.9.png
Binary files differ
diff --git a/res/drawable/appwidget_inner_default.9.png b/res/drawable-mdpi/appwidget_inner_default.9.png
similarity index 100%
rename from res/drawable/appwidget_inner_default.9.png
rename to res/drawable-mdpi/appwidget_inner_default.9.png
Binary files differ
diff --git a/res/drawable/appwidget_inner_pressed.9.png b/res/drawable-mdpi/appwidget_inner_pressed.9.png
similarity index 100%
rename from res/drawable/appwidget_inner_pressed.9.png
rename to res/drawable-mdpi/appwidget_inner_pressed.9.png
Binary files differ
diff --git a/res/drawable/appwidget_inner_selected.9.png b/res/drawable-mdpi/appwidget_inner_selected.9.png
similarity index 100%
rename from res/drawable/appwidget_inner_selected.9.png
rename to res/drawable-mdpi/appwidget_inner_selected.9.png
Binary files differ
diff --git a/res/drawable/appwidget_outer_default.9.png b/res/drawable-mdpi/appwidget_outer_default.9.png
similarity index 100%
rename from res/drawable/appwidget_outer_default.9.png
rename to res/drawable-mdpi/appwidget_outer_default.9.png
Binary files differ
diff --git a/res/drawable/appwidget_outer_pressed.9.png b/res/drawable-mdpi/appwidget_outer_pressed.9.png
similarity index 100%
rename from res/drawable/appwidget_outer_pressed.9.png
rename to res/drawable-mdpi/appwidget_outer_pressed.9.png
Binary files differ
diff --git a/res/drawable/appwidget_outer_selected.9.png b/res/drawable-mdpi/appwidget_outer_selected.9.png
similarity index 100%
rename from res/drawable/appwidget_outer_selected.9.png
rename to res/drawable-mdpi/appwidget_outer_selected.9.png
Binary files differ
diff --git a/res/drawable/dotted_line_480px.png b/res/drawable-mdpi/dotted_line_480px.png
similarity index 100%
rename from res/drawable/dotted_line_480px.png
rename to res/drawable-mdpi/dotted_line_480px.png
Binary files differ
diff --git a/res/drawable/ic_bt_cellphone.png b/res/drawable-mdpi/ic_bt_cellphone.png
similarity index 100%
rename from res/drawable/ic_bt_cellphone.png
rename to res/drawable-mdpi/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable/ic_bt_headphones_a2dp.png b/res/drawable-mdpi/ic_bt_headphones_a2dp.png
similarity index 100%
rename from res/drawable/ic_bt_headphones_a2dp.png
rename to res/drawable-mdpi/ic_bt_headphones_a2dp.png
Binary files differ
diff --git a/res/drawable/ic_bt_headset_hfp.png b/res/drawable-mdpi/ic_bt_headset_hfp.png
similarity index 100%
rename from res/drawable/ic_bt_headset_hfp.png
rename to res/drawable-mdpi/ic_bt_headset_hfp.png
Binary files differ
diff --git a/res/drawable/ic_bt_laptop.png b/res/drawable-mdpi/ic_bt_laptop.png
similarity index 100%
rename from res/drawable/ic_bt_laptop.png
rename to res/drawable-mdpi/ic_bt_laptop.png
Binary files differ
diff --git a/res/drawable/ic_btn_next.png b/res/drawable-mdpi/ic_btn_next.png
similarity index 100%
rename from res/drawable/ic_btn_next.png
rename to res/drawable-mdpi/ic_btn_next.png
Binary files differ
diff --git a/res/drawable/ic_launcher_settings.png b/res/drawable-mdpi/ic_launcher_settings.png
similarity index 100%
rename from res/drawable/ic_launcher_settings.png
rename to res/drawable-mdpi/ic_launcher_settings.png
Binary files differ
diff --git a/res/drawable/ic_menu_3d_globe.png b/res/drawable-mdpi/ic_menu_3d_globe.png
similarity index 100%
rename from res/drawable/ic_menu_3d_globe.png
rename to res/drawable-mdpi/ic_menu_3d_globe.png
Binary files differ
diff --git a/res/drawable/ic_menu_add.png b/res/drawable-mdpi/ic_menu_add.png
similarity index 100%
rename from res/drawable/ic_menu_add.png
rename to res/drawable-mdpi/ic_menu_add.png
Binary files differ
diff --git a/res/drawable/ic_menu_filter_settings.png b/res/drawable-mdpi/ic_menu_filter_settings.png
similarity index 100%
rename from res/drawable/ic_menu_filter_settings.png
rename to res/drawable-mdpi/ic_menu_filter_settings.png
Binary files differ
diff --git a/res/drawable/ic_menu_scan_network.png b/res/drawable-mdpi/ic_menu_scan_network.png
similarity index 100%
rename from res/drawable/ic_menu_scan_network.png
rename to res/drawable-mdpi/ic_menu_scan_network.png
Binary files differ
diff --git a/res/drawable/ic_network_signal_0.png b/res/drawable-mdpi/ic_network_signal_0.png
similarity index 100%
rename from res/drawable/ic_network_signal_0.png
rename to res/drawable-mdpi/ic_network_signal_0.png
Binary files differ
diff --git a/res/drawable/ic_network_signal_1.png b/res/drawable-mdpi/ic_network_signal_1.png
similarity index 100%
rename from res/drawable/ic_network_signal_1.png
rename to res/drawable-mdpi/ic_network_signal_1.png
Binary files differ
diff --git a/res/drawable/ic_network_signal_2.png b/res/drawable-mdpi/ic_network_signal_2.png
similarity index 100%
rename from res/drawable/ic_network_signal_2.png
rename to res/drawable-mdpi/ic_network_signal_2.png
Binary files differ
diff --git a/res/drawable/ic_network_signal_3.png b/res/drawable-mdpi/ic_network_signal_3.png
similarity index 100%
rename from res/drawable/ic_network_signal_3.png
rename to res/drawable-mdpi/ic_network_signal_3.png
Binary files differ
diff --git a/res/drawable/ic_network_signal_4.png b/res/drawable-mdpi/ic_network_signal_4.png
similarity index 100%
rename from res/drawable/ic_network_signal_4.png
rename to res/drawable-mdpi/ic_network_signal_4.png
Binary files differ
diff --git a/res/drawable/ic_popup_brightness.png b/res/drawable-mdpi/ic_popup_brightness.png
similarity index 100%
rename from res/drawable/ic_popup_brightness.png
rename to res/drawable-mdpi/ic_popup_brightness.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_bluetooth.png b/res/drawable-mdpi/ic_settings_bluetooth.png
new file mode 100644
index 0000000..8cf80c0
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_bluetooth.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_cell_standby.png b/res/drawable-mdpi/ic_settings_cell_standby.png
new file mode 100644
index 0000000..0ac7b5d
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_cell_standby.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_display.png b/res/drawable-mdpi/ic_settings_display.png
new file mode 100644
index 0000000..b676b85
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_display.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_phone_idle.png b/res/drawable-mdpi/ic_settings_phone_idle.png
new file mode 100644
index 0000000..7734b09
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_phone_idle.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_privacy.png b/res/drawable-mdpi/ic_settings_privacy.png
new file mode 100644
index 0000000..30ba317
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_privacy.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_sync.png b/res/drawable-mdpi/ic_settings_sync.png
new file mode 100755
index 0000000..71bf5f1
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_sync.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_voice_calls.png b/res/drawable-mdpi/ic_settings_voice_calls.png
new file mode 100644
index 0000000..89d04d7
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_voice_calls.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_settings_wifi.png b/res/drawable-mdpi/ic_settings_wifi.png
new file mode 100644
index 0000000..e8f3129
--- /dev/null
+++ b/res/drawable-mdpi/ic_settings_wifi.png
Binary files differ
diff --git a/res/drawable/ic_wifi_lock_signal_1.png b/res/drawable-mdpi/ic_wifi_lock_signal_1.png
similarity index 100%
rename from res/drawable/ic_wifi_lock_signal_1.png
rename to res/drawable-mdpi/ic_wifi_lock_signal_1.png
Binary files differ
diff --git a/res/drawable/ic_wifi_lock_signal_2.png b/res/drawable-mdpi/ic_wifi_lock_signal_2.png
similarity index 100%
rename from res/drawable/ic_wifi_lock_signal_2.png
rename to res/drawable-mdpi/ic_wifi_lock_signal_2.png
Binary files differ
diff --git a/res/drawable/ic_wifi_lock_signal_3.png b/res/drawable-mdpi/ic_wifi_lock_signal_3.png
similarity index 100%
rename from res/drawable/ic_wifi_lock_signal_3.png
rename to res/drawable-mdpi/ic_wifi_lock_signal_3.png
Binary files differ
diff --git a/res/drawable/ic_wifi_lock_signal_4.png b/res/drawable-mdpi/ic_wifi_lock_signal_4.png
similarity index 100%
rename from res/drawable/ic_wifi_lock_signal_4.png
rename to res/drawable-mdpi/ic_wifi_lock_signal_4.png
Binary files differ
diff --git a/res/drawable/ic_wifi_signal_1.png b/res/drawable-mdpi/ic_wifi_signal_1.png
similarity index 100%
rename from res/drawable/ic_wifi_signal_1.png
rename to res/drawable-mdpi/ic_wifi_signal_1.png
Binary files differ
diff --git a/res/drawable/ic_wifi_signal_2.png b/res/drawable-mdpi/ic_wifi_signal_2.png
similarity index 100%
rename from res/drawable/ic_wifi_signal_2.png
rename to res/drawable-mdpi/ic_wifi_signal_2.png
Binary files differ
diff --git a/res/drawable/ic_wifi_signal_3.png b/res/drawable-mdpi/ic_wifi_signal_3.png
similarity index 100%
rename from res/drawable/ic_wifi_signal_3.png
rename to res/drawable-mdpi/ic_wifi_signal_3.png
Binary files differ
diff --git a/res/drawable/ic_wifi_signal_4.png b/res/drawable-mdpi/ic_wifi_signal_4.png
similarity index 100%
rename from res/drawable/ic_wifi_signal_4.png
rename to res/drawable-mdpi/ic_wifi_signal_4.png
Binary files differ
diff --git a/res/drawable/icon.png b/res/drawable-mdpi/icon.png
similarity index 100%
rename from res/drawable/icon.png
rename to res/drawable-mdpi/icon.png
Binary files differ
diff --git a/res/drawable/lock_anim_00.png b/res/drawable-mdpi/lock_anim_00.png
similarity index 100%
rename from res/drawable/lock_anim_00.png
rename to res/drawable-mdpi/lock_anim_00.png
Binary files differ
diff --git a/res/drawable/lock_anim_02.png b/res/drawable-mdpi/lock_anim_02.png
similarity index 100%
rename from res/drawable/lock_anim_02.png
rename to res/drawable-mdpi/lock_anim_02.png
Binary files differ
diff --git a/res/drawable/lock_anim_04.png b/res/drawable-mdpi/lock_anim_04.png
similarity index 100%
rename from res/drawable/lock_anim_04.png
rename to res/drawable-mdpi/lock_anim_04.png
Binary files differ
diff --git a/res/drawable/lock_anim_06.png b/res/drawable-mdpi/lock_anim_06.png
similarity index 100%
rename from res/drawable/lock_anim_06.png
rename to res/drawable-mdpi/lock_anim_06.png
Binary files differ
diff --git a/res/drawable/lock_anim_08.png b/res/drawable-mdpi/lock_anim_08.png
similarity index 100%
rename from res/drawable/lock_anim_08.png
rename to res/drawable-mdpi/lock_anim_08.png
Binary files differ
diff --git a/res/drawable/lock_anim_10.png b/res/drawable-mdpi/lock_anim_10.png
similarity index 100%
rename from res/drawable/lock_anim_10.png
rename to res/drawable-mdpi/lock_anim_10.png
Binary files differ
diff --git a/res/drawable/lock_anim_12.png b/res/drawable-mdpi/lock_anim_12.png
similarity index 100%
rename from res/drawable/lock_anim_12.png
rename to res/drawable-mdpi/lock_anim_12.png
Binary files differ
diff --git a/res/drawable/lock_anim_14.png b/res/drawable-mdpi/lock_anim_14.png
similarity index 100%
rename from res/drawable/lock_anim_14.png
rename to res/drawable-mdpi/lock_anim_14.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth.png b/res/drawable-mdpi/widget_btn_bluetooth.png
similarity index 100%
rename from res/drawable/widget_btn_bluetooth.png
rename to res/drawable-mdpi/widget_btn_bluetooth.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth_gray.png b/res/drawable-mdpi/widget_btn_bluetooth_gray.png
similarity index 100%
rename from res/drawable/widget_btn_bluetooth_gray.png
rename to res/drawable-mdpi/widget_btn_bluetooth_gray.png
Binary files differ
diff --git a/res/drawable/widget_btn_bluetooth_off.png b/res/drawable-mdpi/widget_btn_bluetooth_off.png
similarity index 100%
rename from res/drawable/widget_btn_bluetooth_off.png
rename to res/drawable-mdpi/widget_btn_bluetooth_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_brightness.png b/res/drawable-mdpi/widget_btn_brightness.png
similarity index 100%
rename from res/drawable/widget_btn_brightness.png
rename to res/drawable-mdpi/widget_btn_brightness.png
Binary files differ
diff --git a/res/drawable/widget_btn_brightness_off.png b/res/drawable-mdpi/widget_btn_brightness_off.png
similarity index 100%
rename from res/drawable/widget_btn_brightness_off.png
rename to res/drawable-mdpi/widget_btn_brightness_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_gps.png b/res/drawable-mdpi/widget_btn_gps.png
similarity index 100%
rename from res/drawable/widget_btn_gps.png
rename to res/drawable-mdpi/widget_btn_gps.png
Binary files differ
diff --git a/res/drawable/widget_btn_gps_off.png b/res/drawable-mdpi/widget_btn_gps_off.png
similarity index 100%
rename from res/drawable/widget_btn_gps_off.png
rename to res/drawable-mdpi/widget_btn_gps_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_sync.png b/res/drawable-mdpi/widget_btn_sync.png
similarity index 100%
rename from res/drawable/widget_btn_sync.png
rename to res/drawable-mdpi/widget_btn_sync.png
Binary files differ
diff --git a/res/drawable/widget_btn_sync_off.png b/res/drawable-mdpi/widget_btn_sync_off.png
similarity index 100%
rename from res/drawable/widget_btn_sync_off.png
rename to res/drawable-mdpi/widget_btn_sync_off.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi.png b/res/drawable-mdpi/widget_btn_wifi.png
similarity index 100%
rename from res/drawable/widget_btn_wifi.png
rename to res/drawable-mdpi/widget_btn_wifi.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi_gray.png b/res/drawable-mdpi/widget_btn_wifi_gray.png
similarity index 100%
rename from res/drawable/widget_btn_wifi_gray.png
rename to res/drawable-mdpi/widget_btn_wifi_gray.png
Binary files differ
diff --git a/res/drawable/widget_btn_wifi_off.png b/res/drawable-mdpi/widget_btn_wifi_off.png
similarity index 100%
rename from res/drawable/widget_btn_wifi_off.png
rename to res/drawable-mdpi/widget_btn_wifi_off.png
Binary files differ
diff --git a/res/drawable/appwidget_bg.9.png b/res/drawable/appwidget_bg.9.png
deleted file mode 100644
index 688d131..0000000
--- a/res/drawable/appwidget_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_power_system.png b/res/drawable/ic_power_system.png
new file mode 100755
index 0000000..cce5187
--- /dev/null
+++ b/res/drawable/ic_power_system.png
Binary files differ
diff --git a/res/drawable/ic_settings_about.png b/res/drawable/ic_settings_about.png
new file mode 100755
index 0000000..25f0344
--- /dev/null
+++ b/res/drawable/ic_settings_about.png
Binary files differ
diff --git a/res/drawable/ic_settings_accessibility.png b/res/drawable/ic_settings_accessibility.png
new file mode 100755
index 0000000..71663ee
--- /dev/null
+++ b/res/drawable/ic_settings_accessibility.png
Binary files differ
diff --git a/res/drawable/ic_settings_applications.png b/res/drawable/ic_settings_applications.png
new file mode 100755
index 0000000..04bf359
--- /dev/null
+++ b/res/drawable/ic_settings_applications.png
Binary files differ
diff --git a/res/drawable/ic_settings_call.png b/res/drawable/ic_settings_call.png
new file mode 100755
index 0000000..b4cf0db
--- /dev/null
+++ b/res/drawable/ic_settings_call.png
Binary files differ
diff --git a/res/drawable/ic_settings_date_time.png b/res/drawable/ic_settings_date_time.png
new file mode 100755
index 0000000..d3e99b9
--- /dev/null
+++ b/res/drawable/ic_settings_date_time.png
Binary files differ
diff --git a/res/drawable/ic_settings_language.png b/res/drawable/ic_settings_language.png
new file mode 100755
index 0000000..df271d6
--- /dev/null
+++ b/res/drawable/ic_settings_language.png
Binary files differ
diff --git a/res/drawable/ic_settings_privacy.png b/res/drawable/ic_settings_privacy.png
new file mode 100755
index 0000000..7e4868c
--- /dev/null
+++ b/res/drawable/ic_settings_privacy.png
Binary files differ
diff --git a/res/drawable/ic_settings_search.png b/res/drawable/ic_settings_search.png
new file mode 100755
index 0000000..0978365
--- /dev/null
+++ b/res/drawable/ic_settings_search.png
Binary files differ
diff --git a/res/drawable/ic_settings_security.png b/res/drawable/ic_settings_security.png
new file mode 100755
index 0000000..7e4868c
--- /dev/null
+++ b/res/drawable/ic_settings_security.png
Binary files differ
diff --git a/res/drawable/ic_settings_sound_display.png b/res/drawable/ic_settings_sound_display.png
new file mode 100755
index 0000000..73c93bd
--- /dev/null
+++ b/res/drawable/ic_settings_sound_display.png
Binary files differ
diff --git a/res/drawable/ic_settings_speech.png b/res/drawable/ic_settings_speech.png
new file mode 100755
index 0000000..d7f5e24
--- /dev/null
+++ b/res/drawable/ic_settings_speech.png
Binary files differ
diff --git a/res/drawable/ic_settings_storage.png b/res/drawable/ic_settings_storage.png
new file mode 100755
index 0000000..a209f6f
--- /dev/null
+++ b/res/drawable/ic_settings_storage.png
Binary files differ
diff --git a/res/drawable/ic_settings_wireless.png b/res/drawable/ic_settings_wireless.png
new file mode 100755
index 0000000..1eac153
--- /dev/null
+++ b/res/drawable/ic_settings_wireless.png
Binary files differ
diff --git a/res/layout/battery_info.xml b/res/layout/battery_info.xml
index 62f5d69..1016ad1 100644
--- a/res/layout/battery_info.xml
+++ b/res/layout/battery_info.xml
@@ -26,6 +26,12 @@
<TextView android:id="@+id/status" style="@style/info_value" />
</LinearLayout>
+ <!-- Battery Status -->
+ <LinearLayout style="@style/entry_layout">
+ <TextView android:text="@string/battery_info_power_label" style="@style/info_label" />
+ <TextView android:id="@+id/power" style="@style/info_value" />
+ </LinearLayout>
+
<!-- Battery Level -->
<LinearLayout style="@style/entry_layout">
<TextView android:text="@string/battery_info_level_label" style="@style/info_label" />
diff --git a/res/layout/bluetooth_discoverable.xml b/res/layout/bluetooth_discoverable.xml
new file mode 100644
index 0000000..3673774
--- /dev/null
+++ b/res/layout/bluetooth_discoverable.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="fill_parent"
+ android:layout_width="fill_parent">
+
+ <TextView
+ android:id="@+id/message"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:paddingLeft="20dip"
+ android:paddingRight="20dip"
+ android:gravity="center_horizontal"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+</ScrollView>
diff --git a/res/layout/choose_lock_pattern.xml b/res/layout/choose_lock_pattern.xml
index b4472ba..78ab8b4 100644
--- a/res/layout/choose_lock_pattern.xml
+++ b/res/layout/choose_lock_pattern.xml
@@ -21,39 +21,49 @@
android:layout_height="fill_parent"
android:background="@color/black">
- <TextView android:id="@+id/headerText"
+ <!-- takes up all space above button bar at bottom -->
+ <LinearLayout
+ android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="0dip"
- android:layout_weight="1"
- android:gravity="center"
- android:textSize="18sp"/>
+ android:layout_weight="1">
- <View
- android:background="@*android:drawable/code_lock_top"
- android:layout_width="fill_parent"
- android:layout_height="2dip" />
- <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- <View
- android:background="@*android:drawable/code_lock_bottom"
- android:layout_width="fill_parent"
- android:layout_height="8dip" />
+ <TextView android:id="@+id/headerText"
+ android:layout_width="fill_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:textSize="18sp"/>
- <!-- message just above the button bar -->
- <TextView android:id="@+id/footerText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:textSize="14sp"/>
+ <View
+ android:background="@*android:drawable/code_lock_top"
+ android:layout_width="fill_parent"
+ android:layout_height="2dip" />
+ <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
- <!-- confirm / restart buttons -->
+ <!-- bottom line looks bad when button bar is their too, omit in this case -->
+ <!--View
+ android:background="@*android:drawable/code_lock_bottom"
+ android:layout_width="fill_parent"
+ android:layout_height="8dip" /-->
+
+ <TextView android:id="@+id/footerText"
+ android:layout_width="fill_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1"
+ android:gravity="center"
+ android:textSize="14sp"/>
+
+ </LinearLayout>
+
+
<LinearLayout style="@android:style/ButtonBar"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
- <!-- left button: skip, or retry -->
<Button android:id="@+id/footerLeftButton"
android:layout_height="wrap_content"
android:layout_width="140dip"
@@ -61,14 +71,12 @@
android:singleLine="true"
android:text="@string/lockpattern_restart_button_text"/>
- <!-- Placeholder to get blank space between the two buttons -->
<View
android:visibility="invisible"
android:layout_height="0dip"
android:layout_width="1dip"
android:layout_weight="1" />
- <!-- right button: confirm or ok -->
<Button android:id="@+id/footerRightButton"
android:layout_height="wrap_content"
android:layout_width="140dip"
diff --git a/res/layout/compute_sizes.xml b/res/layout/compute_sizes.xml
index 1c8e966..b32ba58 100755
--- a/res/layout/compute_sizes.xml
+++ b/res/layout/compute_sizes.xml
@@ -23,7 +23,7 @@
android:drawSelectorOnTop="false"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
- <TextView android:id="@+id/empty_view"
+ <TextView android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="20dip"
diff --git a/res/layout/cstor_set_password_dialog_view.xml b/res/layout/credentials_password_dialog.xml
similarity index 62%
rename from res/layout/cstor_set_password_dialog_view.xml
rename to res/layout/credentials_password_dialog.xml
index eda317a..c23cc68 100644
--- a/res/layout/cstor_set_password_dialog_view.xml
+++ b/res/layout/credentials_password_dialog.xml
@@ -24,40 +24,37 @@
android:layout_height="fill_parent"
android:padding="15dip">
- <TextView android:id="@+id/cstor_first_time_hint"
+ <TextView android:id="@+id/hint"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/vpn_connect_normal_text_size"
- android:text="@string/cstor_first_time_hint"
- android:layout_marginBottom="10sp" />
+ android:text="@string/credentials_first_time_hint"
+ android:layout_marginBottom="10sp"
+ android:visibility="gone"/>
- <TextView android:id="@+id/cstor_error"
+ <TextView android:id="@+id/error"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/red"
android:textStyle="bold"
- android:text="@string/cstor_password_empty_error" />
+ android:visibility="gone"/>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/cstor_old_password_block"
- android:orientation="vertical"
+ <TextView android:id="@+id/old_password_prompt"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/credentials_old_password"
+ android:visibility="gone"/>
+ <EditText android:id="@+id/old_password"
android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/cstor_old_password" />
- <EditText android:id="@+id/cstor_old_password"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:password="True"
- android:singleLine="True"/>
- </LinearLayout>
+ android:layout_height="wrap_content"
+ android:password="True"
+ android:singleLine="True"
+ android:visibility="gone"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:text="@string/cstor_new_password" />
- <EditText android:id="@+id/cstor_new_password"
+ android:text="@string/credentials_new_password" />
+ <EditText android:id="@+id/new_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="True"
@@ -65,8 +62,8 @@
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:text="@string/cstor_confirm_password" />
- <EditText android:id="@+id/cstor_confirm_password"
+ android:text="@string/credentials_confirm_password" />
+ <EditText android:id="@+id/confirm_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="True"
diff --git a/res/layout/cstor_unlock_dialog_view.xml b/res/layout/credentials_unlock_dialog.xml
similarity index 81%
rename from res/layout/cstor_unlock_dialog_view.xml
rename to res/layout/credentials_unlock_dialog.xml
index 895306a..2ba2ace 100644
--- a/res/layout/cstor_unlock_dialog_view.xml
+++ b/res/layout/credentials_unlock_dialog.xml
@@ -24,20 +24,22 @@
android:layout_height="fill_parent"
android:padding="15dip">
- <TextView android:id="@+id/cstor_access_dialog_hint_from_action"
+ <TextView android:id="@+id/hint"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/vpn_connect_normal_text_size"
- android:text="@string/cstor_access_dialog_hint_from_action"
- android:layout_marginBottom="10sp" />
+ android:text="@string/credentials_unlock_hint"
+ android:layout_marginBottom="10sp"
+ android:visibility="gone"/>
- <TextView android:id="@+id/cstor_error"
+ <TextView android:id="@+id/error"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/red"
- android:textStyle="bold" />
+ android:textStyle="bold"
+ android:visibility="gone"/>
- <EditText android:id="@+id/cstor_password"
+ <EditText android:id="@+id/old_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="True"
diff --git a/res/layout/cstor_name_credential_dialog_view.xml b/res/layout/cstor_name_credential_dialog_view.xml
deleted file mode 100644
index 33688bd..0000000
--- a/res/layout/cstor_name_credential_dialog_view.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
-
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="15dip">
-
- <TextView android:id="@+id/cstor_name_credential_hint"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textSize="@dimen/vpn_connect_normal_text_size"
- android:text="@string/cstor_name_credential_hint"
- android:layout_marginBottom="10sp" />
-
- <TextView android:id="@+id/cstor_error"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textColor="@color/red"
- android:textStyle="bold" />
-
- <TextView android:id="@+id/cstor_credential_name_title"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/cstor_credential_name" />
- <EditText android:id="@+id/cstor_credential_name"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:singleLine="True"/>
-
- <LinearLayout android:id="@+id/cstor_credential_password_container"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="0dip">
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/cstor_credential_password" />
- <EditText android:id="@+id/cstor_credential_password"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:password="True"
- android:singleLine="True"/>
- </LinearLayout>
-
- <TextView android:id="@+id/cstor_credential_info_title"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/cstor_credential_info" />
- <TextView android:id="@+id/cstor_credential_info"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
-</ScrollView>
diff --git a/res/layout/dialog_edittext.xml b/res/layout/dialog_edittext.xml
index 9ef1205..0dcf673 100644
--- a/res/layout/dialog_edittext.xml
+++ b/res/layout/dialog_edittext.xml
@@ -24,6 +24,7 @@
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
+ android:maxLength="50"
/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/installed_app_details.xml b/res/layout/installed_app_details.xml
index 13d3b10..2810604 100644
--- a/res/layout/installed_app_details.xml
+++ b/res/layout/installed_app_details.xml
@@ -304,7 +304,7 @@
android:layout_centerHorizontal="true"
android:layout_width="150dip"
android:text="@string/clear_activities"
- android:layout_height="wrap_content" />
+ android:layout_height="wrap_content" />
</RelativeLayout>
<!-- Other controls section -->
@@ -320,6 +320,7 @@
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
+ android:paddingTop="6dip"
android:layout_width="150dip"
android:text="@string/force_stop"
android:layout_height="wrap_content" />
diff --git a/res/layout/preference_dialog_brightness.xml b/res/layout/preference_dialog_brightness.xml
new file mode 100644
index 0000000..071beed
--- /dev/null
+++ b/res/layout/preference_dialog_brightness.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Copyright (C) 2009 Motorola, Inc.
+ March 23, 2009 - Motorola - Allow automatic brightness changes.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent">
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ android:paddingBottom="20dip">
+
+ <ImageView android:id="@android:id/icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="20dip" />
+
+ <CheckBox android:id="@+id/automatic_mode"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/automatic_brightness"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:layout_marginTop="6dip"
+ android:layout_marginLeft="20dip"
+ android:layout_marginRight="20dip" />
+
+ <SeekBar android:id="@*android:id/seekbar"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="20dip" />
+
+ </LinearLayout>
+</ScrollView>
diff --git a/res/layout/preference_icon.xml b/res/layout/preference_icon.xml
new file mode 100644
index 0000000..03f4e70
--- /dev/null
+++ b/res/layout/preference_icon.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2006 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Layout for a Preference in a PreferenceActivity. The
+ Preference is able to place a specific widget for its particular
+ type in the "widget_frame" layout. -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+android:id/widget_frame"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:gravity="center_vertical"
+ android:paddingRight="?android:attr/scrollbarSize">
+
+ <ImageView
+ android:id="@+id/icon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="6dip"
+ android:layout_marginRight="6dip"
+ android:layout_gravity="center" />
+
+ <RelativeLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="2dip"
+ android:layout_marginRight="6dip"
+ android:layout_marginTop="6dip"
+ android:layout_marginBottom="6dip"
+ android:layout_weight="1">
+
+ <TextView android:id="@+android:id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal" />
+
+ <TextView android:id="@+android:id/summary"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@android:id/title"
+ android:layout_alignLeft="@android:id/title"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:maxLines="2" />
+
+ </RelativeLayout>
+
+</LinearLayout>
diff --git a/res/layout/running_services.xml b/res/layout/running_services.xml
new file mode 100644
index 0000000..120a113
--- /dev/null
+++ b/res/layout/running_services.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical">
+ <FrameLayout
+ android:layout_width="fill_parent"
+ android:layout_height="0px"
+ android:layout_weight="1">
+ <ListView android:id="@android:id/list"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:drawSelectorOnTop="false"
+ android:fastScrollEnabled="true" />
+ <TextView android:id="@android:id/empty"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:gravity="center"
+ android:text="@string/no_running_services"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+ </FrameLayout>
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:background="?android:attr/colorForeground"
+ android:padding="4dp">
+ <TextView android:id="@+id/backgroundText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:textAppearance="?android:attr/textAppearanceSmallInverse"
+ android:color="?android:attr/textColorPrimaryInverse"
+ android:singleLine="true" />
+ <TextView android:id="@+id/foregroundText"
+ android:layout_gravity="center_vertical|right"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:textAppearance="?android:attr/textAppearanceSmallInverse"
+ android:color="?android:attr/textColorPrimaryInverse"
+ android:singleLine="true" />
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/running_services_item.xml b/res/layout/running_services_item.xml
new file mode 100644
index 0000000..2728c76
--- /dev/null
+++ b/res/layout/running_services_item.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2008, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:orientation="vertical"
+ android:gravity="fill" >
+
+ <ImageView android:id="@+id/separator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="?android:attr/listDivider"/>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:orientation="horizontal"
+ android:paddingRight="6dip"
+ android:paddingLeft="6dip"
+ android:gravity="center_vertical" >
+
+ <ImageView android:id="@+id/icon"
+ android:layout_width="@android:dimen/app_icon_size"
+ android:layout_height="@android:dimen/app_icon_size"
+ android:layout_marginLeft="5dip"
+ android:layout_marginRight="11dip"
+ android:layout_gravity="center_vertical"
+ android:scaleType="fitCenter"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" >
+ <LinearLayout
+ android:orientation="horizontal"
+ android:baselineAlignedChildIndex="0"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <TextView android:id="@+id/name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textStyle="bold"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:layout_marginBottom="2dip" />
+ <TextView android:id="@+id/size"
+ android:layout_gravity="center_vertical|right"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+ </LinearLayout>
+ <TextView android:id="@+id/description"
+ android:layout_marginTop="-4dip"
+ android:layout_gravity="center_vertical|left"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingRight="4dip"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/wifi_ap_configure.xml b/res/layout/wifi_ap_configure.xml
index f8eb39a..f816ae5 100644
--- a/res/layout/wifi_ap_configure.xml
+++ b/res/layout/wifi_ap_configure.xml
@@ -39,14 +39,13 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/wifi_type_ssid" />
-
+
<EditText android:id="@+id/ssid_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dip"
- android:singleLine="true" />
-
-
+ android:singleLine="true"
+ android:inputType="textNoSuggestions" />
<!-- Security -->
@@ -105,17 +104,6 @@
<Spinner android:id="@+id/client_certificate_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
- <TextView android:id="@+id/private_key_passwd_text"
- style="?android:attr/textAppearanceSmallInverse"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dip"
- android:text="@string/please_type_private_key_passwd" />
- <EditText android:id="@+id/private_key_passwd_edit"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="2dip"
- android:singleLine="true" />
<TextView android:id="@+id/identity_text"
style="?android:attr/textAppearanceSmallInverse"
android:layout_width="fill_parent"
@@ -126,7 +114,8 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dip"
- android:singleLine="true" />
+ android:singleLine="true"
+ android:inputType="textNoSuggestions" />
<TextView android:id="@+id/anonymous_identity_text"
style="?android:attr/textAppearanceSmallInverse"
android:layout_width="fill_parent"
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 9245ed4..813ad0a 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Tichomoří"</item>
<item msgid="8392017019801393511">"Všechny"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Nezobrazují se žádné animace oken"</item>
+ <item msgid="4460915688877708508">"Zobrazují se některé animace oken"</item>
+ <item msgid="488968798204105119">"Zobrazují se všechny animace oken"</item>
+ <item msgid="5835565817235114270">"Zobrazují se pomalejší animace oken"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 sekund"</item>
<item msgid="8881760709354815449">"30 sekund"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"italština"</item>
<item msgid="5811378076054402537">"španělština"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automaticky"</item>
- <item msgid="5434666299123318296">"Žádné"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA personal"</item>
- <item msgid="1977424472734732392">"WPA2 personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Žádné"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA personal"</item>
- <item msgid="8928468573279595315">"WPA2 personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automaticky"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 8b364b0..8da77e3 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Požadavek na párování zařízení Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Požadavek na párování"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Povolit párování se zařízením "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Výběr zařízení Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Nastavení data a času"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"13:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Vypne všechna bezdrátová připojení"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Vypínání bezdrátových připojení..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Povolování bezdrátových připojení..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Bezdrátové sítě"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Bezdrátová připojení a sítě"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Spravovat Wi-Fi, Bluetooth, režim V letadle, mobilní sítě a sítě VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Datové služby při roamingu"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Datové služby se mohou připojovat při roamingu"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Formát data"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Řadit abecedně"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Řadit podle časového pásma"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Zabezpečení a poloha"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Poloha a zabezpečení"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Moje poloha, odemknutí obrazovky, zámek SIM, zámek úložiště pověření"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Nastavení funkce Moje poloha, odemknutí obrazovky a zamknutí úložiště pověření"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Hesla"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Zapnout Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Nastavení Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Nastavení Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Umožňuje spravovat připojení, nastavit název zařízení a viditelnost"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Požadavek na párování zařízení Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Info o zařízení Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Párování začnete zadáním kódu PIN."\n"(Zkuste 0000 nebo 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Chcete-li provést párování se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, zkontrolujte, zda je zobrazen přístupový klíč: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Párovat"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Nepárovat"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Upozornění"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Při párování se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> došlo k potížím."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Při párování se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> došlo k potížím. Zadaný kód PIN je nesprávný."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Nelze navázat komunikaci se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Párování odmítnuto zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Při připojování k zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g> došlo k potížím."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Připojit k síti…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Média"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Přenos"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Připojeno ke zvukovému médiu"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Připojeno k náhlavní soupravě"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Připojeno k náhlavní soupravě a zvukovému médiu"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profily"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Připojeno ke zvukovému médiu"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Připojeno k náhlavní soupravě"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Připojeno k serveru pro přenos dat"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nepřipojeno k serveru pro přenos souborů"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Umožňuje připojení zvukového média"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Umožňuje připojení náhlavní soupravy"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Použít pro přenos souborů"</string>
<string name="wifi" msgid="1081550856200013637">"WiFi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"WiFi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Zapnout WiFi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Zabezpečení"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Nezabezpečená"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Neznámé"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"nezabezpečená síť"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"zabezpečení WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"zabezpečení WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"zabezpečení WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"zabezpečení WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"zabezpečení IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Adresa IP"</string>
<string name="signal" msgid="1947969631626413228">"Síla signálu"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Zapínání WiFi..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonymní identita"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certifikát klienta"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certifikát CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Soukromý klíč"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Heslo bezdrátové sítě"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Hexadecimální klíč WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Zobrazovat heslo."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Odpojeno"</string>
<string name="status_failed" msgid="610462050405904601">"Připojení se nezdařilo."</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Obraz a zvuk"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Nastavení zvuku"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Umožňuje nastavit vyzváněcí tón, oznámení a jas obrazovky"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Tichý režim"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Oznámení karty SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Přehrát zvuk při oznámení karty SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Přehrát zvuk při oznámení karty SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Synchronizace dat"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Umožňuje vybrat aplikace pro synchronizaci"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Účty a synchronizace"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Umožňuje přidat nebo odebrat účty a změnit jejich nastavení"</string>
<string name="search_settings" msgid="1910951467596035063">"Vyhledávání"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Správa nastavení a historie vyhledávání"</string>
<string name="display_settings" msgid="3912042046350078328">"Nastavení zobrazení"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Nastavení jasu displeje"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Interval vypnutí obrazovky"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Nastavení prodlevy, po které se obrazovka automaticky vypne"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Nastavení zámku karty SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Nastavení zámku karty SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Zámek karty SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Stav"</string>
<string name="device_status" msgid="607405385799807324">"Stav"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefonní číslo, signál, atd."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Karta SD a paměť telefonu"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Umožňuje odpojit kartu SD a zobrazit dostupnou paměť"</string>
<string name="status_number" msgid="5123197324870153205">"Moje telefonní číslo"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Zapnout GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Zaměření je s přesností na úrovni ulic (zrušením této volby lze šetřit baterii)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Umožňuje zaměřit na úrovni ulic (vetší spotřeba baterie a nutný výhled na oblohu)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Aktivovat technologii A-GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Zlepšit výkon GPS pomocí serveru (deaktivací této funkce snížíte využití sítě)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Zlepšit výkon GPS pomocí serveru (aktivací této funkce zlepšíte výkon GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Sdílet se společností Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Povolit Googlu používat polohu k zlepšení vyhledávání a dalších služeb"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Povolit Googlu, aby informace o poloze používal k poskytování přesnějších výsledků vyhledávání a dalších služeb"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Chcete Googlu umožnit využívat informace o poloze k poskytování přesnějších výsledků vyhledávání a dalších služeb?"</string>
<string name="agree" msgid="6288718671527758326">"Souhlasím"</string>
<string name="disagree" msgid="6221069272309799230">"Nesouhlasím"</string>
<string name="about_settings" msgid="1743378368185371685">"Info o telefonu"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Tato aplikace má přístup k následujícím funkcím telefonu:"</string>
<string name="computing_size" msgid="1599186977475211186">"Probíhá výpočet…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Nepodařilo se určit velikost balíčku"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Žádné aplikace třetích stran nejsou nainstalovány."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Žádné aplikace třetích stran nejsou nainstalovány."</string>
<string name="version_text" msgid="9189073826278676425">"verze <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Národní prostředí a text"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Spuštěné služby"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Zobrazit a ovládat aktuálně spuštěné služby"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Probíhá restartování"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Žádné spuštěné služby"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Zastavit službu?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Služba již nebude pokračovat v činnosti, dokud nebude znovu spuštěna svou aplikací. To může mít nežádoucí následky."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Zastavit"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Zrušit"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: výběrem spravujte"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Jazyk a klávesnice"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Nastavení jazyka a oblasti, způsobu zadávání textu a automatických oprav"</string>
<string name="language_category" msgid="3391756582724541530">"Nastavení národního prostředí"</string>
<string name="text_category" msgid="6342540511465136739">"Nastavení textu"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Ladění USB je určeno pouze pro účely vývoje. Lze pomocí něho kopírovat data mezi počítačem a zařízením, instalovat aplikace do zařízení bez upozornění a číst data protokolů."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Zvolte gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Zvolte widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Podrobnosti pro UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Podrobnosti pro UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Podrobnosti o používání sítě aplikací <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Přijato bytů: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplikace"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Počet"</string>
<string name="usage_time_label" msgid="295954901452833058">"Doba použití"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Usnadnění"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Možnosti správy usnadnění"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Usnadnění"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Služby usnadnění"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Doba provozu zařízení"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Doba provozu sítě WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Doba provozu sítě WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="PERCENT">%2$s</xliff:g> %%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g> <xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Podrobnosti využití baterie"</string>
<string name="details_subtitle" msgid="32593908269911734">"Podrobnosti používání"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Upravit spotřebu energie"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Využití baterie sítí WiFi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Pokud síť WiFi nepoužíváte nebo na daném místě není k dispozici, vypněte ji."</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Využití baterie technologií Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Vypněte technologii Bluetooth, když ji nepoužíváte"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Vypněte technologii Bluetooth, když ji nepoužíváte."</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Zkuste se připojit k jinému zařízení bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Využití baterie spuštěnými aplikacemi"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Ukončete aplikaci nebo ji odinstalujte"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Obnovit"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"OS Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Syntéza řeči"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Převod textu na řeč"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Nastavit možnosti syntézy řeči"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Ovládací prvky syntezátoru řeči"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Vždy používat moje nastavení"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Toto je příklad syntézy řeči."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Nastavení se změnilo. Toto je příklad současného znění."</string>
<string name="gadget_title" msgid="7455548605888590466">"Ovládací prvek napájení"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Probíhá aktualizace nastavení Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Probíhá aktualizace nastavení Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Nastavení sítě VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Připojit k %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Připojit k síti <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Uživatelské jméno:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Heslo:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"uživatelské jméno"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Odpojit od sítě"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Upravit síť"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Smazat síť"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Je nutné zadat %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Musíte vybrat %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Název sítě VPN %s již existuje. Zvolte jiný název."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Je nutné zadat <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Musíte vybrat možnost <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Název sítě VPN „<xliff:g id="NAME">%s</xliff:g>“ již existuje. Zvolte jiný název."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Opravdu chcete smazat tuto síť VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Opravdu nechcete vytvořit tento profil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Opravdu chcete zrušit změny provedené v tomto profilu?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"V konfiguraci této sítě VPN chybí několik tajných nastavení. Chcete své tajné nastavení zkontrolovat?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Zadané uživatelské jméno nebo heslo je nesprávné. Chcete to zkusit znovu?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Server zavěsil. Zadané uživatelské jméno nebo heslo je možná nesprávné. Chcete to zkusit znovu?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Server zavěsil. Je možné, že máte spuštěný firewall, který brání připojení k serveru. Chcete to zkusit znovu?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Vyjednávání se serverem se nezdařilo. Server možná nedokáže pracovat s nastavenou možností šifrování. Chcete zkontrolovat nastavení šifrování?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Přidat síť VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Přidat síť VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Přidat síť VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s – podrobnosti"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Přidat síť VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g> – podrobnosti"</string>
<string name="vpns" msgid="3148141862835492816">"Sítě VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Připojování..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Odpojování..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Připojit k síti"</string>
<string name="vpn_name" msgid="1550918148476193076">"Název sítě VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"název sítě VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"Položka %s je přidána"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Změny probíhají v %"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"Položka „<xliff:g id="NAME">%s</xliff:g>“ je přidána"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"V profilu <xliff:g id="NAME">%s</xliff:g> probíhají změny"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Nastavit certifikát uživatele"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certifikát uživatele"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"certifikát uživatele"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Název serveru sítě VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Domény vyhledávání DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Domény vyhledávání DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s je nastaveno"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s není nastaveno"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s není nastaveno (nepovinné)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Aktivovat %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Deaktivovat %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s je aktivováno"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s je deaktivováno"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"Hodnota <xliff:g id="VALUE">%s</xliff:g> je nastavena"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"Hodnota <xliff:g id="VALUE">%s</xliff:g> není nastavena"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"Hodnota <xliff:g id="VALUE">%s</xliff:g> není nastavena (nepovinné)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Povolit <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Deaktivovat <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"Položka <xliff:g id="OPTION">%s</xliff:g> je aktivována"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"Možnost <xliff:g id="OPTION">%s</xliff:g> je deaktivována"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Nastavení sítě VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Nastavit a spravovat sítě VPN"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(nezměněno)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Povolit aplikacím přístup k zabezpečeným certifikátům a pověřením"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Zadejte heslo"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Zadejte heslo úložiště pověření."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Nastavit heslo"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Nastavení nebo změna hesla úložiště pověření"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Nastavit heslo"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Aktuální heslo:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nové heslo:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Potvrďte nové heslo:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Nastavte heslo pro úložiště pověření."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Nastavte heslo pro úložiště pověření."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Zadejte správné heslo."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Zadejte prosím správné heslo. Máte ještě jeden pokus na zadání správného hesla, jinak bude úložiště pověření vymazáno."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Zadejte prosím správné heslo. Počet zbývajících pokusů na zadání správného hesla: %d. Po vyčerpání všech pokusů bude úložiště pověření vymazáno."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Zadejte prosím správné heslo. Počet zbývajících pokusů o zadání správného hesla: <xliff:g id="NUMBER">%d</xliff:g>. Po vyčerpání všech pokusů bude úložiště pověření vymazáno."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Hesla se neshodují."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Musíte zadat a potvrdit heslo."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Zadejte heslo."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Zadejte heslo znovu. Heslo musí mít alespoň 8 znaků a nesmí obsahovat mezery."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Zadejte prosím jméno."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Zadejte název obsahující pouze písmena a čísla."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Nelze uložit certifikát. Kliknutím na tlačítko OK to zkuste znovu."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Certifikát není uložen."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Úložiště pověření je vymazáno."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Úložiště pověření je aktivováno."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"Položka %s je přidána."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"Pověření <xliff:g id="CREDENTIAL">%s</xliff:g> je přidáno."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tísňové vyzvánění"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Nastavit chování při tísňovém volání"</string>
</resources>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index 9bc32f1..f6ba120 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacific"</item>
<item msgid="8392017019801393511">"Alle"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Der vises ingen vinduesanimationer"</item>
+ <item msgid="4460915688877708508">"Der vises nogle vinduesanimationer"</item>
+ <item msgid="488968798204105119">"Alle vinduesanimationer vises"</item>
+ <item msgid="5835565817235114270">"Der vises langsommere vinduesanimationer"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 sekunder"</item>
<item msgid="8881760709354815449">"30 sekunder"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiensk"</item>
<item msgid="5811378076054402537">"Spansk"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatisk"</item>
- <item msgid="5434666299123318296">"Ingen"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA personal"</item>
- <item msgid="1977424472734732392">"WPA2 personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Ingen"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA personal"</item>
- <item msgid="8928468573279595315">"WPA2 personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatisk"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index caf4fa1..b4178ae 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Anmodning om Bluetooth-parring"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Parringsanmodning"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Vælg for at parre med "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth-enhedssamler"</string>
<string name="date_and_time" msgid="4114084177056654663">"Dato- og tidsindstillinger"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Deaktiver alle trådløse forbindelser"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Deaktiverer trådløse forbindelser ..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Aktiverer trådløse forbindelser ..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Trådl. kontrolelementer"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Trådløst og netværk"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Administrer Wi-Fi, Bluetooth, flytilstand, mobile netværker og VPN\'er"</string>
<string name="roaming" msgid="3596055926335478572">"Dataroaming"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Opret forbindelse til datatjenester under roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Vælg datoformat"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Sorter alfabetisk"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Sorter efter tidszone"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Sikkerhed og placering"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Placering og sikkerhed"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Indstil Min placering, oplåsning af skærmen, SIM-kortlås, oplysningslagringslås"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Indstil Min placering, oplåsning af skærmen, oplysningslagringslås"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Adgangskoder"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Slå Bluetooth til"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth-indstillinger"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth-indstillinger"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Administrer forbindelser, indstil enhedsnavn og søgbarhed"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Anmodning om Bluetooth-parring"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Oplysninger om Bluetooth-enhed"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Indtast PIN-kode for at parre."\n"(Prøv 0000 eller 1234)."</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"For at parre med \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" skal du bekræfte, at den viser adgangsnøglen: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Par"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Undlad at parre"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Bemærk"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Der var problemer med at parre med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Der var problemer med at parre med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, fordi den indtastede PIN-kode er forkert."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Der kan ikke etableres kommunikation med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Parring afvist af <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Der var problemer med at oprette forbindelse til <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Opret forbindelse til ..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Medier"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Overfør"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Forbundet til medielyd"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Forbundet til telefonlyd"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Forbundet til telefon- og medielyd"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profiler"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Forbundet til medielyd"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Forbundet til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Forbundet til filoverførselsserver"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ikke forbundet til filoverførselsserver"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Brug medielyd"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Brug til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Brug til filoverførsel"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Slå Wi-Fi til"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Sikkerhed"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Åbn"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Ukendt"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"åbent netværk"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"sikret med WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"sikret med WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"sikret med WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"sikret med WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"sikret med IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-adresse"</string>
<string name="signal" msgid="1947969631626413228">"Signalstyrke"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Tænder ..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonym identitet"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Klientcertifikat"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA-certifikat"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Adgangskode til personlig nøgle"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Adgangskode til trådløs"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"tast til \"WEP-heksadecimal\" (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Vis adgangskode."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Afbrudt"</string>
<string name="status_failed" msgid="610462050405904601">"Mislykkedes"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Lyd og visning"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Lydindstillinger"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Indstil ringetoner, meddelelser, skærmlysstyrke"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Lydløs"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD-kortmeddelelser"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Afspil lyd for SD-kortmeddelelser"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Afspil lyd for SD-kortmeddelelser"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Datasynkronisering"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Vælg, hvilke programmer der skal synkroniseres"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Konti og synkronisering"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Tilføj eller fjern konti, og skift kontoindstillinger"</string>
<string name="search_settings" msgid="1910951467596035063">"Søg"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Administrer søgeindstillinger og oversigt"</string>
<string name="display_settings" msgid="3912042046350078328">"Visningsindstillinger"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Juster skærmens lysstyrke"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Timeout for skærmen"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Juster forsinkelsen, inden skærmen slukkes automatisk"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Indstillinger for lås af SIM-kort"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Opsæt SIM-kortlås"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM-kortlås"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signal osv."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD-kort og tlf.lag.plads"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Demonter SD-kort, vis ledig lagerplads"</string>
<string name="status_number" msgid="5123197324870153205">"Mit telefonnummer"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Aktiver GPS-satelliter"</string>
<string name="location_street_level" msgid="5899941752252356344">"Find præcise placeringer på gadeniveau (fravælg for at spare på batteriet)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Gå til gadeniveau (kræver mere batteri plus visning af himmel)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Aktiver assisteret GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Brug server til at assistere GPS (fravælg for at mindske netværksforbrug)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Brug server til at assistere GPS (vælg for at forbedre GPS-ydelsen)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Del med Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Tillad Google at bruge placering til forbedret søgning og andre tjenester"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Tillad Google at bruge placering til forbedrede søgeresultater og andre tjenester"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Tillad Google at bruge placering til forbedrede søgeresultater og andre tjenester?"</string>
<string name="agree" msgid="6288718671527758326">"Enig"</string>
<string name="disagree" msgid="6221069272309799230">"Ikke enig"</string>
<string name="about_settings" msgid="1743378368185371685">"Om telefon"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Dette program kan få adgang til følgende på din telefon:"</string>
<string name="computing_size" msgid="1599186977475211186">"Beregner ..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Pakkestørrelse kunne ikke beregnes"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Du har ikke installeret nogen tredjepartsprogrammer."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Du har ikke installeret nogen tredjepartsprogrammer."</string>
<string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Landestandard og tekst"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Kørende tjenester"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Vis og kontroller igangværende tjenester"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Genstarter"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Der er ingen kørende tjenester"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Stop tjeneste?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Tjenesten kører ikke længere, før den startes igen af dets program. Dette kan have uønskede følger."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Stop"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuller"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: vælg at administrere"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Sprog og tastatur"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Indstil landestandard (land og område), tekstinput…"</string>
<string name="language_category" msgid="3391756582724541530">"Landestandardindstilling"</string>
<string name="text_category" msgid="6342540511465136739">"Tekstindstillinger"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB-fejlretning er kun beregnet til udviklingsformål. Det kan bruges til at kopiere data mellem din computer og din enhed, installere programmer på din enhed uden underretning og læse logdata."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Vælg gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Vælg widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detaljer for UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detaljer for UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Netværksbrugsdetaljer for <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Modtagne bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Program"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Optælling"</string>
<string name="usage_time_label" msgid="295954901452833058">"Brugstid"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Tilgængelighed"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Administrer tilgængelighedsvalgmuligheder"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Tilgængelighed"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Tilgængelighedstjenester"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Enhedsopvågningstid"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Wi-Fi til tiden"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Wi-Fi til tiden"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Batteriforbrugsoplysninger"</string>
<string name="details_subtitle" msgid="32593908269911734">"Brugsdetaljer"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Juster strømforbrug"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batteri brugt af Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Slå Wi-Fi fra, når det ikke er i brug eller tilgængeligt"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri brugt af Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Slå Bluetooth fra, når du ikke bruger det"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Slå Bluetooth fra, når du ikke bruger det"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prøv at oprette forbindelse til en anden Bluetooth-enhed"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batteri brugt af programmer, når de kører"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Stop eller afinstaller programmet"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Opdater"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Medieserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Talesyntese"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Tekst-til-tale"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Indstil valgmuligheder for tekst-til-tale"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Betjening af talesynthesizer"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Brug altid mine indstillinger"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Dette er et eksempel på talesyntese."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Dine indstillinger er blevet ændret. Dette er et eksempel på, hvordan de lyder."</string>
<string name="gadget_title" msgid="7455548605888590466">"Strømkontrol"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Opdaterer Wi-Fi-indstilling"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Opdaterer Bluetooth-indstilling"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-indstillinger"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Opret forbindelse til %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Opret forbindelse til <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Brugernavn:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Adgangskode:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"et brugernavn"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Afbryd forbindelsen til netværk"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Rediger netværk"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Slet netværk"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Du skal indtaste %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Du skal vælge %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN-navnet \'%s\' eksisterer allerede. Find et andet navn."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Du skal indtaste <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Du skal vælge <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN-navnet \'<xliff:g id="NAME">%s</xliff:g>\' eksisterer allerede. Find et andet navn."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Er du sikker på, at du ønsker at slette dette VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Er du sikker på, du ikke ønsker at oprette denne profil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Er du sikker på, at du ønsker at kassere de ændringer, der er foretaget til denne profil?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Der mangler en eller flere hemmeligheder i denne VPN-konfiguration. Ønsker du at kontrollere din hemmelige indstilling."</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Det/den indtastede brugernavn eller adgangskode er forkert. Ønsker du at prøve igen?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Serverophængning. Brugernavnet eller adgangskoden, du indtastede, kan være forkerte. Ønsker du at prøve igen?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Serveren afbrød. Du er muligvis bag en firewall, der forhindrer dig at oprette forbindelse til serveren. Vil du prøve igen?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Serverkommunikationen mislykkedes. Serveren er muligvis ikke enig i dine krypteringsindstillinger. Vil du kontrollere dine krypteringsindstillinger?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Tilføj VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Tilføj VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Tilføj %s VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s-oplysninger"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Tilføj <xliff:g id="NAME">%s</xliff:g> VPN"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g> detaljer"</string>
<string name="vpns" msgid="3148141862835492816">"VPN\'er"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Opretter forbindelse ..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Afbryder ..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Opret forbindelse til netværk"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN-navn"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"et VPN-navn"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s er tilføjet"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Der er foretaget ændringer af %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\'<xliff:g id="NAME">%s</xliff:g>\' er tilføjet"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Der er foretaget ændringer af \'<xliff:g id="NAME">%s</xliff:g>\'"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Indstil brugercertifikat"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Brugercertifikat"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"et brugercertifikat"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN-servernavn"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS-søgedomæner"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS-søgedomæner"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s er indstillet"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s ikke indstillet"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s ikke indstillet (valgfrit)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Aktiver %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Deaktiver %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s er aktiveret"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s er deaktiveret"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> er indstillet"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> ikke indstillet"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> ikke indstillet (valgfrit)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Aktiver<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Deaktiver<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> er aktiveret"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> er deaktiveret"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN-indstillinger"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Indstil og administrer Virtuelle Private Netværk (VPN\'er)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(uændret)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Tillad programmer at få adgang til sikre certifikater og andre oplysninger"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Indtast adgangskode"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Indtast adgangskoden til oplysningslagring"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Indstil adgangskode"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Indstil eller skift adgangskode til oplysningslagring"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Indstil adgangskode"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Nuværende adgangskode:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Ny adgangskode:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Bekræft ny adgangskode:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Indstil en adgangskode til oplysningslagringen."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Indstil en adgangskode til oplysningslagringen."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Indtast den rigtige adgangskode."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Indtast den rigtige adgangskode. Du har et forsøg mere til at indtaste den rigtige adgangskode, inden oplysningslagringen slettes."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Indtast den rigtige adgangskode. Du har %d forsøg mere til at indtaste den rigtige adgangskode, inden oplysningslagringen slettes."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Indtast den rigtige adgangskode. Du har <xliff:g id="NUMBER">%d</xliff:g> forsøg mere til at indtaste den rigtige adgangskode, inden oplysningslagringen slettes."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Adgangskoder stemmer ikke overens."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Du skal indtaste og bekræfte en adgangskode."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Indtast adgangskoden."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Indtast adgangskoden igen. Adgangskoden skal bestå af mindst 8 tegn og må ikke indeholde mellemrum."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Indtast et navn."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Indtast et navn, der kun indeholder bogstaver og tal."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Certifikatet kunne ikke gemmes. Klik på OK for at prøve igen."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Certifikatet er ikke gemt."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Oplysningslagringen er slettet."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Oplysningslagring er aktiveret."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s er tilføjet."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> er tilføjet."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Nødtone"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Indstil adfærd, når der foretages et nødopkald"</string>
</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index 8fea7f0..4ebbdc2 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacific"</item>
<item msgid="8392017019801393511">"Alle"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Es werden keine Fensteranimationen angezeigt."</item>
+ <item msgid="4460915688877708508">"Einige Fensteranimationen werden angezeigt."</item>
+ <item msgid="488968798204105119">"Alle Fensteranimationen werden angezeigt."</item>
+ <item msgid="5835565817235114270">"Langsamere Fensteranimationen werden angezeigt."</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 Sekunden"</item>
<item msgid="8881760709354815449">"30 Sekunden"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italienisch"</item>
<item msgid="5811378076054402537">"Spanisch"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Autom."</item>
- <item msgid="5434666299123318296">"Keine"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Keine"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Autom."</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 64caf02..5910e62 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetooth-Pairing-Anfrage"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Pairing-Anfrage"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Zum Pairing auswählen "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth-Geräteauswahl"</string>
<string name="date_and_time" msgid="4114084177056654663">"Einstellungen"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Alle drahtlosen Verbindungen deaktivieren"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Wireless-Verbindungen werden deaktiviert..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Wireless-Verbindungen werden aktiviert..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Wireless"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Drahtlos und Netzwerke"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Wi-Fi, Bluetooth, Flugmodus, mobile Netzwerke und VPNs verwalten"</string>
<string name="roaming" msgid="3596055926335478572">"Daten-Roaming"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Bei Roaming mit Datendienst verbinden"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Datumsformat auswählen"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Alphabetisch sortieren"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Nach Zeitzone sortieren"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Sicherheit und Standort"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Standort und Sicherheit"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Meinen Standort, Display-Entsperrung, SIM-Kartensperrung und Sperrung des Anmeldeinformationsspeichers festlegen"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Meinen Standort festlegen, Bildschirm entsperren, Sperren des Speichers für Anmeldeinformationen"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Passwörter"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Bluetooth aktivieren"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth-Einstellungen"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth-Einstellungen"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Verbindungen, Gerätenamen und Erkennbarkeit verwalten"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Bluetooth-Pairing-Anfrage"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth-Geräteinfo"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"PIN für Pairing eingeben."\n"(Versuchen Sie 0000 oder 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Bestätigen Sie zum Paaren mit \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", dass der folgende Schlüssel angezeigt wird: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Paaren"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Nicht paaren"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Achtung"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Beim Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ist ein Problem aufgetreten."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Beim Pairing mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ist ein Problem aufgetreten, da die eingegebene PIN falsch ist."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Verbindung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kann nicht hergestellt werden."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Verbindung wurde von <xliff:g id="DEVICE_NAME">%1$s</xliff:g> abgelehnt."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Beim Verbindungsaufbau mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ist ein Problem aufgetreten."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Verbinden mit..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Medien"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Übertragung"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Verbunden mit Audiosystem von Medien"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Verbunden mit Audiosystem des Telefons"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Verbunden mit Audiosystem von Telefon und Medien"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profile"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Verbunden mit Audiosystem von Medien"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Verbunden mit Audiosystem des Telefons"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Mit Dateiübertragungsserver verbunden"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Nicht mit Dateiübertragungsserver verbunden"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Für Audiosystem von Medien verwenden"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Für Audiosystem des Telefons verwenden"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Für Dateiübertragung verwenden"</string>
<string name="wifi" msgid="1081550856200013637">"WLAN"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"WLAN"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"WLAN aktivieren"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Sicherheit"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Öffnen"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Unbekannt"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"offenes Netzwerk"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"gesichert mit WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"gesichert mit WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"gesichert mit WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"gesichert mit WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"gesichert mit IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-Adresse"</string>
<string name="signal" msgid="1947969631626413228">"Signalstärke"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Aktivierung..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonyme Identität"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Client-Zertifikat"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA-Zertifikat"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Passwort für den privaten Schlüssel"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Passwort für Wireless-Zugang"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP Hexadezimalschlüssel (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Passwort anzeigen"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Nicht verbunden"</string>
<string name="status_failed" msgid="610462050405904601">"Fehlgeschlagen"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Sound und Display"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Toneinstellungen"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Klingeltöne, Benachrichtigungen und Helligkeit festlegen"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Lautlosmodus"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD-Karten-Nachricht"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Ton bei SD-Karten-Benachrichtigungen"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Ton bei SD-Karten-Benachrichtigungen"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Datensynchronisierung"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Auswählen, welche Anwendungen synchronisiert werden"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Konten und Synchronisierung"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Konten hinzufügen und entfernen und Kontoeinstellungen ändern"</string>
<string name="search_settings" msgid="1910951467596035063">"Suchen"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Sucheinstellungen und Suchverlauf verwalten"</string>
<string name="display_settings" msgid="3912042046350078328">"Display-Einstellungen"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Helligkeit des Bildschirms anpassen"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Display-Timeout"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Verzögerung vor automatischer Bildschirmabschaltung anpassen"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Einstellungen"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"SIM-Sperrung einrichten"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM-Kartensperrung"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, Signal usw."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD-Karte und Speicher"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"SD-Karte entnehmen, verfügbaren Speicher anzeigen"</string>
<string name="status_number" msgid="5123197324870153205">"Meine Telefonnummer"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"GPS-Satelliten aktivieren"</string>
<string name="location_street_level" msgid="5899941752252356344">"Auf Straßenebene lokalisieren (deaktivieren, um Akku zu sparen)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Auf Straßenebene lokalisieren (höherer Akkuverbrauch, im Freien)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Unterstütztes GPS aktivieren"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Server zur Unterstützung von GPS verwenden (zur Verringerung der Netzwerkauslastung nicht auswählen)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Server zur Unterstützung von GPS verwenden (zur Verbesserung der GPS-Leistung auswählen)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Für Google freigeben"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Google erlauben, den Standort für verbesserte Suchergebnisse und andere Dienste zu verwenden"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Google erlauben, den Standort für verbesserte Suchergebnisse und andere Dienste zu verwenden"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Soll Google bessere Suchergebnisse und weitere Dienste anhand Ihres Standorts anbieten?"</string>
<string name="agree" msgid="6288718671527758326">"Zustimmen"</string>
<string name="disagree" msgid="6221069272309799230">"Ablehnen"</string>
<string name="about_settings" msgid="1743378368185371685">"Telefoninfo"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Diese Anwendung kann auf die folgenden Funktionen Ihres Telefons zugreifen:"</string>
<string name="computing_size" msgid="1599186977475211186">"Berechnung..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Paketgröße kann nicht berechnet werden"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Sie haben keine Anwendungen von Drittanbietern installiert."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Sie haben keine Anwendungen von Drittanbietern installiert."</string>
<string name="version_text" msgid="9189073826278676425">"Version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Gebietsschema und Text"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Ausgeführte Dienste"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Derzeit ausgeführte Dienste anzeigen und steuern"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Neustart wird durchgeführt."</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Es werden keine Dienste ausgeführt."</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Dienst anhalten?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Der Dienst wird nicht mehr ausgeführt, bis er von seiner Anwendung neu gestartet wird. Dies kann unerwünschte Folgen haben."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Anhalten"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Abbrechen"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: zum Verwalten auswählen"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Sprache und Tastatur"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Optionen für Sprache und Region, Texteingabe und Autokorrektur festlegen"</string>
<string name="language_category" msgid="3391756582724541530">"Ländereinstellung"</string>
<string name="text_category" msgid="6342540511465136739">"Texteinstellungen"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB-Debugging ist nur für Entwicklungszwecke vorgesehen. Damit können Sie Daten zwischen Ihrem Computer und Ihrem Gerät kopieren, Anwendungen auf Ihrem Gerät ohne Benachrichtigung installieren und Protokolldaten lesen."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Gadget auswählen"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Widget auswählen"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Details für UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Details für UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Netzwerk-Nutzungsdetails für <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Empfangene Bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Anwendung"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Anzahl"</string>
<string name="usage_time_label" msgid="295954901452833058">"Nutzungszeit"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Eingabehilfe"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Optionen für Eingabehilfe verwalten"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Eingabehilfen"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Eingabehilfendienste"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Aktivzeit des Geräts"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WLAN-Aktivzeit"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WLAN-Aktivzeit"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g> %%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Akkuverbrauch - Details"</string>
<string name="details_subtitle" msgid="32593908269911734">"Details verwenden"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Energieverbrauch anpassen"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Akkuverbrauch durch WLAN"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"WLAN bei Nichtverwendung oder Nichtverfügbarkeit deaktivieren"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Akkuverbrauch durch Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Bluetooth bei Nichtverwendung deaktivieren"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Bluetooth bei Nichtverwendung deaktivieren"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Mit einem anderen Bluetooth-Gerät verbinden"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Akkuverbrauch bei ausgeführten Anwendungen"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Anwendung beenden oder deinstallieren"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Aktualisieren"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Sprachsynthese"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Text-in-Sprache"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Text-in-Sprache einrichten"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Sprachsynthese-Steuerung"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Immer meine Einst. verwenden"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Dies ist ein Beispiel für Sprachsynthese."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Ihre Einstellungen wurden geändert. Dies ist ein Klangbeispiel."</string>
<string name="gadget_title" msgid="7455548605888590466">"Energiesteuerung"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aktualisieren der WLAN-Einstellung"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aktualisieren der Bluetooth-Einstellung"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-Einstellungen"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Mit %s verbinden"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Mit <xliff:g id="NAME">%s</xliff:g> verbinden"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nutzername:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Passwort:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"ein Nutzername"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Netzwerkverbindung trennen"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Netzwerk bearbeiten"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Netzwerk löschen"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Geben Sie %s ein."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Wählen Sie %s aus."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Der VPN-Name \"%s\" ist bereits vorhanden. Wählen Sie einen anderen Namen."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Geben Sie <xliff:g id="CODE">%s</xliff:g> ein."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Wählen Sie <xliff:g id="OPTION">%s</xliff:g> aus."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Der VPN-Name \"<xliff:g id="NAME">%s</xliff:g>\" ist bereits vorhanden. Wählen Sie einen anderen Namen."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Möchten Sie dieses VPN wirklich nicht löschen?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Möchten Sie dieses Profil wirklich nicht erstellen?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Möchten Sie die Änderungen an diesem Profil wirklich verwerfen?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Eine oder mehrere geheime Informationen scheinen in dieser VPN-Konfiguration zu fehlen. Möchten Sie Ihre geheimen Einstellungen prüfen?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Der eingegebene Nutzername oder das Passwort ist falsch. Möchten Sie es erneut versuchen?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Der Server hat ein Problem. Möglicherweise sind der von Ihnen eingegebene Nutzername und das Passwort falsch. Möchten Sie es erneut versuchen?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Der Server reagiert nicht. Möglicherweise befinden Sie sich hinter einer Firewall, die eine Verbindung mit dem Server verhindert. Möchten Sie es erneut versuchen?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Bei der Serververhandlung ist ein Fehler aufgetreten. Der Server stimmt möglicherweise nicht mit Ihrer Verschlüsselungsoption überein. Möchten Sie die Einstellungen Ihrer Verschlüsselung überprüfen?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"VPN hinzufügen"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"VPN hinzufügen"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"VPN \"%s\" hinzufügen"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Details zu %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"<xliff:g id="NAME">%s</xliff:g>-VPN hinzufügen"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Details zu <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPNs"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Verbindung wird hergestellt..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Verbindung wird getrennt..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Mit Netzwerk verbinden"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN-Name"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"ein VPN-Name"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s wurde hinzugefügt."</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Änderungen werden an %s vorgenommen."</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" wurde hinzugefügt."</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Änderungen wurden an \"<xliff:g id="NAME">%s</xliff:g>\" vorgenommen."</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Nutzerzertifikat festlegen"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Nutzerzertifikat"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"ein Nutzerzertifikat"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN-Servername"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS-Suchdomains"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS-Suchdomains"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s ist festgelegt"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s nicht festgelegt"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s nicht festgelegt (optional)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"%s aktivieren"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"%s deaktivieren"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s ist aktiviert."</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s ist deaktiviert."</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> ist festgelegt."</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> nicht festgelegt"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> nicht festgelegt (optional)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"<xliff:g id="OPTION">%s</xliff:g> aktivieren"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"<xliff:g id="OPTION">%s</xliff:g> deaktivieren"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> ist aktiviert."</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> ist deaktiviert."</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN-Einstellungen"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Virtual Private Networks (VPNs) einrichten und verwalten"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(nicht geändert)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Anwendungen den Zugriff auf sichere Zertifikate und andere Anmeldeinformationen ermöglichen"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Passwort eingeben"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Geben Sie das Passwort für den Anmeldeinformationsspeicher ein."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Passwort festlegen"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Passwort für Anmeldeinformationsspeicher festlegen oder ändern"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Passwort festlegen"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Aktuelles Passwort:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Neues Passwort:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Neues Passwort bestätigen:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Legen Sie ein Passwort für den Anmeldeinformationsspeicher fest."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Legen Sie ein Passwort für den Anmeldeinformationsspeicher fest."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Geben Sie das richtige Passwort ein."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Geben Sie das richtige Passwort ein. Sie haben noch einen Versuch, das richtige Passwort einzugeben. Anschließend wird der Anmeldeinformationsspeicher gelöscht."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Geben Sie das richtige Passwort ein. Sie haben noch %d weitere Versuche, das richtige Passwort einzugeben. Anschließend wird der Anmeldeinformationsspeicher gelöscht."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Geben Sie das richtige Passwort ein. Sie haben noch <xliff:g id="NUMBER">%d</xliff:g> weitere Versuche, das richtige Passwort einzugeben. Anschließend wird der Anmeldeinformationsspeicher gelöscht."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Die Passwörter stimmen nicht überein."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Sie müssen ein Passwort eingeben und bestätigen."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Geben Sie das Passwort ein."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Geben Sie das Passwort erneut ein. Das Passwort muss mindestens acht Zeichen lang sein und darf keine Leerzeichen enthalten."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Geben Sie einen Namen ein."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Geben Sie einen Namen ein, der ausschließlich aus Buchstaben und Zahlen besteht."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Das Zertifikat kann nicht gespeichert werden. Klicken Sie auf \"OK\", um es erneut zu versuchen."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Das Zertifikat wurde nicht gespeichert."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Der Speicher für die Anmeldeinformationen wurde gelöscht."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Der Anmeldeinformationsspeicher ist aktiviert."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s wurde hinzugefügt."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> wurde hinzugefügt."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Notfallsignal"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Verhalten bei einem Notruf festlegen"</string>
</resources>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index 95ebcbf..600b3d1 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Ειρηνικός"</item>
<item msgid="8392017019801393511">"Όλα"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Δεν εμφανίζονται εφέ κίνησης παραθύρων"</item>
+ <item msgid="4460915688877708508">"Εμφάνιση ορισμένων εφέ κίνησης παραθύρων"</item>
+ <item msgid="488968798204105119">"Εμφανίζονται όλα τα εφέ κίνησης παραθύρων"</item>
+ <item msgid="5835565817235114270">"Εμφάνιση πιο αργών εφέ κίνησης παραθύρων"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 δευτερόλεπτα"</item>
<item msgid="8881760709354815449">"30 δευτερόλεπτα"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Ιταλικά"</item>
<item msgid="5811378076054402537">"Ισπανικά"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Αυτόματο"</item>
- <item msgid="5434666299123318296">"Κανένα"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Κανένα"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Αυτόματο"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 2f53f24..3aac797 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Αίτημα σύζευξης Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Αίτημα σύζευξης"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Επιλογή για σύζευξη με "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Επιλογή συσκευής Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Ρυθμίσεις ημερομηνίας & ώρας"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 μμ"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Απενεργοποίηση όλων των ασύρματων συνδέσεων"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Απενεργοποίηση ασύρματων συνδέσεων..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Ενεργοποίηση ασύρματων συνδέσεων..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Στοιχεία ελέγχου ασύρματου"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Ασύρματο και δίκτυα"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Διαχείριση Wi-Fi, Bluetooth, λειτουργίας πτήσης, δικτύων κινητής τηλεφωνίας και VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Περιαγωγή δεδομένων"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Επιλογή μορφής ημερομηνίας"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Ταξινόμηση με βάση αλφαβητική σειρά"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Ταξινόμηση με βάση ζώνη ώρας"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Ασφάλεια & τοποθεσία"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Τοποθεσία και ασφάλεια"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Ορισμός του \"Η τοποθεσία μου\", ξεκλειδώματος οθόνης, κλειδώματος κάρτας SIM, κλειδώματος αποθηκευτικού χώρου διαπιστευτηρίων"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Ορισμός του \"Η τοποθεσία μου\", του ξεκλειδώματος οθόνης και του κλειδώματος αποθηκευτικού χώρου διαπιστευτηρίων"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Κωδικοί πρόσβασης"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Ενεργοποίηση Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Ρυθμίσεις Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Ρυθμίσεις Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Διαχείριση συνδέσεων, ορισμός ονόματος συσκευής & ανιχνευσιμότητα"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Αίτημα σύζευξης Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Πληροφορίες συσκευής Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Πληκτρολογήστε τον αριθμό PIN για σύζευξη."\n"(Δοκιμάστε 0000 ή 1234)."</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Για ζεύξη με τη συσκευή \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", βεβαιωθείτε ότι προβάλλεται το κλειδί πρόσβασης: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Ζεύγος"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Χωρίς ζεύξη"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Προσοχή"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Παρουσιάστηκε ένα πρόβλημα κατά τη σύζευξη με <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Παρουσιάστηκε ένα πρόβλημα κατά τη σύζευξη με το <xliff:g id="DEVICE_NAME">%1$s</xliff:g> επειδή ο αριθμός PIN που πληκτρολογήσατε είναι εσφαλμένος."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Δεν είναι δυνατή η δημιουργία σύνδεσης με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Η ζεύξη απορρίφθηκε από τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Παρουσιάστηκε ένα πρόβλημα κατά τη σύνδεση σε <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Σύνδεση σε..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Πολυμέσα"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Τηλέφωνο"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Μεταφορά"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Συνδέθηκε σε ήχο πολυμέσων"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Συνδεδεμένο στον ήχο τηλεφώνου"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Σύνδεση στο τηλέφωνο και στον ήχο πολυμέσων"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Προφίλ"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Συνδέθηκε σε ήχο πολυμέσων"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Συνδεδεμένο στον ήχο τηλεφώνου"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Συνδεδεμένο σε διακομιστή μεταφοράς αρχείων"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Δεν έχει συνδεθεί σε διακομιστή μεταφοράς αρχείων"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Χρήση για ήχο πολυμέσων"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Χρήση για ήχο τηλεφώνου"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Χρήση για τη μεταφορά αρχείων"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Ενεργοποίηση Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Ασφάλεια"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Άνοιγμα"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Άγνωστο"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"ανοικτό δίκτυο"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"ασφαλισμένο με WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"ασφαλισμένο με WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"ασφαλισμένο με WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"ασφαλισμένο με WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"ασφαλισμένο με IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Διεύθυνση IP"</string>
<string name="signal" msgid="1947969631626413228">"Ισχύς σήματος"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Ενεργοποίηση..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Ανώνυμη ταυτότητα"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Πιστοποιητικό πελάτη"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Πιστοποιητικό CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Κωδικός πρόσβασης ιδιωτικού κλειδιού"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Κωδικός πρόσβασης ασύρματου"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Δεκαεξαδικό κλειδί WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Εμφάνιση κωδικού πρόσβασης."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Αποσυνδέθηκε"</string>
<string name="status_failed" msgid="610462050405904601">"Ανεπιτυχής"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Ήχος και εικόνα"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Ρυθμίσεις ήχου"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ρύθμιση ήχων κλήσης, ειδοποιήσεων, φωτεινότητας οθόνης"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Λειτουργία σίγασης"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Ειδοποιήσεις κάρτας SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Αναπαραγωγή ήχου για τις προειδοποιήσεις κάρτας SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Αναπαραγωγή ήχου για τις προειδοποιήσεις κάρτας SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Συγχρονισμός δεδομένων"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Επιλογή εφαρμογών που θέλετε να συγχρονιστούν"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Λογαριασμοί & συγχρονισμός"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Προσθήκη ή κατάργηση λογαριασμών και αλλαγή ρυθμίσεων λογαριασμού"</string>
<string name="search_settings" msgid="1910951467596035063">"Αναζήτηση"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Διαχείριση ρυθμίσεων αναζήτησης και ιστορικού"</string>
<string name="display_settings" msgid="3912042046350078328">"Ρυθμίσεις προβολής"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ρύθμιση της φωτεινότητας της οθόνης"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Λήξη ορίου χρόνου οθόνης"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Προσαρμόστε το χρόνο που πρέπει να παρέλθει πριν από την αυτόματη απενεργοποίηση της οθόνης."</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Ρυθμίσεις κλειδώματος κάρτας SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Ορισμός κλειδώματος κάρτας SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Κλείδωμα κάρτας SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Κατάσταση"</string>
<string name="device_status" msgid="607405385799807324">"Κατάσταση"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Τηλεφωνικός αριθμός, σήμα κ.λπ."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Κάρτα SD & αποθηκευτικός χώρος τηλεφώνου"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Αφαίρεση κάρτας SD, προβολή διαθέσιμου αποθηκευτικού χώρου"</string>
<string name="status_number" msgid="5123197324870153205">"Ο τηλεφωνικός αριθμός μου"</string>
<string name="status_min_number" msgid="3519504522179420597">"ΛΕΠΤΟ"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Ενεργοποίηση δορυφόρων GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Κατά την εύρ.τοποθ., η ακρίβ.είναι σε επίπ.δρόμ.(αποεπιλ.το για εξοικ.μπατ.)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Εντοπ.σε επίπ.δρόμου (απαιτ.μεγ.καταν.μπαταρ.και μετάβ.σε ανοικτό χώρο)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Ενεργοποίηση βοήθειας GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Χρήση διακομιστή για βοήθεια GPS (καταργήστε την επιλογή για να μειώσετε τη χρήση του δικτύου)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Χρήση διακομιστή για βοήθεια του GPS (επιλέξτε για βελτίωση της απόδοσης του GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Κοινή χρήση με το Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Να επιτρέπεται στο Google η χρήση των τοποθεσιών για τη βελτίωση της αναζήτησης και άλλων υπηρεσιών"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Να επιτρέπεται στο Google η χρήση των τοποθεσιών για βελτιωμένα αποτελέσματα αναζήτησης και άλλες υπηρεσίες"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Θέλετε να επιτρέψετε στο Google να χρησιμοποιήσει πληροφορίες τοποθεσίας για καλύτερα αποτελέσματα αναζήτησης και άλλες υπηρεσίες;"</string>
<string name="agree" msgid="6288718671527758326">"Συμφωνώ"</string>
<string name="disagree" msgid="6221069272309799230">"Διαφωνώ"</string>
<string name="about_settings" msgid="1743378368185371685">"Σχετικά με το τηλέφωνο"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στα ακόλουθα στο τηλέφωνό σας:"</string>
<string name="computing_size" msgid="1599186977475211186">"Υπολογισμός..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Δεν είναι δυνατός ο υπολογισμός του μεγέθους του πακέτου"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Δεν έχετε εγκαταστήσει εφαρμογές τρίτων μερών."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Δεν έχετε εγκαταστήσει εφαρμογές τρίτων μερών."</string>
<string name="version_text" msgid="9189073826278676425">"έκδοση <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Τοπικές ρυθμίσεις & κείμενο"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Υπηρεσίες που εκτελούνται"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Προβολή και έλεγχος των εφαρμογών που εκτελούνται αυτή τη στιγμή"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Γίνεται επανεκκίνηση"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Δεν εκτελούνται υπηρεσίες"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Διακοπή υπηρεσίας;"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Η εκτέλεση της υπηρεσίας θα σταματήσει μέχρι να πραγματοποιηθεί ξανά εκκίνησή της από την εφαρμογή. Αυτό ενδέχεται να έχει μη επιθυμητές συνέπειες."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Διακοπή"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Άκυρο"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: επιλογή για διαχείριση"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Γλώσσα και πληκτρολόγιο"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Ορισμ.τοπ.ρυθμ.(γλώσσα και περιοχή), είσ.κειμ.και επιλ.αυτόμ.διόρθ."</string>
<string name="language_category" msgid="3391756582724541530">"Τοπικές ρυθμίσεις"</string>
<string name="text_category" msgid="6342540511465136739">"Ρυθμίσεις κειμένου"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Ο εντοπισμός σφαλμάτων USB προορίζεται μόνο για σκοπούς προγραμματισμού. Μπορεί να χρησιμοποιηθεί για αντιγραφή δεδομένων μεταξύ του υπολογιστή και της συσκευής σας, για την εγκατάσταση εφαρμογών στη συσκευή σας χωρίς προειδοποίηση και για την ανάγνωση δεδομένων καταγραφής."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Επιλογή gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Επιλογή γραφικού στοιχείου"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Λεπτομέρειες για UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Λεπτομέρειες για UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Λεπτομέρειες χρήσης δικτύου για <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Αριθμός byte που ελήφθησαν: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Εφαρμογή"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Μέτρηση"</string>
<string name="usage_time_label" msgid="295954901452833058">"Χρόνος χρήσης"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Προσβασιμότητα"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Διαχείριση επιλογών προσβασιμότητας"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Προσβασιμότητα"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Υπηρεσίες προσβασιμότητας"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Χρόνος ενεργοποίησης της συσκευής"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Ώρα ενεργοποίησης WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Ώρα ενεργοποίησης WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Λεπτομέρειες από τη χρήση της μπαταρίας"</string>
<string name="details_subtitle" msgid="32593908269911734">"Λεπτομέρειες χρήσης"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Προσαρμογή χρήσης ισχύος"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Μπαταρία που χρησιμοποιείται από το Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Απενεργοποίηση του Wi-Fi όταν δεν χρησιμοποιείται ή όταν δεν είναι διαθέσιμο"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Μπαταρία που χρησιμοποιείται από το Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Απενεργοποίηση του Bluetooth όταν δεν χρησιμοποιείται"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Απενεργοποίηση του Bluetooth όταν δεν το χρησιμοποιείτε"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Δοκιμή σύνδεσης σε διαφορετική συσκευή bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Χρήση μπαταρίας κατά την εκτέλεση των εφαρμογών"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Τερματισμός ή κατάργηση εγκατάστασης της εφαρμογής"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Ανανέωση"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Λειτουργικό σύστημα Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Σύνθεση λόγου"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Κείμενο σε λόγο"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Ορισμός επιλογών κειμένου σε λόγο"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Στοιχεία έλεγχου προγράμματος σύνθεσης ομιλίας"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Χρήση των ρυθμίσεών μου πάντα"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Αυτό είναι ένα παράδειγμα σύνθεσης λόγου."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Οι ρυθμίσεις σας άλλαξαν. Το παρόν είναι ένα παράδειγμα του ήχου τους."</string>
<string name="gadget_title" msgid="7455548605888590466">"Έλεγχος ισχύος"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Ενημέρωση ρύθμισης Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Ενημέρωση ρύθμισης Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Ρυθμίσεις VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Σύνδεση σε %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Σύνδεση σε <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Όνομα χρήστη:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Κωδικός πρόσβασης:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"ένα όνομα χρήστη"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Αποσύνδεση από το δίκτυο"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Επεξεργασία δικτύου"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Διαγραφή δικτύου"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Πρέπει να καταχωρίσετε %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Πρέπει να επιλέξετε %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Το όνομα VPN \'%s\' υπάρχει ήδη. Εύρεση άλλου ονόματος."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Πρέπει να καταχωρίσετε <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Πρέπει να επιλέξετε <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Το όνομα VPN \"<xliff:g id="NAME">%s</xliff:g>\" υπάρχει ήδη. Βρείτε άλλο όνομα."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το VPN;"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Είστε βέβαιοι ότι δεν θέλετε να δημιουργήσετε αυτό το προφίλ;"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Είστε βέβαιοι ότι θέλετε να απορρίψετε τις αλλαγές που πραγματοποιήθηκαν σε αυτό το προφίλ;"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Από αυτήν τη διαμόρφωση VPN απουσιάζει ένα ή περισσότερα μυστικά. Θέλετε να ελέγξετε τις μυστικές ρυθμίσεις σας;"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Το όνομα χρήστη ή ο κωδικός πρόσβασης που καταχωρίστηκε δεν είναι σωστός. Θέλετε να δοκιμάσετε ξανά;"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Αποκλεισμός από το διακομιστή. Το όνομα χρήστη ή ο κωδικός πρόσβασης που καταχωρίσατε ενδέχεται να είναι εσφαλμένα. Θέλετε να δοκιμάσετε ξανά;"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Διακόπηκε η σύνδεση με τον διακομιστή. Είναι πιθανό να βρίσκεστε πίσω από τείχος προστασίας που εμποδίζει τη σύνδεσή σας με τον διακομιστή. Θέλετε να δοκιμάσετε ξανά;"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Η διαπραγμάτευση διακομιστή απέτυχε. Ο διακομιστής μπορεί να μη δέχεται την επιλογή κρυπτογράφησής που έχετε κάνει. Θέλετε να ελέγξετε τη ρύθμιση κρυπτογράφησης;"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Προσθήκη VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Προσθήκη VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Προσθήκη του %s VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Λεπτομέρειες του %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Προσθήκη VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Λεπτομέρειες <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Σύνδεση..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Αποσύνδεση..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Σύνδεση στο δίκτυο"</string>
<string name="vpn_name" msgid="1550918148476193076">"Όνομα VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"ένα όνομα VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"Προστέθηκε το προφίλ %s"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Οι αλλαγές πραγματοποιούνται σε %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"Προστέθηκε το προφίλ \"<xliff:g id="NAME">%s</xliff:g>\""</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Έγιναν οι αλλαγές στο προφίλ \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Ορισμός πιστοποιητικού χρήστη"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Πιστοποιητικό χρήστη"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"ένα πιστοποιητικό χρήστη"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Όνομα διακομιστή VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Τομείς αναζήτησης DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Τομείς αναζήτησης DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"Ορίστηκε η τιμή %s"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"Δεν ορίστηκε %s"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"Η τιμή %s δεν ορίστηκε (προαιρετικό)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Ενεργοποίηση %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Απενεργοποίηση %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"Το %s είναι ενεργοποιημένο"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"Το %s είναι απενεργοποιημένο"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"Ορίστηκε η τιμή <xliff:g id="VALUE">%s</xliff:g>"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"Η τιμή <xliff:g id="VALUE">%s</xliff:g> δεν ορίστηκε"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"Η τιμή <xliff:g id="VALUE">%s</xliff:g> δεν ορίστηκε (προαιρετικό)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Ενεργοποίηση <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Απενεργοποίηση επιλογής <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"Η επιλογή <xliff:g id="OPTION">%s</xliff:g> είναι ενεργοποιημένη"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"Η επιλογή <xliff:g id="OPTION">%s</xliff:g> είναι απενεργοποιημένη"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Ρυθμίσεις VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Εγκατάσταση και διαχείριση Εικονικών Ιδιωτικών Δικτύων (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(δεν έγινε αλλαγή)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Να επιτρέπεται στις εφαρμογές η πρόσβαση σε ασφαλή πιστοποιητικά και άλλα διαπιστευτήρια"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Καταχώριση κωδικού πρόσβασης"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Καταχώριση κωδικού πρόσβασης χώρου αποθήκευσης διαπιστευτηρίων"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Ορισμός κωδικού πρόσβασης"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Ορισμός ή αλλαγή κωδικού πρόσβασης χώρου αποθήκευσης διαπιστευτηρίων"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Ορισμός κωδικού πρόσβασης"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Τρέχον κωδικός πρόσβασης:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Νέος κωδικός πρόσβασης:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Επιβεβαίωση νέου κωδικού πρόσβασης:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Ορισμός ενός κωδικού πρόσβασης για τον αποθηκευτικό χώρο διαπιστευτηρίων."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Ορισμός ενός κωδικού πρόσβασης για τον αποθηκευτικό χώρο διαπιστευτηρίων."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Καταχωρίστε το σωστό κωδικό πρόσβασης."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Καταχωρίστε το σωστό κωδικό πρόσβασης. Σας απομένει άλλη μία προσπάθεια για τη σωστή καταχώριση του κωδικού πρόσβασης πριν τη διαγραφή του αποθηκευτικού χώρου διαπιστευτηρίων."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Καταχωρίστε το σωστό κωδικό πρόσβασης. Σας απομένουν ακόμη %d προσπάθειες για τη σωστή καταχώριση του κωδικού πρόσβασης πριν τη διαγραφή του αποθηκευτικού χώρου διαπιστευτηρίων."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Καταχωρίστε το σωστό κωδικό πρόσβασης. Σας απομένουν ακόμη <xliff:g id="NUMBER">%d</xliff:g> προσπάθειες για τη σωστή καταχώριση του κωδικού πρόσβασης πριν τη διαγραφή του αποθηκευτικού χώρου διαπιστευτηρίων."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Οι κωδικοί πρόσβασης δεν ταιριάζουν."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Πρέπει να καταχωρίσετε και να επιβεβαιώσετε έναν κωδικό πρόσβασης."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Καταχωρίστε τον κωδικό πρόσβασης."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Καταχωρίστε τον κωδικό πρόσβασης ξανά. Ο κωδικός πρόσβασης πρέπει να αποτελείται τουλάχιστον από 8 χαρακτήρες και δεν πρέπει να περιλαμβάνει κενά διαστήματα."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Καταχωρίστε ένα όνομα."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Καταχωρίστε ένα όνομα που περιλαμβάνει μόνο γράμματα και αριθμούς."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Δεν είναι δυνατή η αποθήκευση του πιστοποιητικού. Κάντε κλικ στην επιλογή ΟΚ για νέα προσπάθεια."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Το πιστοποιητικό δεν αποθηκεύτηκε."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Αυτός ο αποθηκευτικός χώρος διαπιστευτηρίων διαγράφτηκε."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Χώρος αποθήκευσης διαπιστευτηρίων ενεργοποιήθηκε."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"Προστέθηκε %s."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"Προστέθηκε <xliff:g id="CREDENTIAL">%s</xliff:g>"</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Τόνος επείγουσας ανάγκης"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Ορισμός συμπεριφοράς κατά την πραγματοποίηση κλήσης επείγουσας ανάγκης"</string>
</resources>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index dd6a532..44ba6b4 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacífico"</item>
<item msgid="8392017019801393511">"Todos"</item>
</string-array>
+ <string-array name="animations_entries">
+ <item msgid="207790005475613429">"No hay animaciones"</item>
+ <item msgid="6291186755504776720">"Algunas animaciones"</item>
+ <item msgid="3856065399819979491">"Todas las animaciones"</item>
+ </string-array>
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"No se muestran animaciones de ventana"</item>
+ <item msgid="4460915688877708508">"Se muestran algunas animaciones de ventana"</item>
+ <item msgid="488968798204105119">"Se muestran todas las animaciones de ventana"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 segundos"</item>
<item msgid="8881760709354815449">"30 segundos"</item>
@@ -58,18 +68,14 @@
<item msgid="2923732046112398627">"Automáticamente"</item>
<item msgid="5434666299123318296">"Ninguno"</item>
<item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA personal"</item>
- <item msgid="1977424472734732392">"WPA2 personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
+ <item msgid="1687348101566181433">"WPA/WPA2 PSK"</item>
+ <item msgid="329777238762866787">"Empresa 802.1x"</item>
</string-array>
<string-array name="wifi_security_without_auto_entries">
<item msgid="4402120432904877907">"Ninguno"</item>
<item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA personal"</item>
- <item msgid="8928468573279595315">"WPA2 personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
+ <item msgid="6903317668294332381">"WPA/WPA2 PSK"</item>
+ <item msgid="7280821339307729710">"Empresa 802.1x"</item>
</string-array>
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automáticamente"</item>
@@ -108,7 +114,7 @@
<item msgid="1818786254010764570">"Ninguno"</item>
<item msgid="6189918678874123056">"PAP"</item>
<item msgid="1524112260493662517">"MSCHAP"</item>
- <item msgid="1586767102985419413">"MSCHAP2"</item>
+ <item msgid="5923246669412752932">"MSCHAPV2"</item>
<item msgid="8651992560135239389">"GTC"</item>
</string-array>
<string-array name="emergency_tone_entries">
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 96a429c..65a6759 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -15,6 +15,8 @@
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="yes" msgid="4676390750360727396">"Sí"</string>
+ <string name="no" msgid="6731231425810196216">"No"</string>
<string name="device_info_default" msgid="7847265875578739287">"Desconocido"</string>
<string name="turn_on_radio" msgid="8706561489788373676">"Encender la radio"</string>
<string name="turn_off_radio" msgid="1820294552893884115">"Apagar la radio"</string>
@@ -56,6 +58,7 @@
<string name="font_size_save" msgid="3450855718056759095">"Aceptar"</string>
<string name="sdcard_setting" msgid="5922637503871474866">"Tarjeta SD"</string>
<string name="battery_info_status_label" msgid="8109155295509700309">"Estado de batería:"</string>
+ <string name="battery_info_power_label" msgid="7465140230991349382">"Enchufe:"</string>
<string name="battery_info_scale_label" msgid="3649763192389778437">"Escala de batería:"</string>
<string name="battery_info_level_label" msgid="8706526709307788737">"Nivel de la batería:"</string>
<string name="battery_info_health_label" msgid="6416051542741886958">"Estado de la batería:"</string>
@@ -75,6 +78,11 @@
<string name="battery_info_status_discharging" msgid="6222697503392774475">"Descargando"</string>
<string name="battery_info_status_not_charging" msgid="2820070506621483576">"No se realiza la carga"</string>
<string name="battery_info_status_full" msgid="2824614753861462808">"Total"</string>
+ <string name="battery_info_power_unplugged" msgid="5987246575519551081">"Desconectado"</string>
+ <string name="battery_info_power_ac" msgid="6808516193001604634">"CA"</string>
+ <string name="battery_info_power_usb" msgid="8012931702516331797">"USB"</string>
+ <string name="battery_info_power_ac_usb" msgid="6777734146838328688">"CA+USB"</string>
+ <string name="battery_info_power_unknown" msgid="7344115502868899881">"Desconocido"</string>
<string name="battery_info_health_unknown" msgid="5664295556921944255">"Desconocido"</string>
<string name="battery_info_health_good" msgid="8070356565806711806">"Bueno"</string>
<string name="battery_info_health_overheat" msgid="8442959549291368806">"Recalentar"</string>
@@ -104,6 +112,12 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Solicitud de vinculación de Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Vinculando solicitud"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Seleccionar para vincularse con "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Selector de dispositivo Bluetooth"</string>
+ <string name="bluetooth_permission_request" msgid="1523129741266262748">"Solicitud de permiso de Bluetooth"</string>
+ <string name="bluetooth_ask_enablement" msgid="2342558978033892004">"Una aplicación de tu teléfono solicita permiso para activar Bluetooth. ¿Deseas activarlo?"</string>
+ <string name="bluetooth_ask_discovery" msgid="669870705606180872">"Una aplicación de tu teléfono solicita permiso para hacer que tu teléfono pueda ser detectable por otros dispositivos de Bluetooth durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos. ¿Deseas activarlo?"</string>
+ <string name="bluetooth_ask_enablement_and_discovery" msgid="7220210326619399542">"Una aplicación de tu teléfono solicita permiso para activar Bluetooth y hacer que tu teléfono pueda ser detectable por otros dispositivos durante <xliff:g id="TIMEOUT">%1$d</xliff:g> segundos. ¿Deseas activarlo?"</string>
+ <string name="bluetooth_turning_on" msgid="3107102168379705771">"Activando Bluetooth…"</string>
<string name="date_and_time" msgid="4114084177056654663">"Configuración de fecha y hora"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 p. m."</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +210,8 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Desactivar todas las conexiones inalámbricas"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Desactivando conexiones inalámbricas…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Activando conexiones inalámbricas…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Controles de tel. inalám."</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Redes & inalámbricas"</string>
+ <string name="wireless_networks_settings_title" msgid="149274247949769551">"Configuración inalámbrica y de red"</string>
<string name="radio_controls_summary" msgid="2998818677094465517">"Administrar Wi-Fi, Bluetooth, modo de avión, redes, móviles, & VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Roaming de datos"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Conectarse a servicios de datos en el roaming"</string>
@@ -219,20 +234,29 @@
<string name="date_time_date_format" msgid="436706100255870967">"Selecc. el formato de fecha"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Ordenar alfabéticamente"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Ordenar por zona horaria"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Seguridad y ubicación"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Seguridad de la & ubicación"</string>
+ <string name="location_security_settings_title" msgid="4624434296446625554">"Configuración de ubicación y seguridad"</string>
<string name="security_settings_summary" msgid="967393342537986570">"Establecer Mi ubicación, desbloqueo de pantalla, bloqueo de la tarjeta SIM, bloqueo de almacenamiento de la credencial"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Establecer Mi ubicación, desbloqueo de pantalla, bloqueo de almacenamiento de credencial"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Contraseñas"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Activar Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Configuración de Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Config. de Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Administrar conexiones, establecer nombre y detección del dispositivo"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Solicitud de vinculación de Bluetooth"</string>
+ <string name="bluetooth_pairing_request" msgid="6385750334766370310">"Solicitud de vinculación de Bluetooth"</string>
<string name="bluetooth_device_info" msgid="6644515376523965073">"Información del dispositivo Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Escribe el PIN para poder vincular."\n"(prueba con 0000 ó 1234)."</string>
+ <string name="bluetooth_enter_pin_msg" msgid="856962526754150334">\n"Escribe el PIN para poder vincular con \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". (prueba con 0000 ó 1234)."</string>
+ <string name="bluetooth_enter_passkey_msg" msgid="8121515818772179228">\n"Escribe la llave maestra para vincular con \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Para vincular con \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", confirma que muestra la llave maestra: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <string name="bluetooth_incoming_pairing_msg" msgid="1076613564387784476">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n"desea vincularse."</string>
+ <string name="bluetooth_display_passkey_msg" msgid="3048496029389441579">"Ingresa <xliff:g id="PASSKEY">%2$s</xliff:g> en \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" para vincular."</string>
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Vincular"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"No vincular"</string>
+ <string name="bluetooth_remote_device" msgid="2406662802908395389">"dispositivo bluetooth"</string>
<string name="bluetooth_error_title" msgid="538287072376677166">"Atención"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Se ha producido un problema al vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Se ha producido un problema al vincular <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que el PIN que has escrito es incorrecto."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="6065697229258906937">"Se ha producido un problema al vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que el PIN o la llave maestra es incorrecta."</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"No es posible establecer la comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Vínculo rechazado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Se ha producido un problema al conectarse con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +270,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Conectar a..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Medios"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Teléfono"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transferir"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Conectado al audio de medios"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Conectado al audio del teléfono"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Conectado al audio del teléfono y los medios"</string>
@@ -255,8 +280,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Perfiles"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado al audio de medios"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado al audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado al servidor de transferencia de archivo"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"No conectado al servidor de transferencia de archivo"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para el audio de medios"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para el audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizar para la transferencia de archivos"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Encender Wi-Fi"</string>
@@ -273,17 +301,13 @@
<string name="security" msgid="1040691896987225267">"Seguridad"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Abrir"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <string name="wifi_security_psk" msgid="3392399380570381452">"WPA/WPA2 PSK"</string>
+ <string name="wifi_security_eap" msgid="8309434150934969132">"Empresa(802.1x)"</string>
<string name="wifi_security_unknown" msgid="4564208312073060668">"Desconocido"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"abrir red"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"asegurado con WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"asegurado con WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"asegurado con WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"asegurado con WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"asegurado con IEEE 802.1x"</string>
+ <string name="wifi_security_verbose_psk" msgid="1110130025330416225">"asegurado con WPA/WPA2 PSK"</string>
+ <string name="wifi_security_verbose_eap" msgid="586632662086063">"asegurado con 802.1x EAP"</string>
<string name="ip_address" msgid="850672263358989449">"Dirección IP"</string>
<string name="signal" msgid="1947969631626413228">"Potencia de la señal"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Encendiendo..."</string>
@@ -302,14 +326,13 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Identidad anónima"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificado de cliente"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certificado de CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Contraseña de clave privada"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Contraseña de teléfono inalámbrico"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Clave hexadecimal WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Mostrar contraseña."</string>
<string name="scan_wifi" msgid="2459901725350542606">"Explorar"</string>
<string name="summary_not_in_range" msgid="3926674700733548684">"Fuera del alcance"</string>
<string name="summary_remembered" msgid="6079941090549401742">"recordado"</string>
- <string name="summary_connection_failed" msgid="7610394657613410489">"La conexión no se ha realizado correctamente, selecciona para volver a intentarlo"</string>
+ <string name="summary_connection_failed" msgid="2351885658101671413">"La conexión no se ha realizado correctamente, toca para volver a intentarlo"</string>
<string name="wifi_access_points" msgid="2664629396767022441">"Redes de Wi-Fi"</string>
<string name="wifi_type_ssid" msgid="1326839657083292017">"SSID de red"</string>
<string name="wifi_security" msgid="6603611185592956936">"Seguridad"</string>
@@ -360,6 +383,7 @@
<string name="status_disconnected" msgid="7561688569905126046">"Desconectado"</string>
<string name="status_failed" msgid="610462050405904601">"Incorrecto"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Sonido y visualización"</string>
+ <string name="sound_and_display_settings_title" msgid="5036144539683697330">"Configuración de sonido y visualización"</string>
<string name="sound_settings" msgid="5007659014828162881">"Configuración de sonido"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Establecer tonos de llamada, notificaciones, brillo de pantalla"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
@@ -385,11 +409,14 @@
<string name="sound_effects_enable_title" msgid="3197313718929122833">"Selección audible"</string>
<string name="sound_effects_enable_summary_on" msgid="6154141289879491329">"Reproducir el sonido al realizar la selección de pantalla"</string>
<string name="sound_effects_enable_summary_off" msgid="3447739581759560125">"Reproducir el sonido al realizar la selección de pantalla"</string>
+ <string name="haptic_feedback_enable_title" msgid="6311736559245411290">"Comentarios hápticos"</string>
+ <string name="haptic_feedback_enable_summary_on" msgid="1875779656524793053">"Vibrar al presionar teclas programables y ciertas interacciones de interfaz de usuario"</string>
+ <string name="haptic_feedback_enable_summary_off" msgid="7287885436963105314">"Vibrar al presionar teclas programables y ciertas interacciones de interfaz de usuario"</string>
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notificac. de tarjeta SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Reproducir el sonido para los avisos de la tarjeta SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproducir el sonido para los avisos de la tarjeta SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Sincronización de datos"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Seleccionar las aplicaciones que se sincronizan"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Cuentas y sincronización"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Agregar o eliminar cuentas, y cambiar la configuración de la cuenta"</string>
<string name="search_settings" msgid="1910951467596035063">"Buscar"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Administrar la configuración y el historial de búsqueda"</string>
<string name="display_settings" msgid="3912042046350078328">"Configuración de visualización"</string>
@@ -403,6 +430,7 @@
<string name="brightness_summary" msgid="838917350127550703">"Ajustar el brillo de la pantalla"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Tiempo de espera de la pant."</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Ajustar el tiempo de demora para que la pantalla se apague automáticamente"</string>
+ <string name="automatic_brightness" msgid="5014143533884135461">"Brillo automático"</string>
<string name="sim_lock_settings" msgid="3392331196873564292">"Configuración de bloqueo de la tarjeta SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Conf. bloqueo de tarj. SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Bloqueo de la tarjeta SIM"</string>
@@ -436,7 +464,8 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
<string name="device_status" msgid="607405385799807324">"Estado"</string>
<string name="device_status_summary" msgid="2599162787451519618">"número de teléfono, señal, etc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Tarjeta SD y almac. del tel."</string>
+ <string name="storage_settings" msgid="6681164315506788024">"Tarjeta SD y almacenamiento del teléfono"</string>
+ <string name="storage_settings_title" msgid="5379463509034022773">"Configuración de la tarjeta SD y del almacenamiento del teléfono"</string>
<string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar tarjeta SD, ver espacio de almacenamiento disponible"</string>
<string name="status_number" msgid="5123197324870153205">"Mi número de teléfono"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -480,6 +509,11 @@
<string name="apn_mms_port" msgid="4074188088199243040">"Puerto MMS"</string>
<string name="apn_mcc" msgid="4258628382260674636">"MCC"</string>
<string name="apn_mnc" msgid="8629374076888809874">"MNC"</string>
+ <string name="apn_auth_type" msgid="6167205395676037015">"Tipo de autenticación"</string>
+ <string name="apn_auth_type_none" msgid="5069592676845549926">"Ninguno"</string>
+ <string name="apn_auth_type_pap" msgid="1666934536996033383">"PAP"</string>
+ <string name="apn_auth_type_chap" msgid="3369626283789068360">"CHAP"</string>
+ <string name="apn_auth_type_pap_chap" msgid="9102343063036134541">"PAP o CHAP"</string>
<string name="apn_type" msgid="469613123902220544">"Tipo de APN"</string>
<string name="menu_delete" msgid="6981294422841124659">"Eliminar APN"</string>
<string name="menu_new" msgid="3014205883303921729">"APN nuevo"</string>
@@ -518,12 +552,15 @@
<string name="location_network_based" msgid="8815705866861993344">"Utilizar redes inalám."</string>
<string name="location_networks_disabled" msgid="2708968452901433980">"Ver ubicación en las aplicaciones (como Mapas) mediante redes inalámbricas"</string>
<string name="location_neighborhood_level" msgid="4656658097932515921">"Ubicación determinada por Wi-Fi o redes de celulares"</string>
- <string name="location_gps" msgid="375912731641377120">"Activar satélites de GPS"</string>
- <string name="location_street_level" msgid="5899941752252356344">"Localiz. con una precisión del nivel de calle (deselecc. para conservar la batería)"</string>
+ <string name="location_gps" msgid="6296125378829097831">"Utilizar satélites de GPS"</string>
+ <string name="location_street_level" msgid="6460740847018275745">"Localizar con una precisión del nivel de calle (anular la selección para ahorrar batería)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localiz. a nivel de calle (nec. más batería además de la vista del cielo)"</string>
- <string name="use_location_title" msgid="7585990952633568732">"Compartir con Google"</string>
- <string name="use_location_summary" msgid="4411467143899877395">"Permitir a Google utilizar la ubicación para la búsqueda mejorada y otros servicios"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Permitir a Google utilizar la ubicación para los resultados de búsqueda mejorada y otros servicios"</string>
+ <string name="assisted_gps" msgid="4649317129586736885">"Utilizar GPS asistido"</string>
+ <string name="assisted_gps_enabled" msgid="8751899609589792803">"Utilizar el servidor para asistir el GPS (anular la selección para reducir el uso de la red)"</string>
+ <string name="assisted_gps_disabled" msgid="6982698333968010748">"Utilizar el servidor para asistir el GPS (anula la selección para mejorar el rendimiento del GPS)"</string>
+ <string name="use_location_title" msgid="5447030582538504247">"Utilizar Mi ubicación"</string>
+ <string name="use_location_summary" msgid="1816849484040070431">"Utilizar Mi ubicación para los resultados de búsqueda de Google y otros servicios de Google"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"¿Deseas permitir que Google utilice la ubicación para los resultados de búsqueda mejorada y otros servicios?"</string>
<string name="agree" msgid="6288718671527758326">"Acepto"</string>
<string name="disagree" msgid="6221069272309799230">"No acepto"</string>
<string name="about_settings" msgid="1743378368185371685">"Acerca del teléfono"</string>
@@ -538,6 +575,10 @@
<string name="settings_license_activity_title" msgid="7553683406244228650">"Abrir licencias de origen"</string>
<string name="settings_license_activity_unavailable" msgid="4210539215951487627">"Hay un problema para cargar las licencias."</string>
<string name="settings_license_activity_loading" msgid="3337535809093591740">"Cargando…"</string>
+ <string name="settings_safetylegal_title" msgid="1289483965535937431">"Información de seguridad"</string>
+ <string name="settings_safetylegal_activity_title" msgid="6901214628496951727">"Información de seguridad"</string>
+ <string name="settings_safetylegal_activity_unreachable" msgid="3198912875259612887">"Tu teléfono no está conectado al servicio de datos. Para ver esta información ahora, visita %s desde cualquier computadora conectada a Internet."</string>
+ <string name="settings_safetylegal_activity_loading" msgid="8059022597639516348">"Cargando…"</string>
<string name="lock_settings_title" msgid="5828348303971852121">"Patrón de desbloqueo de la pantalla"</string>
<string name="lockpattern_change_lock_pattern_label" msgid="5679630792003440352">"Cambiar patrón de desbloqueo"</string>
<string name="lockpattern_need_to_unlock" msgid="757935356911054465">"Confirmar el patrón guardado"</string>
@@ -566,9 +607,9 @@
<string name="skip_button_label" msgid="8680422740354436943">"Cancelar"</string>
<string name="next_button_label" msgid="8890792540116568321">"Siguiente"</string>
<string name="lock_title" msgid="4059246467204273930">"Asegurando tu teléfono"</string>
- <string name="lock_intro_message" msgid="5352897389718432077"><font size="17">"Protege a tu teléfono de usos no autorizados al crear un patrón de desbloqueo en la pantalla personal. "\n<font height="17">\n</font><b>"1"</b>" En la pantalla siguiente, observa cómo se extrae un patrón de ejemplo. "\n<font height="17">\n</font><b>"2"</b>" Cuando estés listo, extrae tu propio patrón de desbloqueo personal. Experimenta con diferentes patrones pero conecta al menos cuatro puntos. "\n<font height="17">\n</font><b>"3"</b>" Revisa tu patrón para confirmar. "\n<font height="17">\n</font><b>"¿Estás listo para comenzar? Selecciona \"Siguiente\""</b>". "\n<font height="3">\n</font>"Si deseas dejar sin protección a tu teléfono, selecciona \"Cancelar\"."</font></string>
+ <string name="lock_intro_message" msgid="9100785646737118042"><font size="17">"Protege a tu teléfono de usos no autorizados al crear un patrón de desbloqueo en la pantalla personal. "\n<font height="17">\n</font><b>"1"</b>" En la pantalla siguiente, observa cómo se extrae un patrón de ejemplo. "\n<font height="17">\n</font><b>"2"</b>" Cuando estés listo, extrae tu propio patrón de desbloqueo personal. Experimenta con diferentes patrones pero conecta al menos cuatro puntos. "\n<font height="17">\n</font><b>"3"</b>" Revisa tu patrón para confirmar. "\n<font height="17">\n</font><b>"¿Estás listo para comenzar? Toca \"Siguiente\""</b>". "\n<font height="3">\n</font>"Si deseas dejar sin protección a tu teléfono, toca \"Cancelar\"."</font></string>
<string name="lock_example_title" msgid="8052305554017485410">"Patrón de ejemplo"</string>
- <string name="lock_example_message" msgid="7431982730914254881">"Conecta al menos cuatro puntos."\n" "\n"Selecciona \"Siguiente\" cuando estés listo para extraer tu propio patrón."</string>
+ <string name="lock_example_message" msgid="1838650097090632706">"Conecta al menos cuatro puntos."\n" "\n"Toca \"Siguiente\" cuando estés listo para extraer tu propio patrón."</string>
<string name="manageapplications_settings_title" msgid="5712405848153426706">"Administrar aplicaciones"</string>
<string name="manageapplications_settings_summary" msgid="6097117021500651232">"Administrar y eliminar aplicaciones instaladas"</string>
<string name="applications_settings" msgid="3736173521008476946">"Aplicaciones"</string>
@@ -602,12 +643,12 @@
<string name="filter" msgid="2018011724373033887">"Filtro"</string>
<string name="filter_dlg_title" msgid="6507663329723966854">"Seleccionar opciones de filtro"</string>
<string name="filter_apps_all" msgid="5142129378749391876">"Todos"</string>
- <string name="filter_apps_third_party" msgid="1096017647285183437">"Tercero"</string>
+ <string name="filter_apps_third_party" msgid="7786348047690140979">"Descargado"</string>
<string name="filter_apps_running" msgid="7767071454371350486">"En ejecución"</string>
<string name="loading" msgid="3200408047793887917">"Cargando…"</string>
<string name="recompute_size" msgid="7722567982831691718">"Recalculando el tamaño…"</string>
<string name="clear_data_dlg_title" msgid="4470209520936375508">"Eliminar"</string>
- <string name="clear_data_dlg_text" msgid="8796694785488630642">"Toda la información que has guardado en esta aplicación se eliminará de manera permanente."</string>
+ <string name="clear_data_dlg_text" msgid="8368035073300828451">"Todos los datos de esta aplicación se suprimirán de forma permanente. Esto incluye todos los archivos, las configuraciones, las cuentas, las bases de datos, etc."</string>
<string name="dlg_ok" msgid="2402639055725653590">"Aceptar"</string>
<string name="dlg_cancel" msgid="1674753358972975911">"Cancelar"</string>
<string name="app_not_found_dlg_title" msgid="8458335716378083713">"No se ha encontrado la aplicación"</string>
@@ -620,9 +661,23 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Esta aplicación puede acceder a lo siguiente en tu teléfono:"</string>
<string name="computing_size" msgid="1599186977475211186">"Calculando..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"No se ha podido calcular el tamaño del paquete"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"No tienes instalada ninguna aplicación de terceros."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"No tienes instalada ninguna aplicación de terceros."</string>
<string name="version_text" msgid="9189073826278676425">"versión <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"País y texto"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Servicios en ejecución"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver y controlar servicios actuales en ejecución"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Volver a comenzar"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Sin servicios en ejecución"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"¿Deseas detener el servicio?"</string>
+ <string name="confirm_stop_service_msg" msgid="1202118456282395730">"El servicio no ejecutará más hasta que comience de nuevo. Esto puede tener consecuencias no deseadas en la aplicación <xliff:g id="APPLICATION">%1$s</xliff:g>."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Detener"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
+ <string name="service_started_by_app" msgid="8432097226392386802">"Comenzado por aplicación: tocar para detener"</string>
+ <string name="service_client_name" msgid="2337664610975074717">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: tocar para administrar"</string>
+ <string name="service_background_processes" msgid="5158600475629177758">"Disp.:<xliff:g id="FREE">%2$s</xliff:g>+<xliff:g id="MEMORY">%3$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="service_foreground_processes" msgid="4013890350284680796">"Otro: <xliff:g id="MEMORY">%2$s</xliff:g> en <xliff:g id="COUNT">%1$d</xliff:g>"</string>
+ <string name="service_process_name" msgid="8630408984456958400">"Proceso: <xliff:g id="PROCESS">%1$s</xliff:g>"</string>
+ <string name="language_settings" msgid="502219872342167227">"Idioma & del teclado"</string>
+ <string name="language_keyboard_settings_title" msgid="3455826933385341107">"Idioma y Configuración del teclado"</string>
<string name="language_settings_summary" msgid="595647729475399987">"Establecer opciones de país (idioma y región), ingreso de texto y corrección automática"</string>
<string name="language_category" msgid="3391756582724541530">"Configuración de país"</string>
<string name="text_category" msgid="6342540511465136739">"Configuración de texto"</string>
@@ -637,7 +692,7 @@
<string name="auto_punctuate_summary" msgid="4372126865670574837">"Presionar la tecla de espacio dos veces para insertar \".\""</string>
<string name="show_password" msgid="2198798062604049206">"Contraseñas visibles"</string>
<string name="show_password_summary" msgid="3806709974395178121">"Mostrar contraseña mientras escribe"</string>
- <string name="ime_security_warning" msgid="3458652708716006477">"El método de entrada puede recopilar todo el texto que escribas, incluidos los datos personales como contraseñas y números de tarjetas de crédito. Proviene de la aplicación <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. ¿Deseas activar este método de entrada?"</string>
+ <string name="ime_security_warning" msgid="812267421486877917">"El método de entrada puede recopilar todo el texto que escribas, incluidos los datos personales como contraseñas y números de tarjetas de crédito. Proviene de la aplicación <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. ¿Deseas utilizar este método de entrada?"</string>
<string name="user_dict_settings_titlebar" msgid="765659257455000490">"Diccionario del usuario"</string>
<string name="user_dict_settings_title" msgid="8357027437499042191">"Diccionario del usuario"</string>
<string name="user_dict_settings_summary" msgid="2460427065601355471">"Agregar y eliminar palabras del diccionario del usuario"</string>
@@ -665,7 +720,7 @@
<string name="input_methods_settings_title" msgid="6800066636850553887">"Ingreso de texto"</string>
<string name="input_methods_settings_summary" msgid="7571173442946675205">"Administrar opciones de ingreso de texto"</string>
<string name="input_methods_settings_label_format" msgid="6002887604815693322">"Configuración de <xliff:g id="IME_NAME">%1$s</xliff:g>"</string>
- <string name="onscreen_keyboard_settings_summary" msgid="4919680715154885028">"Configuración de teclado en la pantalla"</string>
+ <string name="onscreen_keyboard_settings_summary" msgid="5841558383556238653">"Configuración del teclado en pantalla"</string>
<string name="builtin_keyboard_settings_title" msgid="8169889453770863227">"Teclado del dispositivo"</string>
<string name="builtin_keyboard_settings_summary" msgid="6404687907454621637">"Configuración de teclado integrado"</string>
<string name="development_settings_title" msgid="6719732334835420989">"Desarrollo"</string>
@@ -676,11 +731,11 @@
<string name="keep_screen_on_summary" msgid="2173114350754293009">"La pantalla nunca quedará inactiva mientras se realiza la carga"</string>
<string name="allow_mock_location" msgid="2787962564578664888">"Permitir ubicac. de prueba"</string>
<string name="allow_mock_location_summary" msgid="317615105156345626">"Permitir la creación de ubicaciones de prueba"</string>
- <string name="adb_warning_title" msgid="1756027479229533250">"¿Habilitar depuración de USB?"</string>
+ <string name="adb_warning_title" msgid="6234463310896563253">"¿Permite la depuración de USB?"</string>
<string name="adb_warning_message" msgid="5352555112049663033">"La depuración de USB está prevista sólo con fines de desarrollo. Se puede utilizar para copiar datos entre tu computadora y tu dispositivo, instalar aplicaciones en tu dispositivo sin aviso y leer los datos de registro."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Elegir gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Elegir control"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detalles de %d de UID"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detalles de UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"ID de usuario <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Detalles de uso de la red para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recibidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,12 +771,13 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplicación"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Contar"</string>
<string name="usage_time_label" msgid="295954901452833058">"Hora de uso"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Accesibilidad"</string>
+ <string name="accessibility_settings" msgid="3975902491934816215">"Accesibilidad"</string>
+ <string name="accessibility_settings_title" msgid="2130492524656204459">"Configuración de accesibilidad"</string>
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Administrar opciones de accesibilidad"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Accesibilidad"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Servicios de accesibilidad"</string>
<string name="no_accessibility_services_summary" msgid="694578333333808159">"No se han instalado servicios de accesibilidad"</string>
- <string name="accessibility_service_security_warning" msgid="8386156287296967181">"Este servicio de accesibilidad podrá recopilar todo el texto que escribes, incluido los números de tarjeta de crédito de tus datos personales, excepto las contraseñas. También podrá registrar las interacciones de tu interfaz de usuario. Proviene de la aplicación <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. ¿Deseas activar este servicio de accesibilidad?"</string>
+ <string name="accessibility_service_security_warning" msgid="4066258132331302670">"Este servicio de accesibilidad podrá recopilar todo el texto que escribas, incluido los números de tarjeta de crédito de tus datos personales, excepto las contraseñas. También podrá registrar las interacciones de tu interfaz de usuario. Proviene de la aplicación <xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g>. ¿Deseas utilizar este servicio de accesibilidad?"</string>
<string name="accessibility_service_disable_warning" msgid="8930591383312775132">"¿Deseas desactivar la accesibilidad?"</string>
<string name="power_usage_summary_title" msgid="5180282911164282324">"Uso de la batería"</string>
<string name="power_usage_summary" msgid="7237084831082848168">"Lo que ha utilizado la batería"</string>
@@ -733,7 +789,7 @@
<string name="awake" msgid="387122265874485088">"Hora de activación del dispositivo"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi a tiempo"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi a tiempo"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Detalles de uso de la batería"</string>
<string name="details_subtitle" msgid="32593908269911734">"Utilizar detalles"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Ajustar el uso de energía"</string>
@@ -769,7 +825,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"La batería está siendo utilizada por Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Desactivar Wi-Fi cuando no se utiliza o cuando no está disponible"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"La batería está siendo utilizada por bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Desactiva Bluetooth cuando no lo utilizas"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desactiva Bluetooth cuando no lo utilizas"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Intentar conectarse a un dispositivo Bluetooth diferente"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"La batería es utilizada por las aplicaciones durante el roaming"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Detener o desinstalar la aplicación"</string>
@@ -781,9 +837,9 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Actualizar"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Servidor de medios"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Síntesis de voz"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Texto a voz"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Establecer opciones de texto a voz"</string>
- <string name="tts_settings_title" msgid="5064947197040356736">"Controles del sintetizador de voz"</string>
+ <string name="tts_settings_title" msgid="4182348653053000933">"Configuración de texto a voz"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Usar siempre mi configuración"</string>
<string name="use_default_tts_settings_summary" msgid="4253502106159206276">"Configuración predeterminada debajo de la configuración superpuesta de la aplicación"</string>
<string name="tts_default_settings_section" msgid="5787915620218907443">"Configuración predeterminada"</string>
@@ -801,8 +857,11 @@
<string name="tts_demo" msgid="405357591189935876">"Éste es un ejemplo de síntesis de voz"</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Tu configuración ha cambiado. Éste es un ejemplo de cómo suenan."</string>
<string name="gadget_title" msgid="7455548605888590466">"Control de energía"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualizando configuración de Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualización de la configuración de Bluetooth"</string>
+ <string name="credential_installer_activity_title" msgid="7600661521831762521">"Programa de instalación de la credencial"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configuración de VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Conectar a %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Conectar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nombre de usuario:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Contraseña:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"un nombre de usuario"</string>
@@ -820,9 +879,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Desconectar de la red"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Editar red"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Suprimir red"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Debes ingresar %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Debes seleccionar %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"El nombre de la VPN \'%s\' ya existe. Busca otro nombre."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Debes ingresar <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Debes seleccionar <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"El nombre de la VPN \"<xliff:g id="NAME">%s</xliff:g>\" ya existe. Busca otro nombre."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"¿Estás seguro de que deseas eliminar esta VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"¿Estás seguro de que no deseas crear este perfil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"¿Estás seguro de que deseas descartar los cambios realizados a este perfil?"</string>
@@ -833,10 +892,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Faltan uno o más secretos en esta configuración de VPN. ¿Deseas verificar tu configuración de secretos?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"El nombre de usuario o la contraseña que has ingresado es incorrecto. ¿Deseas volver a intentarlo?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Servidor en suspenso. El nombre de usuario o la contraseña que has ingresado pueden ser incorrectos. ¿Deseas volver a intentarlo?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Servidor en suspenso. Es posible que te encuentres detrás de un cortafuegos que te impide conectarte con el servidor. ¿Deseas volver a intentarlo?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Hubo un error en la negociación del servidor. Es posible que el servidor no acuerde con tu opción de encriptación. ¿Deseas revisar tu configuración de encriptación?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Agregar VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Agregar VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Agregar %s VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Detalles de %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Agregar <xliff:g id="NAME">%s</xliff:g> VPN"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g> detalles"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Conectando..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Desconectando..."</string>
@@ -844,8 +905,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Conectar a la red"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nombre de VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"un nombre de VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"Se ha agregado %s"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Se han realizado cambios a %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" se ha agregado"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Se han realizado cambios a \'<xliff:g id="NAME">%s</xliff:g>\'"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Establecer certificado de usuario"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificado del usuario"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"un certificado de usuario"</string>
@@ -866,53 +927,51 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nombre del servidor de VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Dominios de búsqueda de DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Dominios de búsqueda de DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"Se ha establecido %s"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s no establecido"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s no establecido (opcional)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Habilitar %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Desactivar %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s está activado"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s está desactivada"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> se ha establecido"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> no establecido"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> no establecido (opcional)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Activar<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Desactivar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> está habilitado"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> está inhabilitada"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Configuración de VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Establecer & administrar Redes privadas virtuales (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(sin cambios)"</string>
<string name="vpn_secret_not_set" msgid="1037792636371641845">"(no establecido)"</string>
- <string name="cstor_settings_category" msgid="2284299080682591107">"Almacenamiento de la credencial"</string>
- <string name="cstor_access_title" msgid="1739505390736236717">"Utilizar credenciales seguras"</string>
- <string name="cstor_access_summary" msgid="4512681868217546677">"Permitir a las aplicaciones acceder a certificados seguros y otras credenciales"</string>
- <string name="cstor_access_dialog_title" msgid="3024256293191879190">"Ingresar contraseña"</string>
- <string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Ingresar la contraseña de almacenamiento de la credencial."</string>
- <string name="cstor_set_passwd_title" msgid="6156763762703061470">"Establecer contraseña"</string>
- <string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Establecer o cambiar la contraseña de almacenamiento de la credencial"</string>
- <string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Establecer contraseña"</string>
- <string name="cstor_reset_title" msgid="6001600882136794382">"Borrar almacenamiento"</string>
- <string name="cstor_reset_summary" msgid="7509525030771504833">"Borrar el almacenamiento de la credencial de todo el contenido y restablecer su contraseña"</string>
- <string name="cstor_reset_hint" msgid="5331632794451859788">"¿Estás seguro de que deseas eliminar todas las credenciales y restablecer la contraseña de almacenamiento de la credencial?"</string>
- <string name="cstor_name_credential_dialog_title" msgid="1723509156126180662">"Nombre del certificado"</string>
- <string name="cstor_credential_name" msgid="2958936431813760259">"Nombre del certificado:"</string>
- <string name="cstor_credential_password" msgid="7187440553141199409">"Contraseña para extraer el certificado:"</string>
- <string name="cstor_credential_info" msgid="6097346149400207440">"Detalles del certificado:"</string>
- <string name="cstor_name_credential_hint" msgid="6889198058976515785">"El nombre puede contener sólo letras y números"</string>
- <string name="cstor_old_password" msgid="979282118063084561">"Contraseña actual:"</string>
- <string name="cstor_new_password" msgid="6218562692435670047">"Nueva contraseña:"</string>
- <string name="cstor_confirm_password" msgid="8996028123356342466">"Confirmar contraseña nueva:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Establecer una contraseña para el almacenamiento de la credencial."</string>
- <string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Establecer una contraseña para el almacenamiento de la credencial."</string>
- <string name="cstor_password_error" msgid="2917326097260402464">"Ingresa la contraseña correcta."</string>
- <string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Ingresa la contraseña correcta. Tienes una oportunidad más para ingresar la contraseña correcta antes de que el almacenamiento de la credencial se borre."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Ingresa la contraseña correcta. Tienes %d oportunidades más para ingresar la contraseña correcta antes de que el almacenamiento de la credencial se borre."</string>
- <string name="cstor_passwords_error" msgid="956773958408751155">"Las contraseñas no coinciden."</string>
- <string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Debes ingresar y confirmar una contraseña."</string>
- <string name="cstor_password_empty_error" msgid="7249632576906961482">"Ingresa la contraseña."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Vuelve a ingresar la contraseña. La contraseña debe tener 8 caracteres como mínimo y no debe contener espacios en blanco."</string>
- <string name="cstor_name_empty_error" msgid="7499971191993770322">"Ingresa un nombre."</string>
- <string name="cstor_name_char_error" msgid="8048089317968192516">"Ingresa un nombre que contenga sólo letras y números."</string>
- <string name="cstor_storage_error" msgid="7140697503172458161">"No es posible guardar el certificado. Haz clic en Aceptar para volver a intentarlo."</string>
- <string name="cstor_unable_to_save_cert" msgid="1631402544447196406">"No es posible guardar el certificado. El almacenamiento de la credencial no está activado o no se ha inicializado correctamente."</string>
- <string name="cstor_cert_not_saved" msgid="6318149789449538491">"El certificado no se ha guardado."</string>
- <string name="cstor_is_reset" msgid="449870501126790589">"El almacenamiento de la credencial se ha borrado."</string>
- <string name="cstor_is_enabled" msgid="4054049098081482785">"El almacenamiento de la credencial está activado."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"Se ha agregado %s."</string>
+ <string name="credentials_category" msgid="8536992056377271234">"Almacenamiento de la credencial"</string>
+ <string name="credentials_access" msgid="4843187230913860492">"Utilizar credenciales seguras"</string>
+ <string name="credentials_access_summary" msgid="319662078718574168">"Permitir a las aplicaciones acceder a certificados seguros y otras credenciales"</string>
+ <string name="credentials_unlock" msgid="1463040326264133844">"Ingresar contraseña"</string>
+ <string name="credentials_unlock_hint" msgid="594679530407918031">"Ingresar la contraseña de almacenamiento de la credencial"</string>
+ <string name="credentials_install_certificates" msgid="177337517568022236">"Instalar de la tarjeta SD"</string>
+ <string name="credentials_install_certificates_summary" msgid="7737001268684193093">"Instalar certificados encriptados de la tarjeta SD"</string>
+ <string name="credentials_set_password" msgid="9104473585811899989">"Establecer contraseña"</string>
+ <string name="credentials_set_password_summary" msgid="8287876917562085701">"Establecer o cambiar la contraseña de almacenamiento de la credencial"</string>
+ <string name="credentials_reset" msgid="9170150870552453457">"Borrar almacenamiento"</string>
+ <string name="credentials_reset_summary" msgid="1530388094693731636">"Borrar el almacenamiento de la credencial de todo el contenido y restablecer su contraseña"</string>
+ <string name="credentials_reset_hint" msgid="819990295796804516">"¿Estás seguro de que deseas eliminar todas las credenciales y restablecer la contraseña de almacenamiento de la credencial?"</string>
+ <string name="credentials_old_password" msgid="7553393815538684028">"Contraseña actual:"</string>
+ <string name="credentials_new_password" msgid="267487774686796938">"Nueva contraseña:"</string>
+ <string name="credentials_confirm_password" msgid="4732250000633424345">"Confirmar contraseña nueva:"</string>
+ <string name="credentials_first_time_hint" msgid="1567821077545346039">"Configurar una contraseña para el almacenamiento de la credencial (mínimo 8 caracteres)."</string>
+ <string name="credentials_wrong_password" msgid="7525192410790152041">"Ingresa la contraseña correcta."</string>
+ <string name="credentials_reset_warning" msgid="6392481296673345268">"Ingresa la contraseña correcta. Tienes una oportunidad más para ingresar la contraseña correcta antes de que el almacenamiento de la credencial se borre."</string>
+ <string name="credentials_reset_warning_plural" msgid="454828369803055270">"Ingresa la contraseña correcta. Tienes <xliff:g id="NUMBER">%1$d</xliff:g> oportunidades más para ingresar la contraseña correcta antes de que el almacenamiento de la credencial se borre."</string>
+ <string name="credentials_passwords_mismatch" msgid="5288565139590031733">"Las contraseñas no coinciden."</string>
+ <string name="credentials_passwords_empty" msgid="8647631321684363549">"Debes ingresar y confirmar una contraseña."</string>
+ <string name="credentials_password_empty" msgid="8292138152983330473">"Ingresa la contraseña."</string>
+ <string name="credentials_password_too_short" msgid="7502749986405522663">"La contraseña debe tener 8 caracteres como mínimo."</string>
+ <string name="credentials_erased" msgid="7700309135582200849">"El almacenamiento de la credencial se ha borrado."</string>
+ <string name="credentials_enabled" msgid="7588607413349978930">"El almacenamiento de la credencial está activado."</string>
+ <string name="credentials_disabled" msgid="7453188089059045380">"El almacenamiento de la credencial está inhabilitado."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tono de emergencia"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Establecer el comportamiento cuando se establece una llamada de emergencia"</string>
+ <string name="privacy_settings" msgid="9206631214140954954">"Privacidad"</string>
+ <string name="privacy_settings_title" msgid="1987089301293213705">"Configuración de privacidad"</string>
+ <string name="location_section_title" msgid="6072558684044939786">"Ubicación"</string>
+ <string name="settings_section_title" msgid="7413252428447723032">"Configuración"</string>
+ <string name="personal_data_section_title" msgid="7815209034443782061">"Datos personales"</string>
+ <string name="backup_settings_title" msgid="2968262658155327829">"Hacer una copia de seguridad de mi configuración"</string>
+ <string name="backup_erase_dialog_title" msgid="6028429904055779443">"Copia de seguridad de configuración"</string>
+ <string name="backup_erase_dialog_message" msgid="9096433810456900531">"¿Estás seguro de que deseas dejar de hacer copias de seguridad de tu configuración y borrar todas las copias de los servidores de Google?"</string>
</resources>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index d49a5ea..6e385a1 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacífico"</item>
<item msgid="8392017019801393511">"Todas"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"No aparecen animaciones de ventana."</item>
+ <item msgid="4460915688877708508">"Aparecen algunas animaciones de ventana."</item>
+ <item msgid="488968798204105119">"Aparecen todas las animaciones de ventana."</item>
+ <item msgid="5835565817235114270">"Aparecen animaciones de ventana más lentas."</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 segundos"</item>
<item msgid="8881760709354815449">"30 segundos"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiano"</item>
<item msgid="5811378076054402537">"Español"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automática"</item>
- <item msgid="5434666299123318296">"Ninguna"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Ninguna"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automáticamente"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 1cba638..2ba7a4c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Solicitud de sincronización de Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Solicitud de sincronización"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Seleccionar dispositivo para sincronización "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Selector del dispositivo Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Configuración de fecha y hora"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 p.m."</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Inhabilitar todas las conexiones inalámbricas"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Inhabilitando conexiones inalámbricas..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Habilitando conexiones inalámbricas..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Conexiones inalámbricas"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Conexiones inalámbricas y redes"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Administrar Wi-Fi, Bluetooth, modo avión, redes móviles y VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Itinerancia de datos"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Establecer conexión con servicios de datos en itinerancia"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Seleccionar formato de fecha"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Ordenar alfabéticamente"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Ordenar por zona horaria"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Seguridad y ubicación"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Ubicación y seguridad"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Establecer Mi ubicación, bloqueo de pantalla, bloqueo de tarjeta SIM y bloqueo de almacenamiento de credenciales"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Establecer ubicación, bloqueo de pantalla y bloqueo de almacenamiento de credenciales"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Contraseñas"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Activar Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Ajustes de Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Administrar conexiones, establecer el nombre del dispositivo y la visibilidad"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Solicitud de sincronización de Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Información de dispositivo Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Introduce el PIN para la sincronización."\n"(Prueba con 0000 ó 1234)."</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Para realizar la sincronización con \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", confirma que muestre la clave de acceso <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Sincronizar"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"No sincronizar"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Atención"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Se ha producido un problema al realizar la sincronización con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Se ha producido un problema al realizar la sincronización con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, porque el PIN introducido es incorrecto."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"No se puede establecer comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Sincronización rechazada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Se ha producido un problema al establecer conexión con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Establecer conexión con…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Multimedia"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Teléfono"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transferencia"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Conectado al audio del medio"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Conectado al audio del teléfono"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Conectado a audio de medio y del teléfono"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Perfiles"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado al audio del medio"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado al audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Con conexión al servidor de transferencia de archivos"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Sin conexión al servidor de transferencia de archivos"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para audio de medio"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para audio del teléfono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Uso de la transferencia de archivos"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activar Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Seguridad"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Abierta"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Desconocida"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"red abierta"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"protegida con WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"protegida con WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"protegida con WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"protegida con WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"protegida con IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Dirección IP"</string>
<string name="signal" msgid="1947969631626413228">"Intensidad de la señal"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Activando..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Identidad anónima"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificado de cliente"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certificado de autenticación"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Contraseña de clave privada"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Contraseña de red inalámbrica"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Clave hex. WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Mostrar contraseña"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Desconectada"</string>
<string name="status_failed" msgid="610462050405904601">"Con error"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Sonido y pantalla"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Configuración de sonido"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Establecer tonos, notificaciones, brillo de la pantalla"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Modo silencio"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notificaciones tarjeta SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Reproducir sonido para notificaciones de la tarjeta SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproducir sonido para notificaciones de la tarjeta SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Sincronización de datos"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Seleccionar las aplicaciones que están sincronizadas"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Cuentas y sincronización"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Añadir o eliminar cuentas y modificar la configuración de las cuentas"</string>
<string name="search_settings" msgid="1910951467596035063">"Buscar"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Administrar historial y configuración de búsqueda"</string>
<string name="display_settings" msgid="3912042046350078328">"Configuración de pantalla"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ajustar el brillo de la pantalla"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Tiempo espera pantalla"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Ajustar el tiempo de retraso antes de que la pantalla se apague automáticamente"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Configuración de bloqueo de tarjeta SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Bloqueo de tarjeta SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Bloqueo de tarjeta SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
<string name="device_status" msgid="607405385799807324">"Estado"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Número de teléfono, señal, etc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Almacenamiento"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Desactivar tarjeta SD, ver almacenamiento disponible."</string>
<string name="status_number" msgid="5123197324870153205">"Mi número de teléfono"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Habilitar satélites GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Preciso en el nivel de calle (anula la selección para ahorrar batería)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localizar en nivel de calle (requiere más batería además de la vista aérea)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Habilitar GPS asistido"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Utilizar el servidor para asistir al GPS (anular la selección para reducir el uso de la red)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Utilizar el servidor para asistir al GPS (seleccionar para mejorar el rendimiento del GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Compartir con Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Permitir que Google utilice tu ubicación para mejorar las búsquedas y otros servicios"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Permitir que Google utilice tu ubicación para mejorar los resultados de búsqueda y otros servicios"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"¿Quieres que Google pueda utilizar tu ubicación para mejorar los resultados de búsqueda y otros servicios?"</string>
<string name="agree" msgid="6288718671527758326">"Acepto"</string>
<string name="disagree" msgid="6221069272309799230">"No acepto"</string>
<string name="about_settings" msgid="1743378368185371685">"Acerca del teléfono"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Esta aplicación puede acceder a los siguientes elementos del teléfono:"</string>
<string name="computing_size" msgid="1599186977475211186">"Calculando…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"No se ha podido calcular el tamaño del paquete."</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"No tienes instalada ninguna aplicación externa."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"No tienes instalada ninguna aplicación externa."</string>
<string name="version_text" msgid="9189073826278676425">"versión <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Idioma y país"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Servicios en ejecución"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver y controlar los servicios en ejecución"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Reiniciando"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"No hay servicios en ejecución."</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"¿Quieres detener el servicio?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"El servidor no se ejecutará hasta que la aplicación lo vuelva a iniciar, lo que puede provocar consecuencias no deseadas."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Detener"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: seleccionar para administrar"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Idioma y teclado"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Configuración local, opciones de autocorrección e introducción de texto"</string>
<string name="language_category" msgid="3391756582724541530">"Configuración local"</string>
<string name="text_category" msgid="6342540511465136739">"Configuración de texto"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"La depuración USB sólo está indicada para actividades de desarrollo. Se puede utilizar para intercambiar datos entre el equipo y el dispositivo, para instalar aplicaciones en el dispositivo sin recibir notificaciones y para leer datos de registro."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Seleccionar gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Seleccionar widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detalles del ID único %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detalles del ID único <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"ID único <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Detalles de uso de red para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recibidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplicación"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Número"</string>
<string name="usage_time_label" msgid="295954901452833058">"Tiempo de uso"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Accesibilidad"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Administrar opciones de accesibilidad"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Accesibilidad"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Servicios de accesibilidad"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Tiempo de actividad del dispositivo"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Tiempo de conexión WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Tiempo de conexión WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Detalles de uso de la batería"</string>
<string name="details_subtitle" msgid="32593908269911734">"Detalles de uso"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Ajustar uso de la batería"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batería utilizada por la conexión Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Desactiva la conexión Wi-Fi cuando no la estés utilizando o cuando no esté disponible."</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batería utilizada por Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Desactiva el Bluetooth cuando no lo estés utilizando."</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desactiva el Bluetooth cuando no lo estés utilizando."</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Intenta conectarte a un dispositivo Bluetooth diferente."</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batería utilizada por aplicaciones en ejecución"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Detener o desinstalar la aplicación"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Actualizar"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Sistema operativo de Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Servidor multimedia"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Síntesis de voz"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Síntesis de voz"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Establecer opciones de síntesis de voz"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Controles del sintetizador de voz"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Utilizar siempre mi configuración"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Este es un ejemplo de síntesis de voz."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Tu configuración ha cambiado. Este es un ejemplo de cómo suena."</string>
<string name="gadget_title" msgid="7455548605888590466">"Control de energía"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualización de la configuración de la conexión Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualización de la configuración de la conexión Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configuración de red VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Establecer conexión con %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Establecer conexión con <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nombre de usuario:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Contraseña:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"un nombre de usuario"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Desconectar de la red"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Editar red"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Eliminar red"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Debes introducir %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Debes seleccionar %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"El nombre de la red VPN \"%s\" ya existe. Utiliza otro."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Debes introducir <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Debes seleccionar <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"El nombre de red VPN \"<xliff:g id="NAME">%s</xliff:g>\" ya existe. Utiliza otro."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"¿Estás seguro de que quieres eliminar esta red VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"¿Estás seguro de que no quieres crear este perfil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"¿Estás seguro de que quieres descartar los cambios realizados en este perfil?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Faltan uno o varios secretos en la configuración de esta VPN. ¿Deseas comprobar tu configuración secreta?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"El nombre de usuario o la contraseña introducidos no son correctos. ¿Quieres intentarlo de nuevo?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"El servidor se ha bloqueado. Es posible que la contraseña o el nombre de usuario introducidos sean incorrectos. ¿Deseas volver a intentarlo?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"El servidor se ha bloqueado. Es posible que tengas activado un cortafuegos que impide la conexión al servidor. ¿Quieres volver a intentarlo?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Error de negociación con el servidor. Es posible que el servidor no acepte tu opción de encriptación. ¿Quieres comprobar tus valores de configuración de la encriptación?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Añadir VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Añadir VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Añadir VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Detalles de %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Añadir red VPN \"<xliff:g id="NAME">%s</xliff:g>\""</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Detalles de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"Redes VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Estableciendo conexión..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Desconectando..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Establecer conexión con red"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nombre de VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"un nombre de VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s añadido"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Los cambios se han aplicado en %s."</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"Se ha añadido \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Los cambios se han aplicado a \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Establecer certificado de usuario"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificado de usuario"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"un certificado de usuario"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nombre de servidor VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Dominios de búsqueda DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Dominios de búsqueda de DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s se ha establecido."</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s no se ha definido."</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"No se ha establecido %s (opcional)."</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Habilitar %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Inhabilitar %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s se ha habilitado."</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s se ha inhabilitado."</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"Se ha establecido el valor \"<xliff:g id="VALUE">%s</xliff:g>\"."</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"No se ha establecido el valor \"<xliff:g id="VALUE">%s</xliff:g>\"."</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"No se ha establecido el valor \"<xliff:g id="VALUE">%s</xliff:g>\" (opcional)."</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Habilitar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Inhabilitar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"Se ha habilitado <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"Se ha inhabilitado <xliff:g id="OPTION">%s</xliff:g>."</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Configuración de red VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Configurar y administrar redes privadas virtuales (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(sin modificar)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Permitir que las aplicaciones accedan a los certificados seguros y a otras credenciales"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Introducir contraseña"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Introduce la contraseña de almacenamiento de credenciales."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Establecer contraseña"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Establecer o cambiar la contraseña de almacenamiento de credenciales"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Establecer contraseña"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Contraseña actual:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Contraseña nueva:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Confirmar contraseña nueva:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Establece una contraseña para el almacenamiento de credenciales."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Establece una contraseña para el almacenamiento de credenciales."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Introduce la contraseña correcta."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Introduce la contraseña correcta. Dispones de un intento más para introducir la contraseña antes de que se borre el almacenamiento de credenciales."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Introduce la contraseña correcta. Dispones de %d intentos más para introducir la contraseña antes de que se borre el almacenamiento de credenciales."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Introduce la contraseña correcta. Dispones de <xliff:g id="NUMBER">%d</xliff:g> intentos más para introducir la contraseña antes de que se borre el almacenamiento de credenciales."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Las contraseñas no coinciden."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Debes introducir una contraseña y confirmarla."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Introduce la contraseña."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Introduce la contraseña de nuevo. La contraseña debe tener al menos 8 caracteres y no debe contener espacios."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Introduce un nombre."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Introduce un nombre que contenga sólo letras y números."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"No es posible guardar el certificado. Haz clic en \"Aceptar\" para intentarlo de nuevo."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"No se ha guardado el certificado."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Se ha borrado el almacenamiento de credenciales."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"El almacenamiento de credenciales está habilitado."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"Se ha añadido %s."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"Se ha añadido <xliff:g id="CREDENTIAL">%s</xliff:g>."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tono de emergencia"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Establecer comportamiento al realizar una llamada de emergencia"</string>
</resources>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index 7f99702..509c919 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacifique"</item>
<item msgid="8392017019801393511">"Tous"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Aucune animation n\'est affichée."</item>
+ <item msgid="4460915688877708508">"Certaines animations sont affichées."</item>
+ <item msgid="488968798204105119">"Toutes les animations sont affichées."</item>
+ <item msgid="5835565817235114270">"Des animations plus lentes sont affichées."</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 secondes"</item>
<item msgid="8881760709354815449">"30 secondes"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italien"</item>
<item msgid="5811378076054402537">"Espagnol"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatique"</item>
- <item msgid="5434666299123318296">"Aucune"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA-PSK"</item>
- <item msgid="1977424472734732392">"WPA2-PSK"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Aucun"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA-PSK"</item>
- <item msgid="8928468573279595315">"WPA2-PSK"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatique"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 016298a..70949ed 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Demande d\'association Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Demande d\'association"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Sélectionner pour associer à "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Sélecteur de périphérique Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Paramètres d\'heure et de date"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"13:00 h"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Désactiver toutes les connexions sans fil"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Désactivation des connexions sans fil…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Activation des connexions sans fil…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Connexions sans fil"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Sans fil et réseaux"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Configurer le Wi-Fi, le mode Bluetooth, le mode Avion, les réseaux mobiles et le VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Itinérance des données"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Se connecter aux services de données lors de l\'itinérance"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Sélectionner format de date"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Trier par ordre alphabétique"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Trier par fuseau horaire"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Sécurité et localisation"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Lieu et sécurité"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Définir les paramètres de l\'option Ma position et de verrouillage"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Définir Ma position, le déverrouillage de l\'écran et le blocage des informations d\'identification stockées"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Mots de passe"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Activer Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Paramètres Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Paramètres Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Gérer les connexions, configurer le nom et l\'identification de l\'appareil"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Demande d\'association Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Informations sur l\'appareil Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Saisissez le code PIN pour associer l\'appareil."\n"(Essayez avec 0000 ou 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Avant de se connecter à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, vérifier qu\'il affiche la clé d\'accès : <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Se connecter"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Ne pas se connecter"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Attention"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Un problème est survenu lors de l\'association à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Un problème est survenu lors de l\'association à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, car le PIN saisi est incorrect."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Un problème est survenu lors de la connexion à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Se connecter à…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Multimédia"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Téléphone"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transfert"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Connecté aux paramètres audio du média"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Connecté aux paramètres audio du téléphone"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Connecté aux paramètres audio du téléphone et du média"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profils"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Connecté aux paramètres audio du média"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Connecté aux paramètres audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Connexion au serveur de transfert de fichiers"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Connexion au serveur de transfert de fichiers non établie"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utiliser pour les paramètres audio du média"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utiliser pour les paramètres audio du téléphone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utiliser pour le transfert de fichiers"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activer le Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Sécurité"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Ouvrir"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Inconnu"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"réseau ouvert"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"sécurisé par clé WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"sécurisé par WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"sécurisé par WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"sécurisé par WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"sécurisé par IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Adresse IP"</string>
<string name="signal" msgid="1947969631626413228">"Intensité du signal"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Activation…"</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonyme"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificat client"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certificat CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Mot de passe de clé privée"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Mot de passe sans fil"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Touche hex WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Afficher le mot de passe"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Déconnecté"</string>
<string name="status_failed" msgid="610462050405904601">"Échec"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Sons et affichage"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Paramètres sonores"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Configurer les sonneries, les notifications et la luminosité"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Mode silencieux"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notifications carte SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Émettre un son pour les notifications de la carte SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Émettre un son pour les notifications de la carte SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Synchro. des données"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Sélectionner les applications à synchroniser"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Comptes et synchronisation"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Ajouter ou supprimer des comptes et modifier leurs paramètres"</string>
<string name="search_settings" msgid="1910951467596035063">"Recherche"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Configurer les paramètres et l\'historique de recherche"</string>
<string name="display_settings" msgid="3912042046350078328">"Paramètres d\'affichage"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Régler la luminosité de l\'écran"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Mise en veille de l\'écran"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Définir le délai avant la mise hors tension automatique de l\'écran"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Paramètres de blocage carte SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Configurer blocage SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Blocage de la carte SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"État"</string>
<string name="device_status" msgid="607405385799807324">"État"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Numéro de téléphone, signal, etc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Carte SD et mémoire"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Retirer la carte SD, afficher la mémoire disponible"</string>
<string name="status_number" msgid="5123197324870153205">"Mon numéro de téléphone"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Activer les satellites GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Localisation précise au niveau de la rue lors du positionnement géographique (désélectionner pour économiser la batterie)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localiser au niveau rue (requiert + de batterie et une vue dégagée)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Activer le GPS assisté"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Utiliser le serveur pour assister le GPS (réduit l\'utilisation du réseau)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Utiliser le serveur pour assister le GPS (améliore les performances du GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Partager avec Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Autoriser Google à utiliser vos informations de localisation pour améliorer l\'efficacité des recherches et des autres services Google"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Autoriser Google à utiliser vos informations de localisation pour améliorer l\'efficacité des recherches et des autres services Google"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Souhaitez-vous autoriser Google à utiliser vos informations de localisation pour améliorer l\'efficacité des recherches et des autres services ?"</string>
<string name="agree" msgid="6288718671527758326">"Accepter"</string>
<string name="disagree" msgid="6221069272309799230">"Refuser"</string>
<string name="about_settings" msgid="1743378368185371685">"À propos du téléphone"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Cette application peut accéder aux applications suivantes de votre téléphone :"</string>
<string name="computing_size" msgid="1599186977475211186">"Traitement..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Impossible de calculer la taille du paquet."</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Aucune application tierce n\'est installée sur votre téléphone."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Aucune application tierce n\'est installée."</string>
<string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Par. régionaux et texte"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Services en cours d\'exécution"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Afficher et contrôler les services en cours d\'exécution"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Redémarrage en cours"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Aucun service en cours d\'exécution"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Arrêter le service ?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Le service ne sera plus exécuté tant qu\'il ne sera pas relancé par l\'application. Cette configuration peut avoir des conséquences gênantes."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Arrêter"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuler"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g> : sélectionnez cet élément pour activer la gestion."</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Langue et clavier"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Définir la langue et la région, la saisie de texte et la correction automatique"</string>
<string name="language_category" msgid="3391756582724541530">"Paramètres régionaux"</string>
<string name="text_category" msgid="6342540511465136739">"Paramètres du texte"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Le débogage USB est conçu à des fins de développement uniquement. Il peut servir à copier des données entre votre ordinateur et votre appareil, à installer des applications sur votre appareil sans notification et à lire les données de journal."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Choisir un gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Choisir un widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Détails de l\'UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Détails de l\'UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Données d\'utilisation du réseau pour <xliff:g id="APP_NAME">%1$s</xliff:g> :"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Octets reçus : <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Application"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Nombre"</string>
<string name="usage_time_label" msgid="295954901452833058">"Temps d\'utilisation"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Accessibilité"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Gérer les options d\'accessibilité"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Accessibilité"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Services d\'accessibilité"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Durée de fonctionnement de l\'appareil"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Temps de fonctionnement du Wi-Fi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Temps de fonctionnement du Wi-Fi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g> %%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Infos détaillées sur l\'utilisation de la batterie"</string>
<string name="details_subtitle" msgid="32593908269911734">"Détails d\'utilisation"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Ajuster la consommation"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batterie utilisée par le Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Désactiver la fonctionnalité Wi-Fi lorsque vous ne l\'utilisez pas ou lorsqu\'elle n\'est pas disponible"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batterie utilisée par Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Désactiver Bluetooth lorsque vous ne l\'utilisez pas"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Désactivez Bluetooth lorsque vous ne l\'utilisez pas."</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Essayez·de·vous·connecter·à·un·autre·appareil·Bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batterie utilisée par les applications en cours d\'exécution"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Arrêter ou désinstaller l\'application"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Actualiser"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Système d\'exploitation Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Serveur multimédia"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Synthèse vocale"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"SMS vocaux"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Définir les options de synthèse vocale"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Contrôles du synthétiseur vocal"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Toujours utiliser mes paramètres"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Voici un échantillon de synthèse vocale."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Vos paramètres ont été modifiés. Voici un échantillon illustrant les nouveaux paramètres."</string>
<string name="gadget_title" msgid="7455548605888590466">"Contrôle de l\'alimentation"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Mise à jour des paramètres Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Mise à jour des paramètres Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Paramètres de VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Se connecter à %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Connexion à \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nom d\'utilisateur :"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Mot de passe :"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"un nom d\'utilisateur"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Se déconnecter du réseau"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Modifier le réseau"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Supprimer un réseau"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Vous devez entrer %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Vous devez sélectionner %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Le nom de VPN \"%s\" existe déjà. Veuillez choisir un autre nom."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Vous devez entrer \"<xliff:g id="CODE">%s</xliff:g>\"."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Vous devez sélectionner \"<xliff:g id="OPTION">%s</xliff:g>\"."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Le nom de VPN \"<xliff:g id="NAME">%s</xliff:g>\" existe déjà. Veuillez choisir un autre nom."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Voulez-vous vraiment supprimer ce VPN ?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Êtes-vous sûr de ne pas vouloir créer ce profil ?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Voulez-vous vraiment annuler les modifications apportées à ce profil ?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Un ou plusieurs secrets sont manquants dans cette configuration VPN. Voulez-vous contrôler les paramètres de vos secrets ?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Le nom d\'utilisateur ou le mot de passe entré est incorrect. Voulez-vous réessayer ?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Le serveur a raccroché. Le nom d\'utilisateur et le mot de passe que vous avez saisis sont peut-être incorrects. Voulez-vous réessayer ?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Le serveur a raccroché. Il est possible que vous soyez protégé par un pare-feu qui empêche toute connexion au serveur. Souhaitez-vous réessayer ?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Échec de la négociation avec le serveur. Le serveur n\'est peut-être pas conforme au paramètre de cryptage. Voulez-vous vérifier le paramètre de cryptage ?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Ajouter un VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Ajouter un VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Ajouter un VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Détails de %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Ajouter le VPN \"<xliff:g id="NAME">%s</xliff:g>\""</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Détails du profil \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Connexion en cours…"</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Déconnexion en cours…"</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Se connecter au réseau"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nom du VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"un nom de VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"Ajout de %s"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Modifications appliquées à %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" a été ajouté."</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Modifications appliquées à \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Définir le certificat utilisateur"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificat utilisateur"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"un certificat utilisateur"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nom du serveur VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Domaines de recherche DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Domaines de recherche DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s défini"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s non défini"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s non défini (facultatif)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Activer %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Désactiver %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s activé"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s désactivé"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"Valeur \"<xliff:g id="VALUE">%s</xliff:g>\" définie"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"Valeur \"<xliff:g id="VALUE">%s</xliff:g>\" non définie"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"Valeur \"<xliff:g id="VALUE">%s</xliff:g>\" non définie (facultatif)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Activer \"<xliff:g id="OPTION">%s</xliff:g>\""</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Désactiver \"<xliff:g id="OPTION">%s</xliff:g>\""</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"L\'option \"<xliff:g id="OPTION">%s</xliff:g>\" est activée."</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"L\'option \"<xliff:g id="OPTION">%s</xliff:g>\" est désactivée."</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Paramètres de VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Configurer et gérer les réseaux privés virtuels (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(aucune modification)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Autoriser l\'accès des applications aux certificats sécurisés et identifiants"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Saisir le mot de passe"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Saisissez le mot de passe du stockage des identifiants."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Définir le mot de passe"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Définir/modifier le mot de passe du stockage des identifiants"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Définir le mot de passe"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Mot de passe actuel :"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nouveau mot de passe :"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Confirmer le nouveau mot de passe :"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Définissez le mot de passe du stockage des identifiants."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Définissez le mot de passe du stockage des identifiants."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Veuillez entrer le mot de passe approprié."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Entrez le mot de passe approprié. Il vous reste un essai avant que le stockage des identifiants ne soit effacé."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Entrez le mot de passe approprié. Il vous reste %d essais avant que le stockage d\'identifiants ne soit effacé."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Entrez le mot de passe approprié. Il vous reste <xliff:g id="NUMBER">%d</xliff:g> essais avant que les identifiants stockés ne soient effacés."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Les mots de passe ne concordent pas."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Vous devez entrer un mot de passe et le confirmer."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Veuillez entrer le mot de passe."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Veuillez ressaisir le mot de passe. Il doit contenir au moins 8 caractères sans espace."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Veuillez entrer un nom."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Entrez un nom ne contenant que des lettres et des chiffres."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Impossible d\'enregistrer le certificat. Cliquez sur OK pour réessayer."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Le certificat n\'est pas enregistré."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Les informations d\'identification stockées sont effacées."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Stockage des identifiants activé."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s ajouté"</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"Les informations \"<xliff:g id="CREDENTIAL">%s</xliff:g>\" ont été ajoutées."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Sonnerie d\'urgence"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Définir le comportement en cas d\'appel d\'urgence"</string>
</resources>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index 7fadeae..f3a936c 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacifico"</item>
<item msgid="8392017019801393511">"Tutte"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Non viene visualizzata alcuna animazione delle finestre"</item>
+ <item msgid="4460915688877708508">"Vengono visualizzate alcune animazioni delle finestre"</item>
+ <item msgid="488968798204105119">"Vengono visualizzate tutte le animazioni delle finestre"</item>
+ <item msgid="5835565817235114270">"Vengono visualizzate le animazioni delle finestre più lente"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 secondi"</item>
<item msgid="8881760709354815449">"30 secondi"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiano"</item>
<item msgid="5811378076054402537">"Spagnolo"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatico"</item>
- <item msgid="5434666299123318296">"Nessuna"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Nessuna"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatico"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index e5a743d..96d3e7a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Richiesta accoppiamento Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Richiesta accoppiamento"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Seleziona per accoppiare "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Selettore dispositivo Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Impostazioni data e ora"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Disattiva tutte le connessioni wireless"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Disattivazione connessioni wireless..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Attivazione connessioni wireless..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Controlli wireless"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Wireless e reti"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Gestisci Wi-Fi, Bluetooth, modalità aereo, reti mobili e VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Roaming dati"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Connessione a servizi di dati in roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Seleziona formato data"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Ordine alfabetico"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Ordina per fuso orario"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Protezione e posizione"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Posizione e protezione"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Imposta La mia posizione, sblocco schermo, blocco SIM, blocco cred."</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Imposta La mia posizione, sblocco schermo, blocco archivio credenziali"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Password"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Attiva Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Impostazioni Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Impostazioni Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Gestisci le connessioni, imposta il nome e la rilevabilità del dispositivo"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Richiesta accoppiamento Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Info dispositivo Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Digita il PIN per l\'accoppiamento."\n"Prova a usare 0000 o 1234."</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Per eseguire l\'accoppiamento con \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", conferma che è visualizzata la passkey: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Accoppia"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Non accoppiare"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Attenzione"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Errore durante l\'accoppiamento con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Errore durante l\'accoppiamento con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Il PIN digitato è errato."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Impossibile stabilire la comunicazione con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Accoppiamento rifiutato da <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Errore durante la connessione a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Connessione a…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Media"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefono"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Trasferisci"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Collegato ad audio media"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Collegato ad audio telefono"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Collegato ad audio telefono e media"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profili"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Collegato ad audio media"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Collegato ad audio telefono"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Collegato al server di trasferimento file"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Non collegato al server di trasferimento file"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usa per audio media"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usa per audio telefono"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usa per trasferimento file"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Attiva Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Protezione"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Apri"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Sconosciuta"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"rete aperta"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"protetta con WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"protetta con WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"protetta con WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"protetta con WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"protetta con IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Indirizzo IP"</string>
<string name="signal" msgid="1947969631626413228">"Intensità segnale"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Attivazione..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Identità anonima"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificato client"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certificato CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Password chiave privata"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Password wireless"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Chiave esadecimale WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Mostra password."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Disconnesso"</string>
<string name="status_failed" msgid="610462050405904601">"Non riuscita"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Audio e display"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Impostazioni audio"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Imposta suonerie, notifiche e luminosità dello schermo"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Modalità silenziosa"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notifiche scheda SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Riproduci suono per notifiche scheda SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Riproduci suono per notifiche scheda SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Sincronizzazione dati"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Seleziona le applicazioni da sincronizzare"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Account e sincronizzazione"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Aggiungi o rimuovi account e modifica impostazioni account"</string>
<string name="search_settings" msgid="1910951467596035063">"Ricerca"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Gestisci le impostazioni e la cronologia delle ricerche"</string>
<string name="display_settings" msgid="3912042046350078328">"Impostazioni display"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Regola la luminosità dello schermo"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Timeout schermo"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Regola il tempo che deve trascorrere prima che lo schermo si spenga automaticamente"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Impostazioni blocco SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Impostazioni blocco SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Blocco della SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Stato"</string>
<string name="device_status" msgid="607405385799807324">"Stato"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Numero di telefono, segnale ecc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Scheda SD e memoria"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Smonta la scheda SD, visualizza spazio di archiviazione disponibile"</string>
<string name="status_number" msgid="5123197324870153205">"Il mio numero di telefono"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Attiva satelliti GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Accuratezza a livello stradale (deseleziona per risparmiare batteria)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localizza a livello stradale (richiede più batteria e la vista del cielo)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Attiva GPS assistito"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Utilizza il server per il GPS assistito (deseleziona per ridurre l\'utilizzo della rete)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Utilizza il server per il GPS assistito (seleziona per migliorare le prestazioni GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Condividi con Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Consenti utilizzo posizione per migliorare ricerca e altri servizi"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Consenti a Google di utilizzare la posizione per migliorare i tuoi risultati di ricerca e altri servizi"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Consentire a Google di utilizzare la posizione per migliorare i risultati di ricerca e altri servizi?"</string>
<string name="agree" msgid="6288718671527758326">"Accetto"</string>
<string name="disagree" msgid="6221069272309799230">"Non accetto"</string>
<string name="about_settings" msgid="1743378368185371685">"Info sul telefono"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Contenuti a cui può accedere l\'applicazione sul telefono:"</string>
<string name="computing_size" msgid="1599186977475211186">"Elaborazione..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Impossibile stabilire le dimensioni del pacchetto"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Nessuna applicazione di terze parti installata."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Nessuna applicazione di terze parti installata."</string>
<string name="version_text" msgid="9189073826278676425">"versione <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Lingua e testo"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Servizi in esecuzione"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Visualizza e controlla i servizi attualmente in esecuzione"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"In fase di riavvio"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Nessun servizio in esecuzione"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Interrompere il servizio?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Il servizio non verrà più eseguito fino al riavvio da parte della relativa applicazione. Questa operazione potrebbe avere conseguenze indesiderate."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Interrompi"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Annulla"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: seleziona per la gestione"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Lingua e tastiera"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Impostazioni internazionali (lingua e regione), di inserimento e correzione automatica del testo"</string>
<string name="language_category" msgid="3391756582724541530">"Impostazioni lingua"</string>
<string name="text_category" msgid="6342540511465136739">"Impostazioni testo"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Il debug USB è solo a scopo di sviluppo. Può servire per copiare dati tra il computer e il dispositivo, per installare applicazioni sul tuo dispositivo senza notifica e per leggere i dati dei log."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Scegli gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Scegli widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Dettagli per UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Dettagli per UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Dettagli di utilizzo della rete per <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Byte ricevuti: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Applicazione"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Conteggio"</string>
<string name="usage_time_label" msgid="295954901452833058">"Tempo di utilizzo"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Accesso facilitato"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Gestisci opzioni di accesso facilitato"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Accesso facilitato"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Servizi di accesso facilitato"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Tempo di attività dispositivo"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Tempo accensione Wi-Fi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Tempo accensione Wi-Fi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Dettagli utilizzo batteria"</string>
<string name="details_subtitle" msgid="32593908269911734">"Dettagli di utilizzo"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Regola consumo alimentazione"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batteria utilizzata da Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Disattiva Wi-Fi quando non è in uso o dove non è disponibile"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteria utilizzata da Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Disattiva Bluetooth quando non è in uso"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Disattiva Bluetooth quando non è in uso"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prova a connetterti a un altro dispositivo Bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batteria utilizzata dalle applicazioni in esecuzione"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Interrompi o disinstalla l\'applicazione"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Aggiorna"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Sistema operativo Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"MediaServer"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Sintesi vocale"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Sintesi vocale"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Imposta opzioni testo-voce"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Controlli sintetizzatore vocale"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Usa sempre le mie impostazioni"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Questo è un esempio di sintesi vocale."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Le tue impostazioni sono cambiate. Ecco un esempio di come possono suonare."</string>
<string name="gadget_title" msgid="7455548605888590466">"Controllo risparmio energia"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aggiornamento impostazione Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aggiornamento impostazione Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Impostazioni VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Connetti a %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Connessione a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nome utente:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Password:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"un nome utente"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Disconnetti dalla rete"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Modifica rete"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Elimina rete"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Inserisci %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Seleziona %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Il nome VPN \"%s\" esiste già. Trova un altro nome."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Devi inserire <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Seleziona <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Il nome VPN \"<xliff:g id="NAME">%s</xliff:g>\" esiste già. Trova un altro nome."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Eliminare questa VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Non creare questo profilo?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Ignorare le modifiche apportate a questo profilo?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"In questa configurazione VPN mancano uno o più segreti. Controllare la relativa impostazione?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"La password o il nome utente inserito non è corretto. Riprovare?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Server bloccato. La password o il nome utente inserito potrebbe non essere corretto. Riprovare?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Server bloccato. È possibile che un firewall ti impedisca di collegarti al server. Riprovare?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Negoziazione con il server non riuscita. È possibile che il server non accetti la tua opzione di crittografia. Controllare l\'impostazione di crittografia?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Aggiungi VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Aggiungi VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Aggiungi VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Dettagli di %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Aggiungi VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Dettagli <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Connessione..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Disconnessione..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Connetti alla rete"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nome VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"un nome VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s è stato aggiunto"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Le modifiche vengono apportate a %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" è stato aggiunto"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Le modifiche vengono apportate a \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Imposta certificato utente"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificato utente"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"un certificato utente"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nome server VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Domini di ricerca DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Domini di ricerca DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s impostato"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s non impostato"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s non impostato (facoltativo)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Attiva %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Disattiva %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s è attivo"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s non è attivo"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> impostato"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> non impostato"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> non impostato (facoltativo)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Attiva <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Disattiva <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> è attiva"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> non è attiva"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Impostazioni VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Configura e gestisci le reti private virtuali (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(invariato)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Consenti accesso applicazioni a certificati protezione e altre credenziali"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Inserisci password"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Inserisci la password dell\'archivio di credenziali."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Imposta password"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Imposta o modifica la password dell\'archivio di credenziali"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Imposta password"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Password attuale:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nuova password:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Conferma nuova password:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Imposta una password per l\'archivio di credenziali."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Imposta una password per l\'archivio di credenziali."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Inserisci la password corretta."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Inserisci la password corretta. Hai a disposizione un altro tentativo per inserirla, dopodiché l\'archivio di credenziali verrà cancellato."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Inserisci la password corretta. Hai a disposizione altri %d tentativi per inserirla, dopodiché l\'archivio di credenziali verrà cancellato."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Inserisci la password corretta. Hai a disposizione altri <xliff:g id="NUMBER">%d</xliff:g> tentativi per inserirla, dopodiché l\'archivio di credenziali verrà cancellato."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Le password non corrispondono."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Inserisci una password e confermala."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Inserisci la password."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Inserisci di nuovo la password. La password deve essere formata da almeno 8 caratteri e non deve contenere spazi."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Inserisci un nome."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Inserisci un nome contenente soltanto lettere e numeri."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Impossibile salvare il certificato. Fai clic su OK per riprovare."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Il certificato non è stato salvato."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"L\'archivio di credenziali è cancellato."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"L\'archivio di credenziali è attivo."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s è stato aggiunto."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> è stata aggiunta."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tono chiamate di emergenza"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Imposta il comportamento in caso di chiamata di emergenza"</string>
</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index 8db484f..4581d85 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"太平洋"</item>
<item msgid="8392017019801393511">"すべて"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"ウィンドウアニメーションを表示しない"</item>
+ <item msgid="4460915688877708508">"ウィンドウアニメーションの一部を表示"</item>
+ <item msgid="488968798204105119">"ウィンドウアニメーションをすべて表示"</item>
+ <item msgid="5835565817235114270">"低速のウィンドウアニメーションを表示"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15秒"</item>
<item msgid="8881760709354815449">"30秒"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"イタリア語"</item>
<item msgid="5811378076054402537">"スペイン語"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"自動"</item>
- <item msgid="5434666299123318296">"なし"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"なし"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"自動"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1baf6bc..720b02f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetoothペア設定リクエスト"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"ペア設定リクエスト"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"ペアとして設定 "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth端末の選択"</string>
<string name="date_and_time" msgid="4114084177056654663">"日付と時刻"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 PM"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"ワイヤレス接続をすべて無効にする"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"ワイヤレス接続を無効にしています..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"ワイヤレス接続を有効にしています..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"ワイヤレス設定"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"無線とネットワーク"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Wi-Fi、Bluetooth、機内モード、モバイルネットワーク、VPNの設定"</string>
<string name="roaming" msgid="3596055926335478572">"データローミング"</string>
<string name="roaming_enable" msgid="3737380951525303961">"ローミング中にデータサービスに接続します"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"日付形式"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"アルファベット順"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"タイムゾーン順"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"セキュリティ & 位置情報"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"現在地情報とセキュリティ"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"現在地、画面のロック解除、SIMカードのロック、認証情報ストレージのロックの設定"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"現在地、画面のロック解除、認証情報ストレージのロックを設定します"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"パスワード"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"BluetoothをONにする"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth設定"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth設定"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"端末の名前、接続や検出設定"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Bluetoothペア設定リクエスト"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth端末情報"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"ペアにするPINを入力してください。"\n"(0000か1234を試してください)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」とペア設定するには、パスキー:<xliff:g id="PASSKEY">%2$s</xliff:g>が表示されていることを確認してください。"</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"ペア設定する"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"ペア設定しない"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"注意"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>とのペアリングで問題が発生しました。"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"入力されたPINが正しくないため、<xliff:g id="DEVICE_NAME">%1$s</xliff:g>とのペアリングで問題が発生しました。"</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>との通信を確立できません。"</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"ペア設定が<xliff:g id="DEVICE_NAME">%1$s</xliff:g>に拒否されました。"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>への接続で問題が発生しました。"</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"接続先..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"メディア"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"電話"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"転送"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"メディアの音声に接続"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"携帯電話の音声に接続"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"携帯電話とメディアの音声に接続"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"プロフィール"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"メディアの音声に接続"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"携帯電話の音声に接続"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"ファイル転送サーバーに接続"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ファイル転送サーバーに接続しない"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"メディアの音声に使用"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"携帯電話の音声に使用"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ファイル転送に使用"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-FiをONにする"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"セキュリティ"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"オープン"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"不明"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"オープンネットワーク"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"WEPで保護"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"WPAで保護"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"WPA2で保護"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"WPA-EAPで保護"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"IEEE 802.1xで保護"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IPアドレス"</string>
<string name="signal" msgid="1947969631626413228">"電波強度"</string>
<string name="wifi_starting" msgid="6710266609710860129">"ONにしています..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"匿名ID"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"クライアント証明書"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA証明書"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"秘密鍵のパスワード"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"ワイヤレス接続パスワード"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEPの16進キー (0~9、A~F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"パスワードを表示"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"切断"</string>
<string name="status_failed" msgid="610462050405904601">"失敗"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"サウンド & 画面設定"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"音の設定"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"着信音、操作音、画面の明るさなど"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"マナーモード"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SDカードの通知"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"SDカード通知時に音を鳴らします"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SDカード通知時に音を鳴らします"</string>
- <string name="sync_settings" msgid="2212736205476453234">"データの同期"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"同期するアプリケーションの選択"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"アカウントと同期"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"アカウントの追加や削除、アカウント設定の変更を行います"</string>
<string name="search_settings" msgid="1910951467596035063">"検索"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"検索設定と履歴の管理"</string>
<string name="display_settings" msgid="3912042046350078328">"画面設定"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"画面の明るさを調整する"</string>
<string name="screen_timeout" msgid="4882669461447531301">"バックライト消灯"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"画面バックライトを自動消灯するまでの時間"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"SIMカードロック設定"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"SIMカードロック設定"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIMカードロック"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"端末の状態"</string>
<string name="device_status" msgid="607405385799807324">"端末の状態"</string>
<string name="device_status_summary" msgid="2599162787451519618">"電話番号、電波状態など"</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SDカード & 端末容量"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"SDカードの取り外し、空き容量の表示"</string>
<string name="status_number" msgid="5123197324870153205">"電話番号"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"GPS機能をONにする"</string>
<string name="location_street_level" msgid="5899941752252356344">"高精度測位(電池の消費を節約する場合はOFFにしてください)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"高精度測位(電池消費増、電波が良好な場所で使用)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"A-GPSをONにする"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"サーバーでGPSを補助します(OFFにするとネットワーク使用率が減少します)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"サーバーでGPSを補助します(ONにするとGPS性能が向上します)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Googleと共有する"</string>
<string name="use_location_summary" msgid="4411467143899877395">"検索やサービスの品質向上にGoogleが位置情報を使用することを許可しますか?"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"検索結果やサービスの品質向上にGoogleが位置情報を使用することを許可しますか?"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"検索結果やサービスの改善にGoogleが位置情報を使用することを許可しますか?"</string>
<string name="agree" msgid="6288718671527758326">"同意する"</string>
<string name="disagree" msgid="6221069272309799230">"同意しない"</string>
<string name="about_settings" msgid="1743378368185371685">"端末情報"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"このアプリケーションは下記にアクセスできます:"</string>
<string name="computing_size" msgid="1599186977475211186">"計算中..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"パッケージのサイズを計算できません"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"サードパーティ製のアプリケーションはインストールされていません。"</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"サードパーティ製アプリケーションはインストールされていません。"</string>
<string name="version_text" msgid="9189073826278676425">"バージョン<xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"地域/言語 & 文字入力"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"実行中のサービス"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"現在実行中のサービスを表示して制御"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"再起動中"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"実行中のサービスはありません"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"サービスを停止しますか?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"アプリケーションから再起動されるまで、このサービスは実行されなくなります。望ましくない結果になることがあります。"</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"キャンセル"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: 選択して管理"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"言語とキーボード"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"言語と地域、文字入力の設定"</string>
<string name="language_category" msgid="3391756582724541530">"地域/言語設定"</string>
<string name="text_category" msgid="6342540511465136739">"文字入力設定"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USBデバッグは開発専用に設計されています。コンピュータと端末の間でデータをコピーする場合、アプリケーションを通知なしで端末にインストールする場合、ログ データを読み取る場合に使用できます。"</string>
<string name="gadget_picker_title" msgid="98374951396755811">"ガジェットを選択"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"ウィジェットを選択"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"UID %dの詳細"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g>の詳細"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g>のネットワーク使用詳細:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"受信バイト数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"アプリケーション"</string>
<string name="launch_count_label" msgid="4019444833263957024">"回数"</string>
<string name="usage_time_label" msgid="295954901452833058">"使用時間"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"ユーザー補助"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"ユーザー補助オプションの管理"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"ユーザー補助"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"ユーザー補助サービス"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"端末使用時間"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFiをONにしている時間"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"BluetoothをONにしている時間"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"電池使用量の詳細"</string>
<string name="details_subtitle" msgid="32593908269911734">"詳細を使用"</string>
<string name="controls_subtitle" msgid="390468421138288702">"消費電力の調整"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Wi-Fiの電池使用量"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"未使用時または電波が届かないときはWi-FiをOFFにします"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bluetoothの電池使用量"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"未使用時はBluetoothをOFFにします"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"未使用時はBluetoothをOFFにします"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"別のBluetooth端末に接続してみてください"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"アプリケーションの実行時の電池使用量"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"アプリケーションを停止またはアンインストールします"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"更新"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"メディアサーバー"</string>
- <string name="tts_settings" msgid="6454363854545277027">"音声合成"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"テキスト読み上げ"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"テキストから音声への変換オプションの設定"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"音声合成の制御"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"常に自分の設定を使用する"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"これは音声合成のサンプルです。"</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"設定が変更されました。これがサンプル音です。"</string>
<string name="gadget_title" msgid="7455548605888590466">"電源管理"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi設定の更新"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth設定の更新"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN設定"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"%sに接続"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"<xliff:g id="NAME">%s</xliff:g>に接続"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"ユーザー名:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"パスワード:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"ユーザー名"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"ネットワークから切断"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"ネットワークの編集"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"ネットワークを削除"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"%sを入力する必要があります。"</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"%sを選択する必要があります。"</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN名「%s」は既に存在します。別の名前にしてください。"</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"<xliff:g id="CODE">%s</xliff:g>を入力する必要があります。"</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"<xliff:g id="OPTION">%s</xliff:g>を選択する必要があります。"</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN名「<xliff:g id="NAME">%s</xliff:g>」は既に存在します。別の名前にしてください。"</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"このVPNを削除してもよろしいですか?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"このプロフィールの作成を中止してもよろしいですか?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"このプロフィールに加えた変更を破棄してもよろしいですか?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"このVPN設定には未設定のシークレット設定があります。シークレット設定を確認しますか?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"入力したユーザー名またはパスワードが正しくありません。もう一度入力し直しますか?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"サーバーから切断されました。入力したユーザー名またはパスワードが間違っている可能性があります。もう一度入力し直しますか?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"サーバーから切断されました。ファイアウォールの背後にいるためにサーバーに接続できない可能性があります。もう一度接続しますか?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"サーバーとのネゴシエーションに失敗しました。サーバーが暗号化オプションに同意しない場合があります。暗号化設定を確認しますか?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"VPNの追加"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"VPNの追加"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"%s VPNの追加"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%sの詳細"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"<xliff:g id="NAME">%s</xliff:g> VPNを追加"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g>の詳細"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"接続しています..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"切断しています..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"ネットワークに接続します"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN名"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"VPN名"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%sが追加されました"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"%sが変更されました"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"「<xliff:g id="NAME">%s</xliff:g>」を追加しました"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"「<xliff:g id="NAME">%s</xliff:g>」を変更しました"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"証明書を設定する"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"ユーザー証明書"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"ユーザー証明書"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPNサーバー名"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS検索ドメイン"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS検索ドメイン"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%sが設定されました"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%sは設定されていません"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%sは設定されていません(省略可)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"%sを有効にする"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"%sを無効にする"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%sは有効になっています"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%sは無効になっています"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g>が設定されました"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g>は設定されていません"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g>は設定されていません(省略可)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"<xliff:g id="OPTION">%s</xliff:g>を有効にする"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"<xliff:g id="OPTION">%s</xliff:g>を無効にする"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g>は有効です"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g>は無効です"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN設定"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"VPNを設定および管理します"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(変更なし)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"安全な証明書とその他の認証情報へのアクセスをアプリケーションに許可する"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"パスワードを入力する"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"認証情報ストレージパスワードを入力します。"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"パスワードの設定"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"認証情報ストレージパスワードを設定または変更する"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"パスワードの設定"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"現在のパスワード:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"新しいパスワード:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"新しいパスワードの確認:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"認証情報ストレージのパスワードを設定します。"</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"認証情報ストレージのパスワードを設定します。"</string>
<string name="cstor_password_error" msgid="2917326097260402464">"正しいパスワードを入力してください。"</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"正しいパスワードを入力してください。パスワードの入力にもう1回失敗すると、認証情報ストレージが削除されます。"</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"正しいパスワードを入力してください。パスワードの入力にあと%d回失敗すると、認証情報ストレージが削除されます。"</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"正しいパスワードを入力してください。パスワードの入力にあと<xliff:g id="NUMBER">%d</xliff:g>回失敗すると、認証情報ストレージが消去されます。"</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"パスワードが一致しません。"</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"パスワードを入力して確認する必要があります。"</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"パスワードを入力してください。"</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"パスワードを再入力してください。パスワードは8文字以上である必要があり、スペースを含めることはできません。"</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"名前を入力してください。"</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"文字と数字だけを含んだ名前を入力してください。"</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"証明書を保存できません。[OK]をタップしてやり直してください。"</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"証明書は保存されていません。"</string>
<string name="cstor_is_reset" msgid="449870501126790589">"認証情報ストレージが消去されました。"</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"認証情報ストレージが有効になりました。"</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%sが追加されました。"</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g>を追加しました。"</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"緊急時の音"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"緊急通報時の動作を設定します"</string>
</resources>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index 3980b99..beccd27 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"태평양"</item>
<item msgid="8392017019801393511">"모두"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"창 애니메이션이 표시되지 않습니다."</item>
+ <item msgid="4460915688877708508">"일부 창 애니메이션이 표시됩니다."</item>
+ <item msgid="488968798204105119">"모든 창 애니메이션이 표시됩니다."</item>
+ <item msgid="5835565817235114270">"더 느린 창 애니메이션이 표시됩니다."</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15초"</item>
<item msgid="8881760709354815449">"30초"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"이탈리아어"</item>
<item msgid="5811378076054402537">"스페인어"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"자동"</item>
- <item msgid="5434666299123318296">"없음"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA 개인"</item>
- <item msgid="1977424472734732392">"WPA2 개인"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"없음"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA 개인"</item>
- <item msgid="8928468573279595315">"WPA2 개인"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"자동"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index fc789de..09a2c34 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetooth 페어링 요청"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"페어링 요청"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"페어링하려면 선택합니다. "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth 장치 선택기"</string>
<string name="date_and_time" msgid="4114084177056654663">"날짜 및 시간 설정"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 PM"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"모든 무선 연결 사용 안함"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"무선 연결을 끊는 중..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"무선 연결 사용 중..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"무선 제어"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"무선 및 네트워크"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Wi-Fi, 블루투스, 비행 모드, 모바일 네트워크 및 VPN 관리"</string>
<string name="roaming" msgid="3596055926335478572">"데이터 로밍"</string>
<string name="roaming_enable" msgid="3737380951525303961">"로밍 시 데이터 서비스에 연결"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"날짜형식 선택"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"사전순으로 정렬"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"시간대별 정렬"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"보안 및 위치"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"장소 및 보안"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"내 위치, 화면 잠금해제, SIM 카드 잠금, 자격증명 저장소 잠금 설정"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"내 위치, 화면 잠금해제, 자격증명 저장소 잠금 설정"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"비밀번호"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Bluetooth 켜기"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth 설정"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth 설정"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"연결 관리, 장치이름 및 검색가능 여부 설정"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Bluetooth 페어링 요청"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth 장치 정보"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"페어링을 위해 PIN 입력"\n"(0000 또는 1234를 입력하세요.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"\'<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\'와(과) 페어링하려면 다음 패스키가 표시 중인지 확인합니다. <xliff:g id="PASSKEY">%2$s</xliff:g>"</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"페어링"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"페어링 안함"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"주의"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 페어링하는 동안 문제가 발생했습니다."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"입력한 PIN이 올바르지 않기 때문에 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 페어링하는 동안 문제가 발생했습니다."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>와(과) 통화할 수 없습니다."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에서 페어링을 거부했습니다."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 연결하는 동안 문제가 발생했습니다."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"연결..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"미디어"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"휴대폰"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"전송"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"미디어 오디오에 연결됨"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"휴대폰 오디오에 연결됨"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"휴대폰 및 미디어 오디오에 연결됨"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"프로필"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"미디어 오디오에 연결됨"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"휴대폰 오디오에 연결됨"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"파일 전송 서버에 연결됨"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"파일 전송 서버에 연결되지 않았습니다."</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"미디어 오디오에 사용"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"휴대폰 오디오에 사용"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"파일 전송에 사용"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-Fi 켜기"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"보안"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"열기"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"알 수 없음"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"개방형 네트워크"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"WEP로 보안"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"WPA로 보안"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"WPA2로 보안"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"WPA-EAP로 보안"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"IEEE 802.1x로 보안"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP 주소"</string>
<string name="signal" msgid="1947969631626413228">"신호 강도"</string>
<string name="wifi_starting" msgid="6710266609710860129">"켜는 중..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"익명 ID"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"클라이언트 인증서"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA 인증서"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"개인 키 비밀번호"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"무선 비밀번호"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP 16진수 키(0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"비밀번호를 표시합니다."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"연결 끊김"</string>
<string name="status_failed" msgid="610462050405904601">"실패"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"소리 및 디스플레이"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"소리 설정"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"벨소리, 알림, 화면 밝기 설정"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"무음 모드"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD 카드 알림"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"SD 카드 알림 시 사운드 재생"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SD 카드 알림 시 사운드 재생"</string>
- <string name="sync_settings" msgid="2212736205476453234">"데이터 동기화"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"동기화할 응용프로그램 선택"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"계정 및 동기화"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"계정 추가 또는 삭제 및 계정 설정 변경"</string>
<string name="search_settings" msgid="1910951467596035063">"검색"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"검색 설정 및 기록 관리"</string>
<string name="display_settings" msgid="3912042046350078328">"디스플레이 설정"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"화면 밝기 조정"</string>
<string name="screen_timeout" msgid="4882669461447531301">"화면 시간제한"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"화면 자동 꺼짐 시간 간격 조정"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"SIM 카드 잠금 설정"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"SIM 카드 잠금 설정"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM 카드 잠금"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"상태"</string>
<string name="device_status" msgid="607405385799807324">"상태"</string>
<string name="device_status_summary" msgid="2599162787451519618">"전화번호, 신호 등"</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD 카드 및 휴대폰 저장공간"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"SD 카드 마운트 해제, 사용가능한 저장공간 보기"</string>
<string name="status_number" msgid="5123197324870153205">"내 휴대전화 번호"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"GPS 위성 사용"</string>
<string name="location_street_level" msgid="5899941752252356344">"도로 수준으로 정확하게 탐색(배터리를 절약하려면 선택 취소)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"도로 수준으로 탐색(항공사진이 더해져 배터리 추가로 필요)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"GPS 도우미 사용"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"서버를 사용하여 GPS 보조(네트워크 사용량을 줄이려면 선택 취소)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"서버를 사용하여 GPS 보조(GPS 성능을 개선하려면 선택)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Google과 공유"</string>
<string name="use_location_summary" msgid="4411467143899877395">"검색 및 기타 서비스의 개선을 위해 Google의 위치 정보 사용을 허용"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"검색결과 및 기타 서비스의 개선을 위해 Google이 위치 정보를 사용하도록 합니다."</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"검색결과 및 기타 서비스 향상을 위해 Google에 위치 정보를 제공하시겠습니까?"</string>
<string name="agree" msgid="6288718671527758326">"동의함"</string>
<string name="disagree" msgid="6221069272309799230">"동의하지 않음"</string>
<string name="about_settings" msgid="1743378368185371685">"휴대폰 정보"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"이 응용프로그램은 휴대폰의 다음 항목에 액세스할 수 있습니다."</string>
<string name="computing_size" msgid="1599186977475211186">"계산 중..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"패키지 크기를 계산할 수 없습니다."</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"타사 응용프로그램이 설치되지 않습니다."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"타사 응용프로그램을 설치하지 않았습니다."</string>
<string name="version_text" msgid="9189073826278676425">"버전 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"로케일 및 텍스트"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"실행 중인 서비스"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"현재 실행 중인 서비스 보기 및 제어"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"다시 시작하는 중"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"실행 중인 서비스 없음"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"서비스를 중지할까요?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"응용프로그램에서 다시 시작할 때까지 서비스가 더 이상 실행되지 않습니다. 이로 인해 원하지 않는 결과가 초래될 수 있습니다."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"중지"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"취소"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: 관리하려면 선택"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"언어 및 키보드"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"로케일(언어 및 지역), 텍스트 입력 및 자동 수정 옵션 설정"</string>
<string name="language_category" msgid="3391756582724541530">"로케일 설정"</string>
<string name="text_category" msgid="6342540511465136739">"텍스트 설정"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB 디버깅은 개발용으로만 설계되었습니다. 이 기능을 사용하면 컴퓨터와 장치 간에 데이터를 복사하고 알림 없이 장치에 응용프로그램을 설치하며 로그 데이터를 읽을 수 있습니다."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"가젯 선택"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"위젯 선택"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"UID %d의 세부정보"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g>의 세부정보"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 네트워크 사용 세부정보"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"받은 바이트 수: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"응용프로그램"</string>
<string name="launch_count_label" msgid="4019444833263957024">"계수"</string>
<string name="usage_time_label" msgid="295954901452833058">"사용 시간"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"접근성"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"접근성 옵션 관리"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"접근성"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"접근성 서비스"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"장치 무중단 가동 시간"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi 사용 시간"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 사용 시간"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"배터리 사용 세부정보"</string>
<string name="details_subtitle" msgid="32593908269911734">"사용 세부정보"</string>
<string name="controls_subtitle" msgid="390468421138288702">"전원 사용 조절"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Wi-Fi에서 배터리 사용"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"사용 중이 아니거나 사용할 수 없을 때 Wi-Fi 사용 안함"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"블루투스에서 배터리 사용"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"사용 중이 아닐 때에는 블루투스 끄기"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"사용 중이 아닐 때에는 Bluetooth 끄기"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"다른 블루투스 장치로 연결 시도"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"실행 중에 응용프로그램에서 배터리 사용"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"응용프로그램 중지 또는 제거"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"새로고침"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"미디어 서버"</string>
- <string name="tts_settings" msgid="6454363854545277027">"음성 합성"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"텍스트를 음성으로 변환"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"TTS(text-to-speech) 옵션 설정"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"음성 합성기 컨트롤"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"항상 내 설정 사용"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"음성 합성의 예입니다."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"설정이 변경되었습니다. 다음은 소리나는 방식에 대한 예입니다."</string>
<string name="gadget_title" msgid="7455548605888590466">"전원 컨트롤"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi 설정 업데이트"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"블루투스 설정 업데이트"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN 설정"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"%s에 연결"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"<xliff:g id="NAME">%s</xliff:g>에 연결"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"사용자 이름:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"비밀번호:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"사용자 이름"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"네트워크에서 연결 해제"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"네트워크 수정"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"네트워크 삭제"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"%s을(를) 입력해야 합니다."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"%s을(를) 선택해야 합니다."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN 이름(\'%s\')이 이미 있습니다. 다른 이름을 찾아보세요."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"<xliff:g id="CODE">%s</xliff:g>을(를) 입력해야 합니다."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"<xliff:g id="OPTION">%s</xliff:g>을(를) 선택해야 합니다."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN 이름(\'<xliff:g id="NAME">%s</xliff:g>\')이 이미 있습니다. 다른 이름을 찾아보세요."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"VPN을 삭제하시겠습니까?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"프로필을 만들지 않으시겠습니까?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"프로필에 대한 변경을 취소하시겠습니까?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"VPN 구성에서 하나 이상의 보안이 누락되었습니다. 보안 설정을 확인하시겠습니까?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"입력한 사용자 이름 및 비밀번호가 올바르지 않습니다. 다시 시도하시겠습니까?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"서버가 중단되었습니다. 입력한 사용자 이름 또는 비밀번호가 올바르지 않을 수 있습니다. 다시 시도하시겠습니까?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"서버와의 연결이 끊겼습니다. 서버에 연결하지 못하게 하는 방화벽에 막혔을 수 있습니다. 다시 시도하시겠습니까?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"서버 교섭에 실패했습니다. 서버가 암호화 옵션에 동의하지 않기 때문인 것 같습니다. 암호화 설정을 확인하시겠습니까?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"VPN 추가"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"VPN 추가"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"%s VPN 추가"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s 세부정보"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"<xliff:g id="NAME">%s</xliff:g> VPN 추가"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g> 세부정보"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"연결 중..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"연결을 끊는 중..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"네트워크 연결"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN 이름"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"VPN 이름"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s이(가) 추가됩니다."</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"%을(를) 변경했습니다."</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\'<xliff:g id="NAME">%s</xliff:g>\'이(가) 추가되었습니다."</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"\'<xliff:g id="NAME">%s</xliff:g>\'을(를) 변경했습니다."</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"사용자 인증서 설정"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"사용자 인증서"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"사용자 인증서"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN 서버 이름"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS 검색 도메인"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS 검색 도메인"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s이(가) 설정됩니다."</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s 설정되지 않음"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s 설정되지 않음(선택 사항)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"%s 사용"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"%s 사용 중지"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s 사용"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s 사용 중지됨"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> 설정됨"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> 설정 안함"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> 설정되지 않음(선택 사항)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"<xliff:g id="OPTION">%s</xliff:g> 사용"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"<xliff:g id="OPTION">%s</xliff:g> 사용 안함"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> 사용"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> 사용 중지됨"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN 설정"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"VPN 설정 및 관리"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(변경 안함)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"응용프로그램이 보안 인증서 및 다른 자격증명에 액세스할 수 있도록 합니다."</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"비밀번호 입력"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"자격증명 저장소 비밀번호를 입력하세요."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"비밀번호 설정"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"자격증명 저장소 비밀번호를 설정하거나 변경"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"비밀번호 설정"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"현재 비밀번호:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"새 비밀번호:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"새 비밀번호 확인:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"자격증명 저장소의 비밀번호를 설정합니다."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"자격증명 저장소의 비밀번호를 설정합니다."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"정확한 비밀번호를 입력하세요."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"정확한 비밀번호를 입력하세요. 자격증명 저장소를 지우기 전에 정확한 비밀번호를 입력할 수 있는 기회가 한 번 더 있습니다."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"정확한 비밀번호를 입력하세요. 자격증명 저장소를 지우기 전에 정확한 비밀번호를 입력할 수 있는 기회가 %d번 더 있습니다."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"정확한 비밀번호를 입력하세요. 자격증명 저장소를 지우기 전에 정확한 비밀번호를 입력할 수 있는 기회가 <xliff:g id="NUMBER">%d</xliff:g>번 더 있습니다."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"비밀번호가 일치하지 않습니다."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"비밀번호를 입력하고 확인해야 합니다."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"비밀번호를 입력하세요."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"비밀번호를 다시 입력하세요. 비밀번호는 공백 없이 8자 이상이어야 합니다."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"이름을 입력하세요."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"문자와 숫자만 들어 있는 이름을 입력하세요."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"인증서를 저장할 수 없습니다. 다시 시도하려면 확인을 클릭하세요."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"인증서가 저장되지 않습니다."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"자격증명 저장소가 삭제되었습니다."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"자격증명 저장소를 사용합니다."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s이(가) 추가됩니다."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"\'<xliff:g id="CREDENTIAL">%s</xliff:g>\'이(가) 추가되었습니다."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"긴급 신호음"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"긴급 통화 중 동작 설정"</string>
</resources>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index c3daebf..3a12138 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Stillehavet"</item>
<item msgid="8392017019801393511">"Alle"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Ingen vindusanimasjoner vises"</item>
+ <item msgid="4460915688877708508">"Noen vindusanimasjoner vises"</item>
+ <item msgid="488968798204105119">"Alle vindusanimasjoner vises"</item>
+ <item msgid="5835565817235114270">"Langsommere vindusanimasjoner vises"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 sekunder"</item>
<item msgid="8881760709354815449">"30 sekunder"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiensk"</item>
<item msgid="5811378076054402537">"Spansk"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatisk"</item>
- <item msgid="5434666299123318296">"Ingen"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"Personlig WPA"</item>
- <item msgid="1977424472734732392">"Personlig WPA2"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Ingen"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"Personlig WPA"</item>
- <item msgid="8928468573279595315">"Personlig WPA2"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatisk"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index c365716..e40d452 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Paringsforespørsel for Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Paringsforespørsel"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Velg å pare med "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooths enhetsvelger"</string>
<string name="date_and_time" msgid="4114084177056654663">"Innstillinger for dato og tid"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Slå av alle trådløse tilkoblinger"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Slår av trådløse tilkoblinger…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Slår på trådløse tilkoblinger…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Trådløse nett"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Trådløst og nettverk"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Trådløse nett, Bluetooth, flymodus, mobile nettverk, VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Dataroaming"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Koble til datatjenester ved roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Datoformat"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Sorter alfabetisk"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Sorter etter tidssone"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Sikkerhet og plassering"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Plassering og sikkerhet"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Plassering, skjermlås, SIM-kort-lås"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Angi Min posisjon, lås opp skjerm, lås påloggingsopplysninger"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Passord"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Slå på Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth-innstillinger"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth-innstillinger"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Tilkoblinger, enhetsnavn og synlighet"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Forespørsel om Bluetooth-paring"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth-enhetsinformasjon"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Skriv inn PIN-kode for å pare."\n"(Prøv 0000 eller 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Hvis du vil pare med «<xliff:g id="DEVICE_NAME">%1$s</xliff:g>», må du kontrollere at enheten viser passordet: <xliff:g id="PASSKEY">%2$s</xliff:g>"</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Paring"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Ikke par"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"NB"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Det oppsto et problem under paring med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Det oppsto et problem under paring med <xliff:g id="DEVICE_NAME">%1$s</xliff:g> fordi PIN-koden du oppga var feil."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Fikk ikke kontakt med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> avslo paring."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Kunne ikke koble til <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Koble til…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Media"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Overfør"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Koblet til medielyd"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Koblet til telefonlyd"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Koblet til medie- og telefonlyd"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profiler"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Koblet til medielyd"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Koblet til telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Koblet til tjener for filoverføring"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Ikke koblet til tjener for filoverføring"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Bruk for medielyd"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Bruk for telefonlyd"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Bruk til filoverføring"</string>
<string name="wifi" msgid="1081550856200013637">"Trådløst nett"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Trådløst nett"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Slå på trådløst nett"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Sikkerhet"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Åpen"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Ukjent"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"åpent nett"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"sikret med WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"sikret med WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"sikret med WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"sikret med WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"sikret med IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-adresse"</string>
<string name="signal" msgid="1947969631626413228">"Signalstyrke"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Slår på…"</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonym identitet"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Klientsertifikat"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA-sertifikat"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Passord for privat nøkkel"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Passord for trådløst nettverk"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP-nøkkel i hex (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Vis passord."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Frakoblet"</string>
<string name="status_failed" msgid="610462050405904601">"Mislykket"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Lyd og skjerm"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Lydinnstillinger"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ringetoner, varsling, lysstyrke"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Stillemodus"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Varsling for minnekort"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Spill lyd for minnekortvarsler"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Spill lyd for minnekortvarsler"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Datasynkronisering"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Applikasjoner som skal synkroniseres"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Kontoer og synkronisering"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Legge til eller fjerne kontoer og endre kontoinnstillinger"</string>
<string name="search_settings" msgid="1910951467596035063">"Søk"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Søkeinnstillinger og -logg"</string>
<string name="display_settings" msgid="3912042046350078328">"Skjerminnstillinger"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Juster skjermens lysstyrke"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Skjermsparer"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Juster hvor lang tid som skal gå før skjermen slås av automatisk"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Innstillinger for SIM-kort-lås"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Sett opp SIM-kort-lås"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM-kort-lås"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signalstyrke, osv."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Minnekort og lagring"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Avmonter minnekort, vis ledig plass"</string>
<string name="status_number" msgid="5123197324870153205">"Telefonnummer"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Bruk GPS-satellitter"</string>
<string name="location_street_level" msgid="5899941752252356344">"Nøyaktig til gatenivå (slå av for å spare batteri)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Finn plassering på gatenivå (bruker mer batteri, og trenger fri sikt til himmelen)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Aktiver GPS med hjelp"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Bruk tjener til å hjelpe GPS (opphev for å redusere nettverksbruken)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Bruk tjeneren til å hjelpe GPS (velg for å forbedre GPS-ytelsen)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Del med Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"La Google bruke plasseringen til bedre søk og andre tjenester"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"La Google bruke plasseringen til bedre søk og andre tjenester"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Vil du tillate Google å bruke din posisjon til å forbedre søkeresultatene og andre tjenester?"</string>
<string name="agree" msgid="6288718671527758326">"Godta"</string>
<string name="disagree" msgid="6221069272309799230">"Avslå"</string>
<string name="about_settings" msgid="1743378368185371685">"Om telefonen"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Applikasjonen har disse rettighetene på telefonen:"</string>
<string name="computing_size" msgid="1599186977475211186">"Beregner fortsatt…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Kunne ikke beregne pakkestørrelse"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Ingen tredjepartsapplikasjoner er installert."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Du har ingen tredjepartsprogrammer installert."</string>
<string name="version_text" msgid="9189073826278676425">"versjon <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Språk og tekst"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Kjørende tjenester"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Vis og kontroller tjenester som kjører for øyeblikket"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Starter på nytt"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Ingen kjørende tjenester"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Stoppe tjenesten?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Tjenesten vil ikke kjøre før programmet starter den opp igjen. Dette kan ha uønskede konsekvenser."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Stopp"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Avbryt"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: Velg for å administrere"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Språk og tastatur"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Innstillinger for språk, region, skriving av tekst og feilretting"</string>
<string name="language_category" msgid="3391756582724541530">"Innstillinger for språk"</string>
<string name="text_category" msgid="6342540511465136739">"Tekstinnstillinger"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB-debugging er kun ment for utviklere. Det kan brukes for å kopiere data mellom datamaskinen og telefonen, installere applikasjoner på telefonen i det stille, og lese loggdata."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Velg gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Velg skrivebordselement"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detaljer for UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detaljer for UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Nettbruk av <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Byte mottatt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Applikasjon"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Antall"</string>
<string name="usage_time_label" msgid="295954901452833058">"Brukstid"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Tilgjengelighet"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Tilgjengelighetsvalg"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Tilgjengelighet"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Tjenester for tilgjengelighet"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Tid enheten har vært våken"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Tid trådløsnettet har vært aktivt"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Tid Bluetooth har vært aktivt"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Detaljert batteribrukinformasjon"</string>
<string name="details_subtitle" msgid="32593908269911734">"Bruksdetaljer"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Juster strømforbruk"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batteri brukt av trådløsnettet"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Skru av trådløst nett når du ikke bruker det, eller det ikke er tilgjengelig"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri brukt av Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Skru av Bluetooth når det ikke er i bruk"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Slå av Bluetooth når det ikke er i bruk"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Prøv å koble til en annen Bluetooth-enhet"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batteri brukt av applikasjoner som ikke kjøres"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Stopp eller avinstaller applikasjonen"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Oppdater"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android-operativsystem"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Medietjener"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Talesyntese"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Tekst til tale"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Endre valg for talesyntese"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Talesyntese-kontroller"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Overstyr innstillinger"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Dette er et eksempel på stemmesyntese."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Du har endret innstillingene dine. Dette er et eksempel på hvordan de høres ut."</string>
<string name="gadget_title" msgid="7455548605888590466">"Strømkontroll"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Oppdaterer innstilling for Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Oppdatere Bluetooth-innstilling"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-innstillinger"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Koble til %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Koble til <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Brukernavn:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Passord:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"et brukernavn"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Koble fra nettverk"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Rediger nettverk"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Slett nettverk"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Du må skrive inn %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Du må velge %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN-navnet \'%s\' finnes allerede. Velg et annet navn."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Du må skrive inn <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Du må velge <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN-navnet «<xliff:g id="NAME">%s</xliff:g>»·finnes allerede. Velg et annet navn."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Er du sikker på at du ønsker å slette dette VPN-et?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Er du sikker på at du ikke ønsker å opprette denne profilen?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Er du sikker på at du vil forkaste endringene for denne profilen?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Et eller flere passord mangler i denne VPN-innstillingen. Ønsker du å sjekke passordinnstillingene?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Brukernavnet eller passordet er feil. Prøv igjen?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Tjeneren la på. Brukernavnet eller passordet kan være feil. Prøv igjen?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Tjeneren brøt forbindelsen. Det kan hende du befinner deg bak en brannmur som hindrer deg i å koble til tjeneren. Vil du prøve igjen?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Tjenerforhandling mislyktes. Det kan hende at tjeneren ikke er enig i krypteringsalternativet ditt. Vil du kontrollere krypteringsinnstillingene?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Legg til VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Legg til VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Legg til %s-VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Detaljer for %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Legg til <xliff:g id="NAME">%s</xliff:g>-VPN"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Detaljer om <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Kobler til ..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Kobler fra ..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Koblet til nettverket"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN-navn"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"et VPN-navn"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"«%s» ble lagt til"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"«%s» ble redigert"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"«<xliff:g id="NAME">%s</xliff:g>» ble lagt til"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"«<xliff:g id="NAME">%s</xliff:g>» ble endret"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Velg klientsertifikat"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Klientsertifikat"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"et klientsertifikat"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN-tjenernavn"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS-søkesti"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS-søkesti"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s er valgt"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s er ikke valgt"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s er ikke valgt (frivillig)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Aktiver %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Deaktiver %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s er aktivert"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s er deaktivert"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> er angitt"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> ikke angitt"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> er ikke angitt (valgfritt)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Aktiver <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Deaktiver <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> er aktivert"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> er deaktivert"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN-innstillinger"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Sett opp og vedlikehold virtuelle private nettverk (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(uendret)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Gir applikasjoner tilgang til sikre sertifikater og andre akkreditiver"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Skriv inn passord"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Skriv inn passordet for akkreditivlager."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Velg passord"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Velg eller endre passordet for akkreditivlageret"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Velg passord"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Nåværende passord:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nytt passord:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Bekreft nytt passord:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Velg et passord for akkreditivlageret."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Velg et passord for akkreditivlageret."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Skriv inn det riktige passordet."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Skriv inn det riktige passordet. Du har ett forsøk igjen før akkreditivlageret blir slettet."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Skriv inn det riktige passordet. Du har %d forsøk igjen før akkreditivlageret blir slettet."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Skriv inn det riktige passordet. Du har <xliff:g id="NUMBER">%d</xliff:g> forsøk igjen før akkreditivlageret blir slettet."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Passordene stemmer ikke overens."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Du må skrive inn og bekrefte et passord."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Skriv inn et passord."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Skriv inn passordet på nytt. Passordet må ha minst åtte tegn, og kan ikke inneholde mellomrom."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Skriv inn et navn."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Skriv inn et navn som kun inneholder bokstaver og tall."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Kunne ikke lagre sertifikatet. Velg OK for å forsøke på nytt."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Sertifikatet ble ikke lagret."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Akkreditivlageret ble nullstilt."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Akkreditivlagring er aktivert."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s ble lagt til."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> ble lagt til."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Nødtone"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Velg oppførsel når en nødsamtale opprettes"</string>
</resources>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index a96b716..82b7778 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Stille Oceaan"</item>
<item msgid="8392017019801393511">"Alles"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Er worden geen vensteranimaties weergegeven"</item>
+ <item msgid="4460915688877708508">"Er worden een paar vensteranimaties weergegeven"</item>
+ <item msgid="488968798204105119">"Allen vensteranimaties worden weergegeven"</item>
+ <item msgid="5835565817235114270">"Er worden langzamere vensteranimaties weergegeven"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 seconden"</item>
<item msgid="8881760709354815449">"30 seconden"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiaans"</item>
<item msgid="5811378076054402537">"Spaans"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatisch"</item>
- <item msgid="5434666299123318296">"Geen"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Geen"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatisch"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index fb00910..c73519a 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetooth-koppelingsverzoek"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Koppelingsverzoek"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Selecteer dit om te koppelen met "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Apparaatkiezer van Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Datum- en tijdinstellingen"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"13:00 uur"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"01:00:00 PM"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Alle draadloze verbindingen uitschakelen"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Draadloze verbindingen uitschakelen..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Draadloze verbindingen inschakelen..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Draadloze bedieningselementen"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Draadloos en netwerken"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Wi-Fi, Bluetooth, vliegmodus, mobiele netwerken en VPN\'s beheren"</string>
<string name="roaming" msgid="3596055926335478572">"Gegevensroaming"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Verbinding maken met gegevensservices tijdens roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Datumnotatie selecteren"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Alfabetisch sorteren"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Sorteren op tijdzone"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Beveiliging en locatie"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Locatie en beveiliging"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Mijn locatie\', schermontgrendeling, SIM- en referentieopslagvergrendeling instellen"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"\'Mijn locatie\' instellen, scherm ontgrendelen, opslag van referenties vergrendelen"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Wachtwoorden"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Bluetooth inschakelen"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth-instellingen"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth-instellingen"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Verbindingen beheren, apparaatnaam en vindbaarheid instellen"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Bluetooth-koppelingsverzoek"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth-apparaatinfo"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Typ de PIN-code om te koppelen."\n"(Probeer 0000 of 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Als u wilt koppelen met \'<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\', moet u bevestigen dat deze toegangscode wordt weergegeven: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Koppelen"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Niet koppelen"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Let op"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Er is een probleem opgetreden bij het koppelen met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Er is een probleem opgetreden bij het koppelen met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, omdat de opgegeven PIN-code onjuist is."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Kan niet communiceren met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Koppeling geweigerd door <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Er is een probleem opgetreden bij het verbinden met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Verbinding maken met…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Media"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefoon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Overdracht"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Verbonden met audio van medium"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Verbonden met audio van telefoon"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Verbonden met audio van telefoon en medium"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profielen"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Verbonden met audio van medium"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Verbonden met audio van telefoon"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Verbonden met server voor bestandsoverdracht"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Niet verbonden met server voor bestandsoverdracht"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Gebruiken voor audio van medium"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Gebruiken voor audio van telefoon"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Gebruiken voor bestandsoverdracht"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Wi-Fi inschakelen"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Beveiliging"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Open"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Onbekend"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"open netwerk"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"beveiligd met WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"beveiligd met WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"beveiligd met WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"beveiligd met WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"beveiligd met IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-adres"</string>
<string name="signal" msgid="1947969631626413228">"Signaalsterkte"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Inschakelen..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonieme identiteit"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Klantcertificaat"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA-certificaat"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Wachtwoord voor privésleutel"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Draadloos wachtwoord"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Hexadecimale WEP-sleutel (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Wachtwoord weergeven."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Verbinding verbroken"</string>
<string name="status_failed" msgid="610462050405904601">"Mislukt"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Geluid en weergave"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Geluidsinstellingen"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Beltonen, meldingen, schermhelderheid instellen"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Stille modus"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD-kaartmeldingen"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Geluid afspelen voor SD-kaartmeldingen"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Geluid afspelen voor SD-kaartmeldingen"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Gegevenssynchronisatie"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Selecteren welke toepassingen worden gesynchroniseerd"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Accounts en synchronisatie"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Accounts toevoegen of verwijderen en accountinstellingen wijzigen"</string>
<string name="search_settings" msgid="1910951467596035063">"Zoeken"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Instellingen voor zoeken en zoekgeschiedenis beheren"</string>
<string name="display_settings" msgid="3912042046350078328">"Instellingen weergeven"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Helderheid van het scherm aanpassen"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Time-out scherm"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"De vertraging voor het automatisch uitschakelen van het scherm aanpassen"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Instellingen SIM-kaartvergrendeling"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"SIM-kaartvergrendeling instellen"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM-kaartvergrendeling"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefoonnummer, signaal, enzovoort"</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD-kaart en telefoongeheugen"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"SD-kaart ontkoppelen, beschikbare opslagruimte weergeven"</string>
<string name="status_number" msgid="5123197324870153205">"Mijn telefoonnummer"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"GPS-satellieten inschakelen"</string>
<string name="location_street_level" msgid="5899941752252356344">"Locatie tot op straatniveau (uit om acculading te sparen)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Locatie bepalen tot op straatniveau (meer stroom nodig en luchtweergave)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"GPS-ondersteuning inschakelen"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Server gebruiken ter ondersteuning van GPS (selectie opheffen om het netwerkgebruik te beperken)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Server gebruiken ter ondersteuning van GPS (selecteren om de GPS-prestaties te verbeteren)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Delen met Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Toestaan dat Google locatie gebruikt voor verbeterde zoekfunctie en andere services"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Toestaan dat Google locatie gebruikt voor verbeterde zoekresultaten en andere services"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Wilt u Google toestaan uw locatie te gebruiken voor verbeterde zoekresultaten en andere services?"</string>
<string name="agree" msgid="6288718671527758326">"Akkoord"</string>
<string name="disagree" msgid="6221069272309799230">"Niet akkoord"</string>
<string name="about_settings" msgid="1743378368185371685">"Over de telefoon"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Deze toepassing heeft toegang tot de volgende opties van uw telefoon:"</string>
<string name="computing_size" msgid="1599186977475211186">"Berekenen…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Kan grootte van pakket niet berekenen"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"U heeft geen toepassingen van derden geïnstalleerd."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"U heeft geen toepassingen van derden geïnstalleerd."</string>
<string name="version_text" msgid="9189073826278676425">"versie <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Landinstelling en tekst"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Actieve services"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Services die momenteel actief zijn, weergeven en beheren"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Opnieuw starten"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Er zijn geen actieve services"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Service stopzetten?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"De service wordt pas actief nadat deze opnieuw is gestart door de toepassing. Dit kan onprettige gevolgen hebben."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Stoppen"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Annuleren"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"\'<xliff:g id="CLIENT_NAME">%1$s</xliff:g>\': selecteren om te beheren"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Taal en toetsenbord"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Instellingen voor taal en regio, tekstinvoer en autocorrectieopties opgeven"</string>
<string name="language_category" msgid="3391756582724541530">"Landinstelling"</string>
<string name="text_category" msgid="6342540511465136739">"Tekstinstellingen"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB-foutopsporing is alleen bedoeld voor ontwikkelingsdoeleinden. Het kan worden gebruikt om gegevens te kopiëren tussen uw computer en uw apparaat, om toepassingen zonder melding op uw apparaat te installeren en om loggegevens te lezen."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Gadget kiezen"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Widget kiezen"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Details voor UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Details voor UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Netwerkgebruiksdetails voor <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes ontvangen: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Toepassing"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Aantal"</string>
<string name="usage_time_label" msgid="295954901452833058">"Gebruikstijd"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Toegankelijkheid"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Toegankelijkheidsopties beheren"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Toegankelijkheid"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Toegankelijkheidsservices"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Stand-bytijd apparaat"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Tijd Wi-Fi aan"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Tijd Wi-Fi aan"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Details over accugebruik"</string>
<string name="details_subtitle" msgid="32593908269911734">"Gebruiksdetails"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Energieverbruik aanpassen"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Accu gebruikt door Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Schakel Wi-Fi uit wanneer u dit niet gebruikt of waar dit niet beschikbaar is"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Accu gebruikt door Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Schakel Bluetooth uit wanneer u dit niet gebruikt"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Schakel Bluetooth uit wanneer u deze functie niet gebruikt"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Probeer verbinding te maken met een ander Bluetooth-apparaat"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Accu gebruikt door actieve toepassingen"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"De toepassing stoppen of verwijderen"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Vernieuwen"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android-besturingssysteem"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Spraaksynthese"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Tekst-naar-spraak"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Opties voor tekst-naar-spraak instellen"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Bedieningselementen voor spraaksynthesizer"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Altijd mijn instellingen gebruiken"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Dit is een voorbeeld van spraaksynthese."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Uw instellingen zijn gewijzigd. Dit is een voorbeeld van hoe ze klinken."</string>
<string name="gadget_title" msgid="7455548605888590466">"Energiebeheer"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Wi-Fi-instelling bijwerken"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth-instelling bijwerken"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-instellingen"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Verbinden met %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Verbinding maken met <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Gebruikersnaam:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Wachtwoord:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"een gebruikersnaam"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Verbinding met netwerk verbreken"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Netwerk bewerken"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Netwerk verwijderen"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"U moet \'%s\' invoeren."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"U moet \'%s\' selecteren."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"De VPN-naam \'%s\' bestaat al. Geef een andere naam op."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"U moet \'<xliff:g id="CODE">%s</xliff:g>\' invoeren."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"U moet \'<xliff:g id="OPTION">%s</xliff:g>\' selecteren."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"De VPN-naam \'<xliff:g id="NAME">%s</xliff:g>\' bestaat al. Geef een andere naam op."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Weet u zeker dat u dit VPN wilt verwijderen?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Weet u zeker dat u dit profiel niet wilt maken?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Weet u zeker dat u de wijzigingen in dit profiel wilt annuleren?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Een of meer geheimen ontbreken in deze VPN-configuratie. Wilt u uw geheime instelling controleren?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"De door u ingevoerde gebruikersnaam of het door u ingevoerde wachtwoord is onjuist. Wilt u het opnieuw proberen?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Serververbinding verbroken. De gebruikersnaam of het wachtwoord dat u heeft ingevoerd, is onjuist. Wilt u het opnieuw proberen?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"De server is vastgelopen. Wellicht bevindt u zich achter een firewall die een verbinding met de server blokkeert. Wilt u het opnieuw proberen?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Het contact met de server is mislukt. De server gaat wellicht niet akkoord met uw optie voor codering. Wilt u de instelling voor de codering controleren?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"VPN toevoegen"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"VPN toevoegen"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"VPN \'%s\' toevoegen"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Details voor %"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"VPN \'<xliff:g id="NAME">%s</xliff:g>\' toevoegen"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Details voor <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPN\'s"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Verbinding maken..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Verbinding verbreken..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Verbinding maken met netwerk"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN-naam"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"een VPN-naam"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s is toegevoegd"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Er zijn wijzigingen aangebracht in %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\'<xliff:g id="NAME">%s</xliff:g>\' is toegevoegd"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Er zijn wijzigingen aangebracht in \'<xliff:g id="NAME">%s</xliff:g>\'"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Gebruikerscertificaat instellen"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Gebruikerscertificaat"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"een gebruikerscertificaat"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Naam VPN-server"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS-zoekdomeinen"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS-zoekdomeinen"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s is ingesteld"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s niet ingesteld"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s niet ingesteld (optioneel)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"%s inschakelen"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"%s uitschakelen"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s is ingeschakeld"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s is uitgeschakeld"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> is ingesteld"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> is niet ingesteld"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> is niet ingesteld (optioneel)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"<xliff:g id="OPTION">%s</xliff:g> inschakelen"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"\'<xliff:g id="OPTION">%s</xliff:g>\' uitschakelen"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"\'<xliff:g id="OPTION">%s</xliff:g>\' is ingeschakeld"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"\'<xliff:g id="OPTION">%s</xliff:g>\' is uitgeschakeld"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN-instellingen"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"VPN\'s (Virtual Private Networks) instellen en beheren"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(ongewijzigd)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Toepassingen mogen veilige certificaten en andere referenties openen"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Voer het wachtwoord in"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Geef het wachtwoord voor de opslag van referenties op."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Wachtwoord instellen"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Het wachtwoord voor de opslag van referenties instellen"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Wachtwoord instellen"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Huidig wachtwoord:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nieuw wachtwoord:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Nieuw wachtwoord bevestigen:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Stel een wachtwoord in voor de opslag van referenties."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Stel een wachtwoord in voor de opslag van referenties."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Voer het juiste wachtwoord in."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Voer het juiste wachtwoord in. U kunt nog één keer proberen het juiste wachtwoord in te voeren voordat de opgeslagen referenties worden verwijderd."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Voer het juiste wachtwoord in. U kunt nog %d keer proberen om het juiste wachtwoord in te voeren voordat de opgeslagen referenties worden verwijderd."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Voer het juiste wachtwoord in. U kunt nog <xliff:g id="NUMBER">%d</xliff:g> keer proberen om het juiste wachtwoord in te voeren voordat de opgeslagen aanmeldingsgegevens worden verwijderd."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"De wachtwoorden komen niet overeen."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"U moet een wachtwoord invoeren en bevestigen."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Voer het wachtwoord in."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Voer het wachtwoord opnieuw in. Het wachtwoord moet ten minste 8 tekens bevatten en mag geen spaties bevatten."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Voer een naam in."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Voer een naam in die alleen uit letters en cijfers bestaat."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Kan het certificaat niet opslaan. Klik op \'OK\' om het opnieuw te proberen."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Het certificaat is niet opgeslagen."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"De opslag van referenties is gewist."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"De opslag van referenties is ingeschakeld."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s is toegevoegd."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"\'<xliff:g id="CREDENTIAL">%s</xliff:g>\' is toegevoegd."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Toon voor noodoproep"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Gedrag bij noodoproepen instellen"</string>
</resources>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index f4c5343..76ff471 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacyfik"</item>
<item msgid="8392017019801393511">"Wszystkie"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Brak wyświetlanych animacji okien"</item>
+ <item msgid="4460915688877708508">"Niektóre animacje okien są wyświetlane"</item>
+ <item msgid="488968798204105119">"Wszystkie animacje okien są wyświetlane"</item>
+ <item msgid="5835565817235114270">"Wolniejsze animacje okien są wyświetlane"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 sekund"</item>
<item msgid="8881760709354815449">"30 sekund"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Włoski"</item>
<item msgid="5811378076054402537">"hiszpański"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatycznie"</item>
- <item msgid="5434666299123318296">"Brak"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA personal"</item>
- <item msgid="1977424472734732392">"WPA2 personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Brak"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA personal"</item>
- <item msgid="8928468573279595315">"WPA2 personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatycznie"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 9624d65..8bf8f6b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Żądanie parowania Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Żądanie parowania"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Zaznacz, aby sparować "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Selektor urządzenia Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Ustawienia daty i godziny"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 (po południu)"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Wyłącz wszystkie połączenia bezprzewodowe"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Wyłączanie połączeń bezprzewodowych..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Włączanie połączeń bezprzewodowych..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Opcje bezprzewodowe"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Sieci zwykłe i bezprzewodowe"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Zarządzaj połączeniami Wi-Fi i Bluetooth, trybem samolotowym, sieciami komórkowymi i VPN."</string>
<string name="roaming" msgid="3596055926335478572">"Dane w roamingu"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Połącz z usługami transmisji danych w roamingu"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Wybierz format daty"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Sortuj alfabetycznie"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Sortuj według strefy czasowej"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Lokalizacja i blokady"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Lokalizacja i zabezpieczenia"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Ustaw funkcję Moja lokalizacja, odblokowywanie ekranu, blokadę karty SIM, blokadę magazynu danych logowania."</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Ustaw funkcję Moja lokalizacja, odblokowywanie ekranu, blokadę magazynu danych uwierzytelniania"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Hasła"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Włącz Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Ustawienia Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Ustawienia Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Zarządzaj połączeniami, ustaw nazwę urządzenia i możliwość wykrycia"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Żądanie parowania Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Informacje o urządzeniu Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Wpisz kod PIN, aby sparować."\n"(Spróbuj użyć kodu 0000 lub 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Aby powiązać z „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”, potwierdź, że przedstawiony został klucz: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Powiąż"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Nie wykonuj powiązania"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Uwaga"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Wystąpił problem podczas parowania z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Wystąpił problem podczas parowania z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Wpisany kod PIN jest nieprawidłowy."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Nie można nawiązać połączenia z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Powiązanie odrzucone przez urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Wystąpił problem podczas łączenia z urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Połącz z siecią…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Multimedia"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transfer"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Połączono z funkcją audio multimediów"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Połączono z funkcją audio telefonu"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Połączono z funkcją audio telefonu i multimediów"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profile"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Połączono z funkcją audio multimediów"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Połączono z funkcją audio telefonu"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Połączono z serwerem transferu plików"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Brak połączenia z serwerem transferu plików"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Użyj dla funkcji audio multimediów"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Użyj dla funkcji audio telefonu"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Użyj do transferu plików"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Włącz Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Zabezpieczenia"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Otwarta"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Nieznane"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"sieć otwarta"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"zabezpieczona protokołem WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"zabezpieczone protokołem WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"zabezpieczone protokołem WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"zabezpieczone protokołem WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"zabezpieczone protokołem IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Adres IP"</string>
<string name="signal" msgid="1947969631626413228">"Siła sygnału"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Włączanie..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Tożsamość anonimowa"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certyfikat klienta"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certyfikat urzędu certyfikacji"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Hasło do klucza prywatnego"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Hasło sieci bezprzewodowej"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Klucz szesnastkowy WEP (0–9, A–F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Pokaż hasło."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Rozłączona"</string>
<string name="status_failed" msgid="610462050405904601">"Niepowodzenie"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Dźwięk i wyświetlacz"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Ustawienia dźwięku"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ustaw dzwonki, powiadomienia, jasność ekranu"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Tryb cichy"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Powiadomienia karty SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Odtwarzaj dźwięk dla powiadomień o karcie SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Odtwarzaj dźwięk dla powiadomień o karcie SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Synchronizacja danych"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Wybierz, które aplikacje są synchronizowane"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Konta i synchronizacja"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Dodaj lub usuń konta i zmień ich ustawienia"</string>
<string name="search_settings" msgid="1910951467596035063">"Szukaj"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Zarządzaj ustawieniami i historią wyszukiwania"</string>
<string name="display_settings" msgid="3912042046350078328">"Ustawienia wyświetlacza"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Dostosuj jasność ekranu"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Wygaszanie ekranu"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Dostosuj opóźnienie automatycznego wyłączenia ekranu"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Ustawienia blokady karty SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Ustaw blokadę SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Blokada karty SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Informacje o telefonie"</string>
<string name="device_status" msgid="607405385799807324">"Informacje o telefonie"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Numer telefonu, sygnał itd."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Karta SD i pamięć"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Odłącz kartę SD, pokaż ilość dostępnej pamięci w telefonie"</string>
<string name="status_number" msgid="5123197324870153205">"Mój numer telefonu"</string>
<string name="status_min_number" msgid="3519504522179420597">"Numer MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Użyj satelit GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Ustalanie położenia z dokładnością do ulicy (wyłącz, aby oszczędzać baterię)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Podaje dokładne położenie (zużywa więcej baterii, działa na zewnątrz)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Włącz wspomagany system GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Używaj serwera do wspierania systemu GPS (usuń zaznaczenie, aby zmniejszyć ruch sieciowy)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Używaj serwera do wspierania systemu GPS (wybierz, aby zwiększyć wydajność systemu GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Udostępnij dla Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Zezwalaj Google na korzystanie z danych o lokalizacji w celu polepszenia wyszukiwania oraz innych usług"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Zezwalaj Google na korzystanie z danych o lokalizacji w celu polepszenia wyników wyszukiwania oraz innych usług"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Czy chcesz zezwalać Google na korzystanie z informacji o lokalizacji w celu poprawy wyników wyszukiwania oraz innych usług?"</string>
<string name="agree" msgid="6288718671527758326">"Zgadzam się"</string>
<string name="disagree" msgid="6221069272309799230">"Nie zgadzam się"</string>
<string name="about_settings" msgid="1743378368185371685">"Informacje o telefonie"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Ta aplikacja ma dostęp do następujących funkcji telefonu:"</string>
<string name="computing_size" msgid="1599186977475211186">"Przetwarzanie..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Nie można obliczyć rozmiaru pakietu"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Nie zainstalowano żadnych aplikacji innych firm."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Nie masz zainstalowanych żadnych aplikacji innych firm."</string>
<string name="version_text" msgid="9189073826278676425">"wersja <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Regionalne i język"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Uruchomione usługi"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Wyświetl i kontroluj obecnie uruchomione usługi"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Ponowne uruchamianie"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Brak uruchomionych usług"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Zatrzymać usługę?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Usługa nie będzie działać, dopóki nie zostanie ponownie uruchomiona przez odpowiednią aplikację. Może to mieć niepożądane konsekwencje."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Zatrzymaj"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Anuluj"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: wybierz, aby zarządzać"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Język i klawiatura"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Określ ustawienia regionalne (język i region) oraz opcje wprowadzania tekstu i autokorekty"</string>
<string name="language_category" msgid="3391756582724541530">"Ustawienia regionalne"</string>
<string name="text_category" msgid="6342540511465136739">"Ustawienia tekstu"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Debugowanie USB jest przeznaczone wyłącznie do celów programistycznych. Może posłużyć do kopiowania danych między komputerem a urządzeniem, instalowania aplikacji w urządzeniu bez powiadamiania, a także odczytywania danych dziennika."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Wybierz gadżet"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Wybierz widżet"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Szczegóły dla identyfikatora UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Szczegóły dotyczące identyfikatora UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"Identyfikator UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Szczegóły wykorzystania sieci dla <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Odebranych bajtów: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplikacja"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Licznik"</string>
<string name="usage_time_label" msgid="295954901452833058">"Czas użycia"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Ułatwienia dostępu"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Zarządzaj opcjami ułatwień dostępu"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Ułatwienia dostępu"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Usługi ułatwień dostępu"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Czas aktywności urządzenia"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi na czas"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi na czas"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Szczegóły użycia baterii"</string>
<string name="details_subtitle" msgid="32593908269911734">"Szczegóły użycia"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Dostosuj wykorzystanie energii"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Użycie baterii przez Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Wyłącz Wi-Fi, gdy nie jest używane i w miejscach, gdzie nie jest dostępne"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Użycie baterii przez bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Wyłącz bluetooth, gdy nie jest używany"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Wyłącz moduł Bluetooth, gdy nie jest używany"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Spróbuj połączyć się z innym urządzeniem bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Użycie baterii przez działające aplikacje"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Zatrzymaj lub odinstaluj aplikację"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Odśwież"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"System operacyjny Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Serwer mediów"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Synteza mowy"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Przetwarzanie tekstu na mowę"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Ustaw opcje zamiany tekstu na mowę"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Sterowanie syntezatorem mowy"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Zawsze używaj moich ustawień"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"To jest przykład syntezy mowy."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Ustawienia zostały zmienione. Oto przykład aktualnie skonfigurowanego brzmienia."</string>
<string name="gadget_title" msgid="7455548605888590466">"Zarządzanie energią"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Aktualizowanie ustawień Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Aktualizowanie ustawień Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Ustawienia sieci VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Połącz z %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Połącz z siecią <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nazwa użytkownika:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Hasło:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"nazwa użytkownika"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Rozłącz z siecią"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Edytuj sieć"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Usuń sieć"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Musisz wprowadzić wartość: %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Musisz wybrać wartość: %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"Nazwa sieci VPN „%s” już istnieje. Wybierz inną nazwę."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Musisz wprowadzić wartość <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Musisz wybrać opcję <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"Nazwa sieci VPN „<xliff:g id="NAME">%s</xliff:g>” już istnieje. Wybierz inną nazwę."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Czy na pewno chcesz usunąć tę sieć VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Czy na pewno nie chcesz utworzyć tego profilu?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Czy na pewno chcesz odrzucić zmiany wprowadzone w tym profilu?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"W tej konfiguracji połączenia VPN brakuje co najmniej jednego klucza tajnego. Czy chcesz sprawdzić ustawienie klucza tajnego?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Wprowadzono nieprawidłową nazwę użytkownika lub hasło. Czy chcesz spróbować ponownie?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Serwer przerwał połączenie. Wprowadzona nazwa użytkownika lub hasło mogą być niepoprawne. Czy chcesz spróbować jeszcze raz?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Serwer przerwał połączenie. Istnieje możliwość, że używana zapora sieciowa uniemożliwia nawiązanie połączenia z serwerem. Czy chcesz spróbować ponownie?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Negocjowanie połączenia z serwerem nie powiodło się. Serwer może nie akceptować wybranej opcji szyfrowania. Czy chcesz sprawdzić ustawienie szyfrowania?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Dodaj sieć VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Dodaj sieć VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Dodaj sieć VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Szczegóły profilu %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Dodaj sieć VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Szczegóły profilu <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"Sieci VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Łączenie..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Rozłączanie..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Połącz z siecią"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nazwa sieci VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"nazwa sieci VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"Dodano: %s"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Wprowadzanie zmian w %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"Dodano profil „<xliff:g id="NAME">%s</xliff:g>”"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Wprowadzanie zmian w profilu „<xliff:g id="NAME">%s</xliff:g>”"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Ustaw certyfikat użytkownika"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certyfikat użytkownika"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"certyfikat użytkownika"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nazwa serwera sieci VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Domeny wyszukiwania DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Domeny wyszukiwania DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"Wartość %s jest ustawiona"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"Wartość %s nie jest ustawiona"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"Wartość %s (opcjonalna) nie jest ustawiona"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Włącz %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Wyłącz %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"Opcja %s jest włączona"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"Opcja %s jest wyłączona"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"Wartość <xliff:g id="VALUE">%s</xliff:g> jest ustawiona"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"Wartość <xliff:g id="VALUE">%s</xliff:g> nie jest ustawiona"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"Wartość <xliff:g id="VALUE">%s</xliff:g> (opcjonalna) nie jest ustawiona"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Włącz opcję <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Wyłącz opcję <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"Opcja <xliff:g id="OPTION">%s</xliff:g> jest włączona"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"Opcja <xliff:g id="OPTION">%s</xliff:g> jest wyłączona"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Ustawienia sieci VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Konfiguruj wirtualne sieci prywatne (VPN) i zarządzaj nimi"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(nie zmieniono)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Zezwalaj aplikacjom na dostęp do bezpiecznych certyfikatów i innych danych logowania"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Wprowadź hasło"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Wprowadź hasło magazynu danych logowania."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Ustaw hasło"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Ustaw lub zmień hasło magazynu danych logowania"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Ustaw hasło"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Bieżące hasło:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nowe hasło:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Potwierdź nowe hasło:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Ustaw hasło magazynu danych logowania."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Ustaw hasło magazynu danych logowania."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Wprowadź prawidłowe hasło."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Wprowadź prawidłowe hasło. Pozostała jedna próba wprowadzenia prawidłowego hasła – później zawartość magazynu danych logowania zostanie wymazana."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Wprowadź prawidłowe hasło. Liczba pozostałych prób wprowadzenia prawidłowego hasła, zanim zawartość magazynu danych logowania zostanie wymazana: %d."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Wprowadź prawidłowe hasło. Liczba pozostałych prób wprowadzenia prawidłowego hasła, zanim zawartość magazynu danych logowania zostanie wymazana: <xliff:g id="NUMBER">%d</xliff:g>."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Hasła nie są identyczne."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Musisz wprowadzić i potwierdzić hasło."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Wprowadź hasło."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Wprowadź hasło ponownie. Hasło musi mieć co najmniej 8 znaków i nie może zawierać spacji."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Wprowadź nazwę."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Wprowadź nazwę, która zawiera tylko litery i cyfry."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Nie można zapisać certyfikatu. Kliknij przycisk OK, aby ponowić próbę."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Certyfikat nie został zapisany."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Magazyn danych uwierzytelniania został wyczyszczony."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Magazyn danych logowania jest włączony."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"Dodano: %s."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"Dane logowania <xliff:g id="CREDENTIAL">%s</xliff:g> zostały dodane."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Sygnał alarmowy"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Skonfiguruj sposób działania w przypadku połączenia alarmowego"</string>
</resources>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index 2a6579a..192b9de 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacífico"</item>
<item msgid="8392017019801393511">"Todas"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Não são apresentadas animações de janela"</item>
+ <item msgid="4460915688877708508">"São apresentadas algumas animações de janela"</item>
+ <item msgid="488968798204105119">"São apresentadas todas as animações de janela"</item>
+ <item msgid="5835565817235114270">"São apresentadas algumas animações de janela mais lentas"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 segundos"</item>
<item msgid="8881760709354815449">"30 segundos"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiano"</item>
<item msgid="5811378076054402537">"Espanhol"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automático"</item>
- <item msgid="5434666299123318296">"Nenhum"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA pessoal"</item>
- <item msgid="1977424472734732392">"WPA2 pessoal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Nenhum"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA pessoal"</item>
- <item msgid="8928468573279595315">"WPA2 pessoal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automático"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 9ae1b64..ff41bb3 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Pedido de emparelhamento de Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Pedido de emparelhamento"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Seleccionar emparelhamento com "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Seleccionador de dispositivo Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Definições de data e hora"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Desactivar todas as ligações sem fios"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"A desactivar ligações sem fios..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"A activar ligações sem fios…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Controlos sem fios"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Sem fios e redes"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Gerir Wi-Fi, Bluetooth, modo de avião, redes móveis e VPNs"</string>
<string name="roaming" msgid="3596055926335478572">"Roaming de dados"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Ligar a serviços de dados em roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Seleccionar formato de data"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Ordenar alfabeticamente"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Ordenar por fuso horário"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Segurança e localização"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Localização e segurança"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Definir A minha localização, desbloqueio do ecrã, bloqueio do cartão SIM, bloqueio do armazenamento de credenciais"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Definir O meu local, desbloqueio do ecrã, bloqueio do armazenamento de credenciais"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Palavras-passe"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Ligar Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Definições de Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Definições de Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Gerir ligações, definir nome e detectabilidade do dispositivo"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Pedido de emparelhamento de Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Informações sobre dispositivo Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Introduza o PIN para emparelhar."\n"(Tente 0000 ou 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Para emparelhar com \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", confirme que está a mostrar a passkey: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Par"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Não emparelhar"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Atenção"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Ocorreu um problema ao emparelhar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Ocorreu um problema ao emparelhar com <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque o PIN introduzido não está correcto."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Não é possível estabelecer comunicação com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Emparelhamento rejeitado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Ocorreu um problema ao ligar a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Ligar a..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Multimédia"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefone"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transferir"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Ligado ao áudio de multimédia"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Ligado ao áudio do telefone"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Ligado ao áudio do telefone e de multimédia"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Perfis"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ligado ao áudio de multimédia"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ligado ao áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ligado ao servidor de transferência de ficheiros"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Não ligado ao servidor de transferência de ficheiros"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Utilizar para áudio de multimédia"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Utilizar para áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Utilizar para transferência de ficheiros"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Activar Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Segurança"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Abrir"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Desconhecido"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"rede aberta"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"protegido por WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"protegido por WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"protegido por WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"protegido por WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"protegido com IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Endereço IP"</string>
<string name="signal" msgid="1947969631626413228">"Intensidade do sinal"</string>
<string name="wifi_starting" msgid="6710266609710860129">"A ligar..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Identidade anónima"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificado cliente"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"certificado CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Palavra-passe da chave privada"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Palavra-passe de ligação sem fios"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Chave WEP hexadecimal (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Mostrar palavra-passe."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Desligado"</string>
<string name="status_failed" msgid="610462050405904601">"Sem sucesso"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Som e visualização"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Definições de som"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Definir toques, notificações, brilho do ecrã"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notificações do cartão SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Reproduzir som para notificações do cartão SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproduzir som para notificações do cartão SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Sincronização de dados"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Seleccionar as aplicações sincronizadas"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Contas e sincronização"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Adicionar ou remover contas e alterar definições de contas"</string>
<string name="search_settings" msgid="1910951467596035063">"Pesquisar"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Gerir definições e histórico de pesquisa"</string>
<string name="display_settings" msgid="3912042046350078328">"Definições do visor"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ajustar o brilho do ecrã"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Tempo limite do ecrã"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Ajustar o tempo limite até à desactivação automática do ecrã"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Definições de bloqueio do cartão SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Configurar bloqueio do cartão SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Bloqueio do cartão SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Estado"</string>
<string name="device_status" msgid="607405385799807324">"Estado"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Número de telefone, sinal, etc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Armazenamento do telefone e cartão SD"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar cartão SD, ver armazenamento disponível"</string>
<string name="status_number" msgid="5123197324870153205">"O meu número de telefone"</string>
<string name="status_min_number" msgid="3519504522179420597">"MINUTOS"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Activar satélites de GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Ao localizar, determinar a localização exacta ao nível da rua (anular selecção para preservar a bateria)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localizar ao nível da rua (exige mais bateria e vista do céu)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Activar GPS assistido"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Utilizar o servidor para assistir o GPS (anular selecção para reduzir a utilização da rede)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Utilizar o servidor para assistir o GPS (seleccione para melhorar o desempenho GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Partilhar com a Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Permitir que o Google utilize a localização para pesquisa melhorada e outros serviços"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Permitir que o Google utilize a localização para resultados de pesquisa melhorada e outros serviços"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Pretende permitir que o Google utilize a localização para resultados de pesquisa melhorados e outros serviços?"</string>
<string name="agree" msgid="6288718671527758326">"Concordo"</string>
<string name="disagree" msgid="6221069272309799230">"Discordar"</string>
<string name="about_settings" msgid="1743378368185371685">"Acerca do telefone"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Esta aplicação pode aceder aos seguintes itens no seu telefone:"</string>
<string name="computing_size" msgid="1599186977475211186">"A calcular..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Impossível calcular tamanho do pacote"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Não tem nenhuma aplicação de terceiros instalada."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Não tem nenhuma aplicação de terceiros instalada."</string>
<string name="version_text" msgid="9189073826278676425">"versão <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Região e texto"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Serviços em execução"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Ver e controlar os serviços actualmente em execução"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"A reiniciar"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Não existem serviços em execução"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Parar serviço?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"O serviço deixará de ser executado até que seja novamente iniciado pela respectiva aplicação. Isto pode acarretar consequências indesejáveis."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Parar"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: seleccionar para gestão"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Idioma e teclado"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Definir opções de região (idioma e região), entrada de texto e correcção automática"</string>
<string name="language_category" msgid="3391756582724541530">"Definição de região"</string>
<string name="text_category" msgid="6342540511465136739">"Definições de texto"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"A depuração USB é utilizada apenas para fins de programação. Pode ser utilizada para copiar dados entre o computador e o dispositivo, instalar aplicações no dispositivo sem notificação e ler dados do registo."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Escolher miniaplicação"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Escolher widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detalhes de UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detalhes de UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Detalhes de utilização de rede para <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recebidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplicação"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Total"</string>
<string name="usage_time_label" msgid="295954901452833058">"Tempo de utilização"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Acessibilidade"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Gerir opções de acessibilidade"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Acessibilidade"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Serviços de acessibilidade"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Hora de activação do dispositivo"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"tempo de ligação WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"tempo de ligação WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Detalhes da utilização da bateria"</string>
<string name="details_subtitle" msgid="32593908269911734">"Utilizar detalhes"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Ajustar utilização de energia"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Bateria utilizada por Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Desactivar Wi-Fi quando não estiver a ser utilizado ou não estiver disponível"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bateria utilizada pelo bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Desligar o bluetooth quando não estiver a ser utilizado"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desligar o bluetooth quando não estiver a ser utilizado"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Tente ligar a um dispositivo bluetooth diferente"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Bateria utilizada pelas aplicações quando em execução"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Parar ou desinstalar a aplicação"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Actualizar"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"SO Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Síntese de voz"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Texto para voz"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Definir opções de texto para voz"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Controlos do sintetizador de voz"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Utilizar sempre as minhas definições"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Exemplo de síntese de voz."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"As suas definições foram alteradas. Segue-se um exemplo do respectivo som."</string>
<string name="gadget_title" msgid="7455548605888590466">"Controlo de Energia"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Actualizar definição de Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Actualizar a definição do Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Definições da VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Ligar a %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nome de utilizador:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Palavra-passe:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"um nome de utilizador"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Desligado da rede"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Editar rede"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Eliminar rede"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Tem de introduzir %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"É necessário seleccionar %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"O nome VPN \"%s\" já existe. Introduza outro nome."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Tem de introduzir <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"É necessário seleccionar <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"O nome VPN \"<xliff:g id="NAME">%s</xliff:g>\" já existe. Introduza outro nome."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Tem a certeza de que pretende eliminar esta VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Tem a certeza de que não pretende criar este perfil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Tem a certeza de que pretende rejeitar as alterações efectuadas a este perfil?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Falta um ou vários segredos nesta configuração de VPN. Pretende verificar a definição de segredo?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"O nome de utilizador ou a palavra-passe que introduziu estão incorrectos. Pretende tentar novamente?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"O servidor desligou. O nome de utilizador ou a palavra-passe que introduziu podem estar incorrectos. Pretende tentar novamente?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Servidor bloqueado. É possível que esteja protegido por uma firewall que impede a ligação ao servidor. Deseja tentar novamente?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"A negociação do servidor falhou. O servidor não pode concordar com a sua opção de encriptação. Deseja confirmar a sua definição de encriptação?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Adicionar VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Adicionar VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Adicionar VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"detalhes de %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Adicionar VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Detalhes de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPNs"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"A ligar..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"A desligar..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Ligar a uma rede"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nome VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"um nome VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s foi adicionado"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Alterações a %s guardadas"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" foi adicionado"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Foram efectuadas alterações a \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Definir certificado do utilizador"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificado do utilizador"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"um certificado de utilizador"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"nome de servidor VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"domínios de pesquisa de DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"domínios de pesquisa de DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s está definido"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s não definido"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s não definido (opcional)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Activar %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Desactivar %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s está activado"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s está desactivado"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> está definido"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> não definido"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> não definido (opcional)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Activar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Desactivar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> está activado"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> está desactivado"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"definições VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Configurar e gerir VPNs (Redes Privadas Virtuais)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(não alterado)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Permitir que as aplicações acedam a certificados seguros e outras credenciais"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Introduza a palavra-passe"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Introduza a palavra-passe do armazenamento de credenciais."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Definir palavra-passe"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Definir ou alterar a palavra-passe do armazenamento de credenciais"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Definir palavra-passe"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Palavra-passe actual:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nova palavra-passe:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Confirmar nova palavra-passe:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Definir uma palavra-passe para o armazenamento de credenciais."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Definir uma palavra-passe para o armazenamento de credenciais."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Introduza a palavra-passe correcta."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Introduza a palavra-passe correcta. Tem mais uma tentativa para introduzir a palavra-passe correcta antes que o armazenamento de credenciais seja apagado."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Introduza a palavra-passe correcta. Tem mais %d tentativas para introduzir a palavra-passe correcta antes que o armazenamento de credenciais seja apagado."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Introduza a palavra-passe correcta. Tem mais <xliff:g id="NUMBER">%d</xliff:g> tentativas para introduzir a palavra-passe correcta antes que o armazenamento de credenciais seja apagado."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"As palavras-passe não coincidem."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Tem de introduzir e confirmar uma palavra-passe."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Introduza a palavra-passe."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Introduza novamente a palavra-passe. A palavra-passe deve conter, no mínimo, 8 caracteres e não deve conter espaços."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Introduza um nome."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Introduza um nome que contenha apenas letras e números."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Não é possível guardar o certificado. Clique em OK para tentar novamente."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"O certificado não está guardado."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"O armazenamento de credenciais foi apagado."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"O armazenamento de credenciais está activado."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s foi adicionado."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> foi adicionado."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tom de emergência"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Definir o comportamento quando é efectuada uma chamada de emergência"</string>
</resources>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index 70b9df3..1427c1e7 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pacífico"</item>
<item msgid="8392017019801393511">"Todos"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Nenhuma animação de janela é exibida"</item>
+ <item msgid="4460915688877708508">"Algumas animações de janela são exibidas"</item>
+ <item msgid="488968798204105119">"Todas as animações de janela são exibidas"</item>
+ <item msgid="5835565817235114270">"Animações de janela mais lentas são exibidas"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 segundos"</item>
<item msgid="8881760709354815449">"30 segundos"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italiano"</item>
<item msgid="5811378076054402537">"Espanhol"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automático"</item>
- <item msgid="5434666299123318296">"Nenhum"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA pessoal"</item>
- <item msgid="1977424472734732392">"WPA2 pessoal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Nenhum"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA pessoal"</item>
- <item msgid="8928468573279595315">"WPA2 pessoal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automático"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 31106aa..39ca3ac 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Solicitação de pareamento Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Solicitação de pareamento"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Selecione para parear "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Selecionador de dispositivo Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Configurações de data e hora"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Desativar todas as conexões sem fio"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Desativando as conexões sem fio…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Ativando conexões sem fio…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Controles sem fio"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Redes sem fio e outras"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Gerenciar rede Wi-Fi, Bluetooth, modo para avião, redes móveis e VPNs"</string>
<string name="roaming" msgid="3596055926335478572">"Roaming de dados"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Conectar aos serviços de dados quando estiver em roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Selecionar formato de data"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Classificar em ordem alfabética"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Classificar por fuso horário"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Segurança e local"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Local e segurança"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Definir o Meu local, o desbloqueio de tela, o bloqueio do cartão SIM, o bloqueio do armazenamento de credenciais"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Definir o Meu local, o desbloqueio de tela, o bloqueio do armazenamento de credenciais"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Senhas"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Ativar Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Configurações de Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Configurações de Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Gerenciar conexões, definir o nome e detecção do dispositivo"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Solicitação de pareamento Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Informações do dispositivo Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Digite o PIN para parear"\n"(tente 0000 ou 1234)."</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Para emparelhar com \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", verifique se a senha está sendo exibida: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Emparelhar"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Não emparelhar"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Atenção"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Houve um problema no pareamento com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Houve um problema ao parear com o <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, porque o PIN digitado está incorreto."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Não é possível estabelecer comunicação com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Emparelhamento rejeitado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Houve um problema na conexão com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Conectar-se a..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Mídia"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefone"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Transferir"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Conectado ao áudio da mídia"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Conectado ao áudio do telefone"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Conectado ao áudio do telefone e da mídia"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Perfis"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Conectado ao áudio da mídia"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Conectado ao áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Conectado ao servidor de transferência de arquivo"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Não está conectado ao servidor de transferência de arquivo"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Usar para áudio de mídia"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Usar para áudio do telefone"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Usado para transferência de arquivo"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Ativar Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Segurança"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Aberta"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Desconhecido"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"rede aberta"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"protegido por WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"protegido com WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"protegido com WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"protegido com WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"protegido com IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"Endereço IP"</string>
<string name="signal" msgid="1947969631626413228">"Potência do sinal"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Ativando…"</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Identidade anônima"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Certificado do cliente"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Certificado de CA"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Senha de chave privada"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Senha sem fio"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Chave hexadecimal WEP (0 a 9, A a F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Mostrar senha."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Desconectado"</string>
<string name="status_failed" msgid="610462050405904601">"Falha"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Som e tela"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Configurações de som"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Definir toques, notificações, brilho da tela"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Modo silencioso"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Notificações do cartão SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Reproduzir som para notificações do cartão SD"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Reproduzir som para notificações do cartão SD"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Sincronização de dados"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Selecionar os aplicativos que serão sincronizados"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Contas e sincronização"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Adicionar ou remover contas e alterar as configurações da conta"</string>
<string name="search_settings" msgid="1910951467596035063">"Pesquisar"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Gerenciar configurações e histórico de pesquisa"</string>
<string name="display_settings" msgid="3912042046350078328">"Configurações da tela"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ajustar o brilho da tela"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Tempo limite da tela"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Ajuste depois de quanto tempo a tela será desligada automaticamente"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Configurações de bloqueio do cartão SIM"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Configurar bloqueio do cartão SIM"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Bloqueio do cartão SIM"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Número de telefone, sinal etc."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"Cartão SD e armazenamento do telefone"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Desmontar o cartão SD, visualizar armazenamento disponível"</string>
<string name="status_number" msgid="5123197324870153205">"Meu número de telefone"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Ativar satélites GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"Durante a localização, a precisão chega no nível de rua (desmarque a seleção para conservar a bateria)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Localizar no nível da rua (exige mais bateria e visão do céu)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Ativar GPS associado"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Usar servidor para auxiliar GPS (desmarque para reduzir o uso da rede)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Usar servidor para auxiliar GPS (selecione para aprimorar o desempenho do GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Compartilhar com o Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Permitir que o Google use a localização para aprimorar a pesquisa e outros serviços"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Permitir que o Google use a localização para aprimorar os resultados de pesquisa e outros serviços"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Deseja permitir que o Google use o local para resultados de pesquisa aprimorados e outros serviços?"</string>
<string name="agree" msgid="6288718671527758326">"Concordo"</string>
<string name="disagree" msgid="6221069272309799230">"Não concordo"</string>
<string name="about_settings" msgid="1743378368185371685">"Sobre o telefone"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Este aplicativo pode acessar os seguintes itens no seu telefone:"</string>
<string name="computing_size" msgid="1599186977475211186">"Calculando…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Não é possível calcular o tamanho do pacote"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Você não tem aplicativos de terceiros instalados."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Você não tem aplicativos de terceiros instalados."</string>
<string name="version_text" msgid="9189073826278676425">"versão <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Local e texto"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Serviços em execução"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Visualizar e controlar os serviços em execução no momento"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Reiniciando"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Sem serviços em execução"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Parar o serviço?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"O serviço não será mais executado até que seja reiniciado por seu aplicativo. Isso pode trazer consequências indesejáveis."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Parar"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Cancelar"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: selecione para gerenciar"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Idioma e teclado"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Definir opções de local (idioma e região), entrada de texto e correção automática"</string>
<string name="language_category" msgid="3391756582724541530">"Configuração de local"</string>
<string name="text_category" msgid="6342540511465136739">"Configurações de texto"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"A depuração USB serve apenas para fins de desenvolvimento. Ela pode ser usada para copiar dados entre o computador e o aparelho, instalar aplicativos no seu aparelho sem notificação e ler dados de registro."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Escolher o gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Escolher widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Detalhes do UID %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Detalhes do UID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Detalhes do uso da rede do <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Bytes recebidos: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Aplicativo"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Contagem"</string>
<string name="usage_time_label" msgid="295954901452833058">"Tempo de uso"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Acessibilidade"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Gerenciar opções de acessibilidade"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Acessibilidade"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Serviços de acessibilidade"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Tempo de ativação do aparelho"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Tempo de ativação da rede WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Tempo de ativação da rede WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Detalhes de uso da bateria"</string>
<string name="details_subtitle" msgid="32593908269911734">"Detalhes de uso"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Ajustar uso de energia"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Bateria usada por Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Desativar rede Wi-Fi quando não estiver em uso ou disponível"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bateria usada por Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Desativar Bluetooth quando não estiver em uso"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Desativar Bluetooth quando não estiver em uso"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Tente conectar a um dispositivo Bluetooth diferente"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Bateria usada por aplicativos em execução"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Parar ou desinstalar o aplicativo"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Atualizar"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Sistema operacional do Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Servidor de mídia"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Sintetização de voz"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Conversão de texto em voz"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Definir opções de conversão de texto em fala"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Controles do sintetizador de voz"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Sempre usar minhas configurações"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Este é um exemplo de sintetização de voz."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Suas configurações foram alteradas. Veja um exemplo de como elas ficaram."</string>
<string name="gadget_title" msgid="7455548605888590466">"Controle de energia"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Atualizando configuração Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Atualizando configuração Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Configurações de VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Conectar a %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Conectar-se a <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Nome de usuário:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Senha:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"um nome de usuário"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Desconectar da rede"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Editar rede"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Excluir rede"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Insira %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Selecione %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"O nome de VPN \'%s\' já existe. Procure outro nome."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Insira <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Selecione <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"O nome de VPN \'<xliff:g id="NAME">%s</xliff:g>\' já existe. Procure outro nome."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Tem certeza de que deseja excluir esta VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Tem certeza de que não deseja criar esse perfil?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Tem certeza de que deseja descartar as alterações feitas nesse perfil?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Um ou mais segredos estão faltando nessa configuração de VPN. Deseja verificar sua configuração de pergunta secreta?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"O nome de usuário ou a senha inserida está incorreta. Deseja tentar novamente?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Servidor desligado. O nome de usuário ou a senha inserida talvez esteja incorreta. Deseja tentar novamente?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Servidor desconectado. Talvez você esteja atrás de um firewall que impede a conexão com o servidor. Deseja tentar novamente?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Falha na negociação do servidor. Provavelmente o servidor não concorde com a sua opção de criptografia. Deseja verificar a sua configuração de criptografia?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Adicionar VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Adicionar VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Adicionar VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Detalhes de %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Adicionar VPN <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Detalhes de <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPNs"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Conectando..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Desconectando..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Conectar-se à rede"</string>
<string name="vpn_name" msgid="1550918148476193076">"Nome da VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"um nome da VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s foi adicionado"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Foram feitas alterações em %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\'<xliff:g id="NAME">%s</xliff:g>\' foi adicionado"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Foram feitas alterações em \'<xliff:g id="NAME">%s</xliff:g>\'"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Definir certificado do usuário"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Certificado do usuário"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"um certificado do usuário"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Nome do servidor da VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Domínios de pesquisa DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"Domínios de pesquisa DNS"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s foi definido"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s não definido"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s não definido (opcional)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Ativar %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Desativar %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s foi ativado"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s foi desativado"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> foi definido"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> não definido"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> não definido (opcional)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Ativar <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Desativar<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> foi ativado"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> foi desativado"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Configurações de VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Configurar e gerenciar VPNs (Redes privadas virtuais)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(não alterado)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Permitir que os aplicativos acessem certificados seguros e outras credenciais"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Inserir senha"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Insira a senha do armazenamento de credenciais."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Definir senha"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Definir ou alterar a senha do armazenamento de credenciais"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Definir senha"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Senha atual:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nova senha:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Confirmar nova senha:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Defina uma senha para o armazenamento de credenciais."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Defina uma senha para o armazenamento de credenciais."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Insira a senha correta."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Insira a senha correta. Você tem mais uma tentativa para inserir a senha correta antes que o armazenamento de credenciais seja apagado."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Insira a senha correta. Você tem mais %d tentativas para inserir a senha correta antes que o armazenamento de credenciais seja apagado."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Insira a senha correta. Você tem mais <xliff:g id="NUMBER">%d</xliff:g> tentativas para inserir a senha correta antes que o armazenamento de credenciais seja apagado."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"As senhas não correspondem."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Insira e confirme uma senha."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Insira a senha."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Insira a senha novamente. A senha deve ter pelo menos oito caracteres sem espaços."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Insira um nome."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Insira um nome que contenha apenas letras e números."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Não foi possível salvar o certificado. Clique em OK para tentar novamente."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"O certificado não está salvo."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"O armazenamento de credenciais foi apagado."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"O armazenamento de credenciais foi ativado."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s foi adicionado."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> foi adicionado."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Tom de emergência"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Definir comportamento durante uma chamada de emergência"</string>
</resources>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index a949fb3..24c1110 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Тихий океан"</item>
<item msgid="8392017019801393511">"Все"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"В окне отображается некоторая часть анимации"</item>
+ <item msgid="4460915688877708508">"В окне отображается некоторая часть анимации"</item>
+ <item msgid="488968798204105119">"В окне отображается вся анимация"</item>
+ <item msgid="5835565817235114270">"В окне отображается некоторая часть анимации"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 секунд"</item>
<item msgid="8881760709354815449">"30 секунд"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Итальянский"</item>
<item msgid="5811378076054402537">"Испанский"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Авто"</item>
- <item msgid="5434666299123318296">"Нет"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Нет"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Авто"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 4595789..e39061b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Запрос сопряжения Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Запрос на сопряжение"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Выберите для сопряжения с "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Выбор устройства Bluetooth"</string>
<string name="date_and_time" msgid="4114084177056654663">"Настройки даты и времени"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"1:00 pm"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Отключить все беспроводные соединения"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Отключение беспроводных соединений..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Включение беспроводных соединений..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Настройки беспроводных модулей"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Беспроводные сети"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Управление Wi-Fi, Bluetooth, режимом полета, мобильными сетями и VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Интернет-роуминг"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Подключаться к службам передачи данных при роуминге"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Выбрать формат даты"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Упорядочить по алфавиту"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Упорядочить по часовому поясу"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Безопасность и место"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Местоположение и безопасность"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Настройка функции \"Мое местоположение\", разблокировка экрана и блокировка хранилища регистрационных данных"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Настройка функции \"Мое местоположение\", разблокировка экрана и блокировка хранилища регистрационных данных"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Пароли"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Включить Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Настройки Bluetooth"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Настройки Bluetooth"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Настройка подключений, видимости и имени устройства"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Запрос сопряжения Bluetooth"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Сведения об устройстве Bluetooth"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Введите PIN-код для сопряжения."\n"(Попробуйте 0000 или 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Для сопряжения с \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" подтвердите, что показывается ключ доступа: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Сопряжение"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Не устанавливать сопряжение"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Внимание"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Неполадка при сопряжении с <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Неполадка при сопряжении с <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Введен неверный PIN."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Не удается установить соединение с <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> не разрешает сопряжение."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Возникла неполадка при подключении к <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Подключить к..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Мультимедиа"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Телефон"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Передать"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Подключено к мультимедийному аудиоустройству"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Подключено к аудиоустройству телефона"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Подключено к телефону и мультимедийному аудиоустройству"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Профили"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Подключено к мультимедийному аудиоустройству"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Подключено к аудиоустройству телефона"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Установлено подключение к серверу передачи файлов"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Нет подключения к серверу передачи файлов"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Использовать для мультимедийного аудиоустройства"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Использовать для аудиоустройства телефона"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Используется для передачи файлов"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Включить Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Безопасность"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Открыть"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Неизвестно"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"открытая сеть"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"защищено WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"защищено WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"защищено WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"защищено WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"защищено IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-адрес"</string>
<string name="signal" msgid="1947969631626413228">"Громкость сигнала"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Включение..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Идентификационный код без определения личности"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Сертификат клиента"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"Сертификат центра сертификации"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Пароль закрытого ключа"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Пароль для беспроводного подключения"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Шестнадцатеричный ключ WEP (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Показать пароль."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Отключено"</string>
<string name="status_failed" msgid="610462050405904601">"Сбой"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Звук и изображение"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Настройки звука"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Настроить мелодии, уведомления, яркость экрана"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Тихий режим"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Уведомления карты SD"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Включать звук для уведомлений SD-карты"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Включать звук для уведомлений SD-карты"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Синхронизация данных"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Выбрать приложения для синхронизации"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Аккаунты и синхронизация"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Добавление или удаление аккаунтов и изменение настроек аккаунта"</string>
<string name="search_settings" msgid="1910951467596035063">"Поиск"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Управление настройками и историей поиска"</string>
<string name="display_settings" msgid="3912042046350078328">"Настройки экрана"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Настроить яркость экрана"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Время отключения экрана"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Выбрать интервал до автоматического отключения экрана"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Настройки блокировки SIM-карты"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Настроить блокировку SIM-карты"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Блокировка SIM-карты"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Состояние"</string>
<string name="device_status" msgid="607405385799807324">"Состояние"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Номер телефона, сигнал и т.д."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD-карта и память телефона"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Демонтировать SD-карту, показать доступную память"</string>
<string name="status_number" msgid="5123197324870153205">"Мой номер телефона"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Спутники GPS"</string>
<string name="location_street_level" msgid="5899941752252356344">"При определении местоположения с точностью до улицы (отмените выделения для экономии энергии батареи)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Точные координаты (требуется открытое небо и больше энергии)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Включить A-GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Использовать сервер для A-GPS (снимите флажок для менее интенсивного использования сети)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Использовать сервер для A-GPS (выбрать для улучшения работы GPS)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Отправить в Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Разрешить Google использовать данные о местоположении для улучшения результативности поиска и работы других служб"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Разрешить Google использовать данные о местоположении для улучшения результативности поиска и работы других служб"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Разрешить Google использовать данные о местоположении для улучшения результативности поиска и работы других служб?"</string>
<string name="agree" msgid="6288718671527758326">"Принимаю"</string>
<string name="disagree" msgid="6221069272309799230">"Не принимаю"</string>
<string name="about_settings" msgid="1743378368185371685">"О телефоне"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Это приложение имеет доступ к следующей информации и следующие права:"</string>
<string name="computing_size" msgid="1599186977475211186">"Вычисление..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Не удалось вычислить размер пакета"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Не обнаружено установленных приложений от независимых поставщиков."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Не обнаружено установленных приложений от независимых поставщиков."</string>
<string name="version_text" msgid="9189073826278676425">"Версия <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Регион и ввод текста"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Работающие службы"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Просмотр и управление работающими службами"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Перезапуск"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Работающие службы отсутствуют"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Остановить службу?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Служба не будет работать до запуска ее этим приложением. Это может привести к нежелательным результатам."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Стоп"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Отмена"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: выберите для управления"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Язык и клавиатура"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Выбрать язык и регион, способ ввода текста и параметры автокоррекции"</string>
<string name="language_category" msgid="3391756582724541530">"Региональные настройки"</string>
<string name="text_category" msgid="6342540511465136739">"Настройки текста"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"Отладка USB предназначена только в целях разработки. С ее помощью можно копировать данные с компьютера на мобильное устройство и обратно, устанавливать на устройство приложения без уведомления и просматривать данные журналов."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Выбор·гаджета"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Выбор виджета"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Сведения для идентификатора пользователя %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Сведения для идентификатора пользователя <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"Идентификатор пользователя <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Сведения об использовании сети приложением <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Получено байт: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Приложение"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Подсчет"</string>
<string name="usage_time_label" msgid="295954901452833058">"Время использования"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Специальные возможности"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Управление параметрами специальных возможностей"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Специальные возможности"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Службы специальных возможностей"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Время включения устройства"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Время работы WiFi"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Время работы WiFi"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Подробные сведения о расходе заряда батареи"</string>
<string name="details_subtitle" msgid="32593908269911734">"Использовать сведения"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Настроить режим энергопотребления"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Батарея используется Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Отключить модуль Wi-Fi, когда он не используется или сеть недоступна"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Заряд батареи, израсходованный Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Отключить Bluetooth, если он не используется"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Отключить Bluetooth, если он не используется"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Попробуйте подключиться к другому устройству Bluetooth"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Расход заряда батареи для работы приложений"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Остановить или удалить приложение"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Обновить"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"ОС Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Сервер медиа"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Синтез речи"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Преобразование текста в речь"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Настроить параметры преобразования текста в речь"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Элементы управления синтезатором речи"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Всегда использовать мои настройки"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Это пример синтеза речи."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Ваши настройки изменены. Вот пример того, как это звучит."</string>
<string name="gadget_title" msgid="7455548605888590466">"Управление питанием"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Обновление настроек Wi-Fi"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Обновление настроек Bluetooth"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"Настройки VPN"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Подключиться к %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Подключить к \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Имя пользователя:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Пароль:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"имя пользователя"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Отключиться от сети"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Изменить сеть"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Удалить сеть"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Необходимо ввести %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Необходимо выбрать %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN с именем \"%s\" уже существует. Выберите другое имя."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Необходимо ввести <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Необходимо выбрать <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN с названием \"<xliff:g id="NAME">%s</xliff:g>\" уже существует. Выберите другое название."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Действительно удалить эту VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Не создавать этот профиль?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Отменить все изменения этого профиля?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"В данной конфигурации VPN не хватает одного или более секретов. Проверить настройки секретов?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Вы неверно ввели имя пользователя или пароль. Повторить попытку?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Сеанс прекращен сервером. Возможно, вы неверно ввели имя пользователя или пароль. Повторить попытку?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Сбой на сервере. Возможно вы защищены брандмауэром, который не дает подключиться к серверу. Повторить попытку?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Связь с сервером не установлена. Возможно, не были согласованы параметры шифрования. Изменить настройки шифрования?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Добавить VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Добавить VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Добавить VPN %s"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"Сведения о %s"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Добавить VPN \"<xliff:g id="NAME">%s</xliff:g>\""</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Подробности: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"Сети VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Подключение..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Отключение..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Подключить к сети"</string>
<string name="vpn_name" msgid="1550918148476193076">"Имя VPN"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"имя VPN"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s добавлено"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"В %s внесены изменения"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"Профиль \"<xliff:g id="NAME">%s</xliff:g>\" добавлен"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"В профиль \"<xliff:g id="NAME">%s</xliff:g>\" внесены изменения"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Настроить пользовательский сертификат"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Сертификат пользователя"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"сертификат пользователя"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"Имя сервера VPN"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"Домены поиска DNS"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS поиска"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s установлено"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s не установлено"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s не установлено (необязательно)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Включить %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Отключить %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s включено"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s отключено"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> установлено"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> не установлено"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> не установлено (необязательно)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Включить <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Отключить <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> вкл."</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> откл."</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"Настройки VPN"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Настройка и управление виртуальными частными сетями (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(не изменялось)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Разрешить приложениям доступ к защищенным сертификатам и другим регистрационным данным"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Ввод пароля"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Введите пароль для доступа в хранилище регистрационных данных"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Установить пароль"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Установить или изменить пароль для доступа в хранилище регистрационных данных"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Установить пароль"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Текущий пароль:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Новый пароль"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Подтвердите новый пароль:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Установите пароль для доступа в хранилище регистрационных данных."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Установите пароль для доступа в хранилище регистрационных данных."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Введите правильный пароль."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Введите правильный пароль. У вас осталась одна попытка. Если вы еще раз введете неверный пароль, хранилище регистрационных данных будет стерто."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Введите правильный пароль. Осталось попыток: %d. Если верный пароль не удастся ввести, хранилище регистрационных данных будет стерто."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Введите правильный пароль. Осталось попыток: <xliff:g id="NUMBER">%d</xliff:g>. Если верный пароль не удастся ввести, хранилище регистрационных данных будет стерто."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Пароли не совпадают."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Необходимо ввести и подтвердить пароль."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Введите пароль."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Введите пароль снова. Пароль должен быть не менее 8 символов и не должен содержать пробелов."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Введите имя"</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Имя должно состоять из букв и цифр."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Не удается сохранить сертификат. Нажмите ОК для повторения попытки."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Сертификат не сохранен."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Хранилище регистрационных данных стерто."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Хранилище регистрационных данных включено."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s добавлено."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> добавлено."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Тональный сигнал экстренного вызова"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Настроить режим работы при экстренном вызове"</string>
</resources>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index 2b5ab0d..debd5a8 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Stilla havet"</item>
<item msgid="8392017019801393511">"Alla"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Inga fönsteranimeringar visas"</item>
+ <item msgid="4460915688877708508">"Vissa fönsteranimeringar visas"</item>
+ <item msgid="488968798204105119">"Alla fönsteranimeringar visas"</item>
+ <item msgid="5835565817235114270">"Långsammare fönsteranimeringar visas"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 sekunder"</item>
<item msgid="8881760709354815449">"30 sekunder"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"Italienska"</item>
<item msgid="5811378076054402537">"Spanska"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Automatiskt"</item>
- <item msgid="5434666299123318296">"Inga"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA personal"</item>
- <item msgid="1977424472734732392">"WPA2 personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Inga"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA personal"</item>
- <item msgid="8928468573279595315">"WPA2 personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Automatiskt"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1808977..8143e06 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Begäran om parkoppling för Bluetooth"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Begäran om parkoppling"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Välj att parkoppla med "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth-enhetsväljare"</string>
<string name="date_and_time" msgid="4114084177056654663">"Inställningar för datum och tid"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"Kl. 13:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Inaktivera alla trådlösa anslutningar"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Inaktiverar trådlösa anslutningar…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Aktivera trådlösa anslutningar..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Trådlösa styrenheter"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Trådlöst och nätverk"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Hantera Wi-Fi, Bluetooth, flygplansläge, mobila nätverk och VPN"</string>
<string name="roaming" msgid="3596055926335478572">"Dataroaming"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Anslut till datatjänster vid roaming"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Välj datumformat"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Sortera i bokstavsordning"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Sortera efter tidszon"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Säkerhet och plats"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Plats och säkerhet"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Ställ in Min plats, skärmupplåsning, lås för SIM-kort och lås för uppgiftslagring"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Ställ in Min plats, skärmupplåsning, lås för uppgiftslagring"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Lösenord"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Aktivera Bluetooth"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth-inställningar"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth-inställningar"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Hantera anslutningar, ange inställningar för enhetens namn och synlighet"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Begäran om Bluetooth-parkoppling"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Information om Bluetooth-enhet"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n" Ange PIN-kod för parkoppling."\n" (Försök med 0000 eller 1234.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"Om du vill parkoppla med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>bekräftar du att rätt nyckel visas: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Parkoppling"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Parkoppla inte"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Obs!"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"Ett problem inträffade när <xliff:g id="DEVICE_NAME">%1$s</xliff:g> parkopplades."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Det gick inte att parkoppla <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eftersom den angivna PIN-koden är fel."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"Det gick inte att upprätta kommunikation med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Parkoppling avvisad av <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"Det gick inte att ansluta till <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Anslut till…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Media"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Överför"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Ansluten till medialjud"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Ansluten till telefonens ljud"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Ansluten till telefon- och medialjud"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profiler"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Ansluten till medialjud"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Ansluten till telefonens ljud"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Ansluten till filöverföringsserver"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Inte ansluten till filöverföringsserver"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Använd för medialjud"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Använd för telefonens ljud"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Använd för filöverföring"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Aktivera Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Säkerhet"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Öppna"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Okänd"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"öppet nätverk"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"skyddad med WEP"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"skyddad med WPA"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"skyddad med WPA2"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"skyddad med WPA-EAP"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"skyddad med IEEE 802.1x"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP-adress"</string>
<string name="signal" msgid="1947969631626413228">"Signalstyrka"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Aktiverar…"</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Anonym identitet"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"Klientcertifikat"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA-certifikat"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Lösenord för privat nyckel"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Lösenord för trådlöst"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP-hextangent (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Visa lösenord."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Frånkopplad"</string>
<string name="status_failed" msgid="610462050405904601">"Misslyckades"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Ljud och skärm"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Ljudinställningar"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Ställ in ringsignaler, aviseringar, skärmens ljusstryka"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Tyst läge"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"Aviseringar för SD-kort"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"Spela ljud vid aviseringar för SD-kort"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"Spela ljud vid aviseringar för SD-kort"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Datasynkronisering"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Välj vilka program som ska synkroniseras"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Konton och synkronisering"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Lägg till eller ta bort konton och ändra kontoinställningar"</string>
<string name="search_settings" msgid="1910951467596035063">"Sök"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Hantera sökinställningar och historik"</string>
<string name="display_settings" msgid="3912042046350078328">"Visa inställningar"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ändra skärmens ljusstyrka"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Skärmens tidsgräns"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Justera fördröjningen innan skärmen stängs av automatiskt"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"Låsinställningar för SIM-kort"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"Ställ in lås för SIM-kort"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"Lås för SIM-kort"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Status"</string>
<string name="device_status" msgid="607405385799807324">"Status"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefonnummer, signal osv."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD-kort och telefonlagr."</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"Montera bort SD-kort, visa tillgängligt lagringsutrymme"</string>
<string name="status_number" msgid="5123197324870153205">"Mitt telefonnummer"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"Aktivera GPS-satelliter"</string>
<string name="location_street_level" msgid="5899941752252356344">"När du söker, korrekt till gatunivå (avmarkera om du vill spara batteri)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Hitta till gatunivå (kräver mer batteri och fungerar endast utomhus)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Aktivera assisterad GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"Använd servern för att förbättra GPS-funktionen (avmarkera om du vill minska nätverksbelastningen)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"Använd servern för att förbättra GPS-funktionen (markera om du vill förbättra GPS-funktionen)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Dela med Google"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Tillåt att Google använder din plats för att förbättra sökningen och andra tjänster"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Tillåt att Google använder din plats för att förbättra sökresultat och andra tjänster"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Vill du tillåta att Google använder plats för förbättrade sökresultat och andra tjänster?"</string>
<string name="agree" msgid="6288718671527758326">"Jag godkänner"</string>
<string name="disagree" msgid="6221069272309799230">"Godkänn inte"</string>
<string name="about_settings" msgid="1743378368185371685">"Om telefonen"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Med det här programmet kommer du åt följande på din telefon:"</string>
<string name="computing_size" msgid="1599186977475211186">"Beräkningar…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Det gick inte att räkna ut paketstorlek"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Du har inte installerat några program från tredje part."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Du har inte installerat några program från tredje part."</string>
<string name="version_text" msgid="9189073826278676425">"version <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Språkkod och text"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Aktiva tjänster"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Visa och styra aktiva tjänster"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Startar om"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Det finns inga aktiva tjänster"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Vill du avbryta tjänsten?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Tjänsten körs inte igen förrän den startas av programmet. Det kan ha oönskade konsekvenser."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Stopp"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"Avbryt"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: välj att hantera"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Språk och tangentbord"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Ställ in alternativ för språkkod (land och område), textinmatning och autokorrigering"</string>
<string name="language_category" msgid="3391756582724541530">"Språkkodsinställningar"</string>
<string name="text_category" msgid="6342540511465136739">"Textinställningar"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB-felsökning ska endast användas i utvecklingssyfte. Felsökningen kan användas för att kopiera data mellan datorn och enheten, installera program på enheten utan avisering och läsa loggdata."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Välj gadget"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Välj widget"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"Information för användar-id %d"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"Information för användar-ID <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"Användar-id <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"Information om nätverksanvändning för <xliff:g id="APP_NAME">%1$s</xliff:g>:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Mottagna bytes: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Program"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Räkneverk"</string>
<string name="usage_time_label" msgid="295954901452833058">"Användningstid"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Tillgänglighet"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Hantera tillgänglighetsalternativ"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Tillgänglighet"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Tjänster för tillgänglighet"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Aktiv tid för enheten"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi på sedan"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi på sedan"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> – <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Information om batteriförbrukning"</string>
<string name="details_subtitle" msgid="32593908269911734">"Information om användning"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Justera strömförbrukningen"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Batteri som förbrukats av Wi-Fi"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Inaktivera Wi-Fi när det inte används eller när det inte är tillgängligt"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Batteri som förbrukats av Bluetooth"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Inaktivera Bluetooth när du inte använder funktionen"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Inaktivera Bluetooth när du inte använder funktionen"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Försök ansluta till en annan Bluetooth-enhet"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Batteri som förbrukats av program som körs"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Avsluta eller avinstallera programmet"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Uppdatera"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Operativsystemet Android"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Mediaserver"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Talsyntes"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Text-till-tal"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Ange alternativ för text-till-tal"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Kontroller för talsynthesizer"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Använd alltid mina inställningar"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Detta är ett exempel på talsyntes."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Dina inställningar har ändrats. Detta är ett exempel på hur de låter."</string>
<string name="gadget_title" msgid="7455548605888590466">"Strömkontroll"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Uppdaterar Wi-Fi-inställningar"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Uppdatera Bluetooth-inställningar"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN-inställningar"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Anslut till %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Anslut till <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Användarnamn:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Lösenord:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"ett användarnamn"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Koppla ifrån nätverket"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Redigera nätverk"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Ta bort nätverk"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Du måste ange %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Du måste välja %s."</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN-namnet %s finns redan. Använd ett annat namn."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Du måste ange <xliff:g id="CODE">%s</xliff:g>."</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Du måste välja <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN-namnet <xliff:g id="NAME">%s</xliff:g> finns redan. Använd ett annat namn."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Vill du ta bort detta VPN?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Vill du inte skapa den här profilen?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Vill du ignorera ändringarna som gjorts i profilen?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Det saknas en eller flera hemligheter i VPN-konfigurationen. Vill du kontrollera hemlighetsinställningen?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Användarnamnet eller lösenordet som du angav var felaktigt. Vill du försöka igen?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Servern kopplade ifrån. Du kanske angav fel användarnamn eller lösenord. Vill du försöka igen?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Servern avbröt kommunikationen. Du kanske befinner dig bakom en brandvägg som förhindrar att du ansluter till servern. Vill du försöka igen?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Serveranslutningen misslyckades. Servern kanske inte accepterar ditt krypteringsval. Vill du kontrollera krypteringsinställningen?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"Lägg till VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"Lägg till VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"Lägg till %s VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s information"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"Lägg till <xliff:g id="NAME">%s</xliff:g> VPN"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"Information om <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Ansluter..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Kopplar ifrån..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Anslut till nätverk"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN-namn"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"ett VPN-namn"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s har lagts till"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"Ändringar har gjorts i %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\"<xliff:g id="NAME">%s</xliff:g>\" har lagts till"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"Ändringar har gjorts i \"<xliff:g id="NAME">%s</xliff:g>\""</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Ange användarcertifikat"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Användarcertifikat"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"ett användarcertifikat"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN-serverns namn"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS-sökdomäner"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS-sökdomäner"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s har angetts"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s har inte angetts"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s har inte angetts (valfritt)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Aktivera %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Inaktivera %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s är aktiverad"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s är inaktiverat"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> har angetts"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> ej angivet"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> har inte angetts (valfritt)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"Aktivera <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"Inaktivera <xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> är aktiverad"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> är inaktiverat"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN-inställningar"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Konfigurera och hantera virtuella privata nätverk (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(oförändrat)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Tillåt att program får åtkomst till säkra certifikat och andra uppgifter"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Ange lösenord"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Ange lösenord för lagring av uppgifter."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Ange lösenord"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Ange eller ändra lösenord för lagring av uppgifter"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Ange lösenord"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Nuvarande lösenord:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Nytt lösenord:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Bekräfta det nya lösenordet:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Ange ett lösenord för uppgiftslagring."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Ange ett lösenord för uppgiftslagring."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Ange rätt lösenord."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Ange rätt lösenord. Du har ett försök på dig att ange rätt lösenord, därefter raderas uppgiftslagringen."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Ange rätt lösenord. Du har %d försök på dig att ange rätt lösenord, därefter raderas uppgiftslagringen."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Ange rätt lösenord. Du har <xliff:g id="NUMBER">%d</xliff:g> försök på dig att ange rätt lösenord, därefter raderas uppgiftslagringen."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Lösenorden stämmer inte överens."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Du måste ange och bekräfta ett lösenord."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Ange lösenordet."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Ange lösenordet igen. Lösenordet måste vara minst 8 tecken och får inte innehålla blanksteg."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Ange ett namn."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Ange ett namn som endast innehåller bokstäver och siffror."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Det gick inte att spara certifikatet. Klicka på OK om du vill försöka igen."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Certifikatet sparas inte."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Uppgiftslagringen raderades."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Uppgiftslagring är aktiverat."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s har lagts till."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> har lagts till."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Nödsignal"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Ange beteende vid nödsamtal"</string>
</resources>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index e57a5f9..0d0ddb9 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"Pasifik"</item>
<item msgid="8392017019801393511">"Tümü"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"Hiçbir pencere animasyonu gösterilmiyor"</item>
+ <item msgid="4460915688877708508">"Bazı pencere animasyonları gösterilir"</item>
+ <item msgid="488968798204105119">"Tüm pencere animasyonları gösterilir"</item>
+ <item msgid="5835565817235114270">"Daha yavaş pencere animasyonları gösterilir"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 saniye"</item>
<item msgid="8881760709354815449">"30 saniye"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"İtalyanca"</item>
<item msgid="5811378076054402537">"İspanyolca"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"Otomatik"</item>
- <item msgid="5434666299123318296">"Hiçbiri"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA kişisel"</item>
- <item msgid="1977424472734732392">"WPA2 kişisel"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"Hiçbiri"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA kişisel"</item>
- <item msgid="8928468573279595315">"WPA2 kişisel"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"Otomatik"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 5ad2104..cbb8c8f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"Bluetooth eşleşme isteği"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"Eşleşme isteği"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"Eşleşmek için seç "</string>
+ <string name="device_picker" msgid="8721012448931226323">"Bluetooth cihazı seçicisi"</string>
<string name="date_and_time" msgid="4114084177056654663">"Tarih ve saat ayarları"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"13:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"Tüm kablosuz bağlantıları devre dışı bırak"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"Kablosuz bağlantılar devre dışı bırakılıyor…"</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"Kablosuz bağlantılar etkinleştiriliyor…"</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"Kablosuz denetimler"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"Kablosuz özelliği ve ağlar"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"Kablosuz, Bluetooth özelliklerini, uçak modunu, mobil ağları ve VPN\'leri yönet"</string>
<string name="roaming" msgid="3596055926335478572">"Veri dolaşımı"</string>
<string name="roaming_enable" msgid="3737380951525303961">"Dolaşırken veri hizmetlerine bağlan"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"Tarih biçimini seç"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"Alfabetik olarak sırala"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"Saat dilimine göre sırala"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"Güvenlik ve konum"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"Konum ve güvenlik"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"Konumum, ekran kilidini açma, SIM kart kilidi, kimlik bilgileri deposu kilidi özelliklerini ayarla"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Konumum, ekran kilidi açma, kimlik bilgileri deposunun kilidi özelliklerini ayarla"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"Şifreler"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"Bluetooth"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"Bluetooth\'u aç"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"Bluetooth ayarları"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"Bluetooth ayarları"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"Bağlantıları yönet, cihaz adını gir ve keşfedilebilirlik ayarını yap"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"Bluetooth eşleşme isteği"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"Bluetooth cihaz bilgileri"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"Eşleşmek için PIN kodunu yazın."\n"(0000 ve 1234\'ü deneyin.)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"\"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" ile eşleştirmek için, şu passkey kodunu gösterdiğini doğrulayın: <xliff:g id="PASSKEY">%2$s</xliff:g>."</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"Çift"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"Eşleştirme"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"Dikkat"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eşleşmede bir sorun oluştu."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"Yazılan PIN kodu yanlış olduğundan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eşleşmede bir sorun oldu."</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile bağlantı kurulamıyor."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"Eşleştirme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tarafından reddedildi."</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> noktasına bağlanırken bir sorun oluştu."</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"Bağlan…"</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"Medya"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"Telefon"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"Aktar"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"Medya sesine bağlanıldı"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"Telefon sesine bağlandı"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"Telefon ve medya sesine bağlandı"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"Profiller"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"Medya sesine bağlanıldı"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"Telefon sesine bağlandı"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"Dosya aktarım sunucusuna bağlandı"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"Dosya aktarım sunucusuna bağlanmadı"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"Medya sesi için kullan"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"Telefon sesi için kullan"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"Dosya aktarımı için kullan"</string>
<string name="wifi" msgid="1081550856200013637">"Kablosuz"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Kablosuz"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"Kablosuzu aç"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"Güvenlik"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"Aç"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"Bilinmiyor"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"güvensiz ağ"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"WEP ile güvenlik altına alındı"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"WPA ile güvenlik altına alındı"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"WPA2 ile güvenlik altına alındı"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"WPA-EAP ile güvenlik altına alındı"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"IEEE 802.1x ile güvenlik altına alındı"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP adresi"</string>
<string name="signal" msgid="1947969631626413228">"Sinyal gücü"</string>
<string name="wifi_starting" msgid="6710266609710860129">"Açılıyor…"</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"Bilinmeyen kimlik"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"İstemci sertifikası"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA sertifikası"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"Özel anahtar şifresi"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"Kablosuz şifresi"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"Onaltılık WEP anahtarı (0-9, A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"Şifreyi göster."</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"Bağlantı kesildi"</string>
<string name="status_failed" msgid="610462050405904601">"Başarısız"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"Ses ve görüntü"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"Ses ayarları"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"Zil seslerini, bildirimleri, ekran parlaklığını ayarla"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"Sessiz mod"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD kart bildirimleri"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"SD kart bildirimleri için ses yürüt"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"SD kart bildirimleri için ses yürüt"</string>
- <string name="sync_settings" msgid="2212736205476453234">"Veri senkronizasyonu"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"Senkronize edilecek uygulamaları seç"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"Hesaplar ve senkronizasyon"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"Hesapları ekle veya kaldır ve hesap ayarlarını değiştir"</string>
<string name="search_settings" msgid="1910951467596035063">"Ara"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"Arama ayarlarını ve geçmişi yönet"</string>
<string name="display_settings" msgid="3912042046350078328">"Ekran ayarları"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"Ekranın parlaklığını ayarla"</string>
<string name="screen_timeout" msgid="4882669461447531301">"Ekran zaman aşımı"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"Ekran otomatik olarak kapanmadan önceki gecikmeyi ayarla"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"SIM kart kilit ayarları"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"SIM kart kilidini ayarla"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM kart kilidi"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"Durum"</string>
<string name="device_status" msgid="607405385799807324">"Durum"</string>
<string name="device_status_summary" msgid="2599162787451519618">"Telefon numarası, sinyal vb."</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD kart ve telefon depolama alanı"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"SD kartın bağlantısını kes, kull. Depolama alanını görüntüle"</string>
<string name="status_number" msgid="5123197324870153205">"Telefon numaram"</string>
<string name="status_min_number" msgid="3519504522179420597">"MİN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"GPS uydularını etkinleştir"</string>
<string name="location_street_level" msgid="5899941752252356344">"Yer bulunurken sokak düzeyinde kesinlik (pilden tasarruf etmek için seçimi kaldırın)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"Sokak düzeyinde yer bul (daha fazla pil ve gökyüzü görünümü gerektirir)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"Desteklenmiş GPS\'yi etkinleştir"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"GPS\'ye destek olmak için sunucu kullan (ağ kullanımını azaltmak için seçimi iptal et)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"GPS\'ye yardımcı olmak için sunucu kullan (GPS performansını iyileştirmek için seçin)"</string>
<string name="use_location_title" msgid="7585990952633568732">"Google ile paylaş"</string>
<string name="use_location_summary" msgid="4411467143899877395">"Google\'ın gelişmiş arama ve diğer hizmetler için konum kullanmasına izin ver"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"Google\'ın gelişmiş arama sonuçları ve diğer hizmetler için konum kullanmasına izin ver"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"Google\'a gelişmiş arama sonuçları ve diğer hizmetler için konum kullanma izni vermek istiyor musunuz?"</string>
<string name="agree" msgid="6288718671527758326">"Kabul ediyorum"</string>
<string name="disagree" msgid="6221069272309799230">"Kabul etmiyorum"</string>
<string name="about_settings" msgid="1743378368185371685">"Telefon hakkında"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"Bu uygulama telefonunuzda aşağıdakilere erişebilir:"</string>
<string name="computing_size" msgid="1599186977475211186">"Hesaplanıyor…"</string>
<string name="invalid_size_value" msgid="1901940003700269523">"Paket boyutu hesaplanamıyor"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"Yüklü üçüncü taraf uygulamanız yok."</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"Yüklenmiş hiçbir üçüncü taraf uygulamalarınız yok."</string>
<string name="version_text" msgid="9189073826278676425">"sürüm <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"Yerel ayar ve metin"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"Çalışan hizmetler"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"Şu anda çalışan hizmetleri görüntüleyin ve denetleyin"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"Yeniden başlatılıyor"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"Çalışan hizmet yok"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"Hizmet durdurulsun mu?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"Hizmet, uygulaması tarafından tekrar başlatılana kadar çalışmayacaktır. Bu, istenmeyen sonuçlara neden olabilir."</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"Durdur"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"İptal"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>: yönetmek için seçin"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"Dil ve klavye"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"Yer (dil ve bölge), metin girişi ve ot. düzeltme seçeneklerini ayarla"</string>
<string name="language_category" msgid="3391756582724541530">"Yerel ayar"</string>
<string name="text_category" msgid="6342540511465136739">"Metin ayarları"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB hata ayıklaması yalnızca geliştirme amaçlıdır. Verileri bilgisayarınızla cihazınız arasında kopyalamak, bildirim göndermeksizin uygulamaları cihazınıza yüklemek ve günlük verilerini okumak için kullanılabilir."</string>
<string name="gadget_picker_title" msgid="98374951396755811">"Gadget seç"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"Widget seç"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"UID %d ayrıntıları"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g> ayrıntıları"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g> için ağ kullanım ayrıntıları:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"Alınan bayt: <xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"Uygulama"</string>
<string name="launch_count_label" msgid="4019444833263957024">"Sayım"</string>
<string name="usage_time_label" msgid="295954901452833058">"Kullanım süresi"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"Erişebilirlik"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"Erişebilirlik seçeneklerini yönet"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"Erişebilirlik"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"Erişebilirlik hizmetleri"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"Cihazın açılma zamanı"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"Kablosuz özelliğinin açık olduğu süre"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"Kablosuz özelliğinin açık olduğu süre"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - %%<xliff:g id="PERCENT">%2$s</xliff:g>"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"Pil kullanım bilgileri"</string>
<string name="details_subtitle" msgid="32593908269911734">"Ayrıntıları kullan"</string>
<string name="controls_subtitle" msgid="390468421138288702">"Pil kullanımını ayarla"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Kablosuz özellik tarafından kullanılan pil"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"Kullanmadığınız veya kullanılamadığı zaman Kablosuz özelliğini kapatın"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"Bluetooth tarafından kullanılan pil"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"Bluetooth\'u kullanmadığınız zamanlarda kapatın"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"Bluetooth\'u kullanmadığınız zamanlarda kapatın"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"Farklı bir Bluetooth cihazına bağlanmaya çalış"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"Çalışan uygulamalar tarafından kullanılan pil"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"Uygulamayı durdur veya kaldır"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"Yenile"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android İS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"Medya sunucusu"</string>
- <string name="tts_settings" msgid="6454363854545277027">"Konuşma sentezi"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"Metin-konuşma"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"Metni konuşma seçeneklerine göre ayarla"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"Konuşma sentezleyici kontrolleri"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"Her zaman benim ayarlarımı kullan"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"Bu bir konuşma sentezi örneğidir."</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"Ayarlarınız değişti. Bu nasıl duyulacakları ile ilgili bir örnektir."</string>
<string name="gadget_title" msgid="7455548605888590466">"Güç Denetimi"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"Kablosuz ayarı güncelleniyor"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"Bluetooth ayarları güncelleniyor"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN ayarları"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"Şuna bağlan: %s"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"Şuna bağlan: <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"Kullanıcı adı:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"Şifre:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"bir kullanıcı adı"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"Ağ bağlantısını kes"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"Ağı düzenle"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"Ağı sil"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"Şunu girmelisiniz: %s."</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"Şunu seçmelisiniz: %s"</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"\'%s\' VPN adı zaten var. Başka bir ad bulun."</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"Şunu girmelisiniz: <xliff:g id="CODE">%s</xliff:g>"</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"Şunu seçmelisiniz: <xliff:g id="OPTION">%s</xliff:g>."</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"\'<xliff:g id="NAME">%s</xliff:g>\' VPN adı zaten var. Başka bir ad bulun."</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"Bu VPN\'yi silmek istediğinizden emin misiniz?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"Bu profili oluşturmak istemediğinizden emin misiniz?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"Bu profilde yapılan değişiklikleri silmek istediğinizden emin misiniz?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"Bu VPN yapılandırmasında bir veya birden fazla gizli bilgi eksik. Gizli ayarınızı kontrol etmek ister misiniz?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"Girdiğiniz kullanıcı adı veya şifre yanlış. Tekrar denemek istiyor musunuz?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"Sunucu bağlantısı kesildi. Girdiğiniz kullanıcı adı veya şifre yanlış olabilir. Tekrar denemek istiyor musunuz?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"Sunucu engellendi. Sunucuya bağlanmanıza engel olan bir güvenlik duvarının ardında bulunuyor olabilirsiniz. Tekrar denemek ister misiniz?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"Sunucu anlaşması başarısız oldu. Sunucu şifreleme seçeneğiniz ile uyuşmuyor olabilir. Şifreleme ayarınızı kontrol etmek istiyor musunuz?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"VPN ekle"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"VPN ekle"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"%s VPN ekle"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s ayrıntıları"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"<xliff:g id="NAME">%s</xliff:g> VPN\'si ekle"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g> ayrıntıları"</string>
<string name="vpns" msgid="3148141862835492816">"VPN\'ler"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"Bağlanıyor..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"Bağlantı kesiliyor..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"Ağa bağlan"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN adı"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"bir VPN adı"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"%s eklendi"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"%s üzerinde değişiklikler yapıldı"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"\'<xliff:g id="NAME">%s</xliff:g>\' eklendi"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"\'<xliff:g id="NAME">%s</xliff:g>\' üzerinde değişiklikler yapıldı"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"Kullanıcı sertifikasını ayarla"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"Kullanıcı sertifikası"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"bir kullanıcı sertifikası"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN sunucu adı"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS arama alanları"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS arama alanları"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"%s ayarlanmış"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"%s ayarlanmadı"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"%s gönderilmedi (isteğe bağlı)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"Şunu etkinleştir: %s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"Devre dışı bırak: %s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"%s etkinleştirildi"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"%s devre dışı bırakıldı"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> ayarlandı"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> ayarlanmadı"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> ayarlanmadı (isteğe bağlı)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"<xliff:g id="OPTION">%s</xliff:g> seçeneğini etkinleştir"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"<xliff:g id="OPTION">%s</xliff:g> seçeneğini devre dışı bırak"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"<xliff:g id="OPTION">%s</xliff:g> etkinleştirildi"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"<xliff:g id="OPTION">%s</xliff:g> devre dışı bırakıldı"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN ayarları"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"Sanal Özel Ağlar (VPN\'ler) Kur ve Yönet"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(değişmedi)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"Uygulamaların güvenli sertifikalara ve diğer kimlik bilgilerine erişmesine izin ver"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"Şifreyi girin"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"Kimlik bilgileri deposunun şifresini girin."</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"Şifreyi ayarla"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"Kimlik bilgileri deposunun şifresini ayarla veya değiştir"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"Şifreyi ayarla"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"Geçerli şifre:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"Yeni şifre:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"Yeni şifreyi doğrulayın:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"Kimlik bilgileri deposu için şifre ayarlayın."</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"Kimlik bilgileri deposu için şifre ayarlayın."</string>
<string name="cstor_password_error" msgid="2917326097260402464">"Lütfen doğru şifreyi girin."</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"Lütfen doğru şifreyi girin. Kimlik bilgileri deposu silinmeden önce doğru şifreyi girmek için son bir deneme hakkınız var."</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"Lütfen doğru şifreyi girin. Kimlik bilgileri deposu silinmeden önce doğru şifreyi girmek için %d kez deneme hakkınız var."</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"Lütfen doğru şifreyi girin. Kimlik bilgileri deposu silinmeden önce doğru şifreyi girmek için <xliff:g id="NUMBER">%d</xliff:g> deneme hakkınız var."</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"Şifreler eşleşmiyor."</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"Bir şifre girerek doğrulamalısınız."</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"Lütfen şifreyi girin."</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"Lütfen şifreyi tekrar girin. Şifre en az 8 karakter uzunluğunda olmalı ve boşluk içermemelidir."</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"Lütfen bir ad girin."</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"Lütfen yalnızca harf ve sayılardan oluşan bir ad girin."</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"Sertifika kaydedilemedi. Tekrar denemek için Tamam\'ı tıklayın."</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"Sertifika kaydedilmemiş."</string>
<string name="cstor_is_reset" msgid="449870501126790589">"Kimlik bilgileri deposu silinmiş."</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"Kimlik bilgileri deposu etkinleştirildi."</string>
- <string name="cstor_is_added" msgid="794788474010251572">"%s eklendi."</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"<xliff:g id="CREDENTIAL">%s</xliff:g> eklendi."</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"Acil sesi"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"Acil bir arama yapıldığında nasıl işlev göreceğini ayarlayın"</string>
</resources>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index 5362d2e..342e40c 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"太平洋"</item>
<item msgid="8392017019801393511">"全部"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"未显示窗口动画"</item>
+ <item msgid="4460915688877708508">"显示部分窗口动画"</item>
+ <item msgid="488968798204105119">"显示所有窗口动画"</item>
+ <item msgid="5835565817235114270">"显示慢速播放的窗口动画"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 秒"</item>
<item msgid="8881760709354815449">"30 秒"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"意大利语"</item>
<item msgid="5811378076054402537">"西班牙语"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"自动"</item>
- <item msgid="5434666299123318296">"无"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"无"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"自动"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index b83ddcf..6243479 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"蓝牙配对请求"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"配对请求"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"选择要配对的对象 "</string>
+ <string name="device_picker" msgid="8721012448931226323">"蓝牙设备选择器"</string>
<string name="date_and_time" msgid="4114084177056654663">"日期和时间设置"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"下午 1:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"停用所有无线连接"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"正在停用无线连接..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"正在启用无线连接..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"无线控件"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"无线和网络设置"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"管理 Wi-Fi、蓝牙、飞行模式、移动网络和 VPN"</string>
<string name="roaming" msgid="3596055926335478572">"数据漫游"</string>
<string name="roaming_enable" msgid="3737380951525303961">"漫游时连接数据服务"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"选择日期格式"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"按字母顺序排序"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"按时区排序"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"安全性和位置"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"地点和安全"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"设置我的位置、屏幕解锁、SIM 卡锁定和凭据存储锁定"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"设置我的位置、屏幕解锁和凭据存储锁定"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"密码"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"蓝牙"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"打开蓝牙"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"蓝牙设置"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"蓝牙设置"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"管理连接,设置设备名称和可检测性"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"蓝牙配对请求"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"蓝牙设备信息"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"输入 PIN 进行配对。"\n"(尝试一下 0000 或 1234。)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"要与“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”配对,请核实其中是否显示匹配密钥:<xliff:g id="PASSKEY">%2$s</xliff:g>。"</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"配对"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"不要配对"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"注意"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"与<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配对时出现问题。"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"与<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配对时出现问题,因为输入的 PIN 不正确。"</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"无法与 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 建立通信连接。"</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 已拒绝配对。"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"连接到<xliff:g id="DEVICE_NAME">%1$s</xliff:g>时出现问题。"</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"连接到..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"媒体"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"手机"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"传输"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"已连接到媒体音频"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"已连接到手机音频"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"已连接到手机和媒体音频"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"个人资料"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"已连接到媒体音频"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"已连接到手机音频"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"已连接到文件传输服务器"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"未连接到文件传输服务器"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"用于媒体音频"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"用于手机音频"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"用于文件传输"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"打开 Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"安全性"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"打开"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"未知"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"开放网络"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"通过 WEP 保护"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"通过 WPA 保护"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"通过 WPA2 保护"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"通过 WPA-EAP 保护"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"通过 IEEE 802.1x 保护"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP 地址"</string>
<string name="signal" msgid="1947969631626413228">"信号强度"</string>
<string name="wifi_starting" msgid="6710266609710860129">"正在打开..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"匿名身份"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"客户端证书"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA 证书"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"私钥密码"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"无线密码"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP 十六进制键(0-9、A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"显示密码。"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"已断开连接"</string>
<string name="status_failed" msgid="610462050405904601">"失败"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"声音和显示"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"声音设置"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"设置铃声、通知和屏幕亮度"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"静音模式"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD 卡通知"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"播放 SD 卡通知音效"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"播放 SD 卡通知音效"</string>
- <string name="sync_settings" msgid="2212736205476453234">"数据同步"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"选择要同步的应用程序"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"帐户与同步"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"添加或删除帐户和更改帐户设置"</string>
<string name="search_settings" msgid="1910951467596035063">"搜索"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"管理搜索设置和历史记录"</string>
<string name="display_settings" msgid="3912042046350078328">"显示设置"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"调整屏幕亮度"</string>
<string name="screen_timeout" msgid="4882669461447531301">"屏幕待机"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"调整屏幕自动关闭前的延迟"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"SIM 卡锁定设置"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"设置 SIM 卡锁定"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM 卡锁定"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"状态"</string>
<string name="device_status" msgid="607405385799807324">"状态"</string>
<string name="device_status_summary" msgid="2599162787451519618">"电话号码、信号等"</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD 卡和手机存储"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"卸下 SD 卡,查看可用的存储空间"</string>
<string name="status_number" msgid="5123197324870153205">"本机号码"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"启用 GPS 卫星"</string>
<string name="location_street_level" msgid="5899941752252356344">"定位时可精确到街道级别(取消选中可节约电量)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"定位到街道级别(需要消耗更多电量以及天气允许)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"启用增强型 GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"用服务器来辅助 GPS(取消选中可降低网络使用率)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"用服务器来辅助 GPS(选中可提高 GPS 性能)"</string>
<string name="use_location_title" msgid="7585990952633568732">"与 Google 分享"</string>
<string name="use_location_summary" msgid="4411467143899877395">"允许 Google 用地点信息改善搜索和其他服务"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"允许 Google 用地点信息提供令人更满意的搜索结果,以及改善其他服务"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"是否允许 Google 使用位置信息改善搜索结果和其他服务?"</string>
<string name="agree" msgid="6288718671527758326">"同意"</string>
<string name="disagree" msgid="6221069272309799230">"不同意"</string>
<string name="about_settings" msgid="1743378368185371685">"关于手机"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"此应用程序有权访问手机上的以下内容:"</string>
<string name="computing_size" msgid="1599186977475211186">"正在计算..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"无法计算包大小"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"您没有安装任何第三方企业应用套件。"</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"未安装任何第三方应用程序。"</string>
<string name="version_text" msgid="9189073826278676425">"版本 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"语言区域和文字"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"正在运行的服务"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"查看与控制当前正在运行的服务"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"正在重新启动"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"当前未运行任何服务"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"是否停止服务?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"服务只有在通过其应用程序重新启动之后,才可以继续运行。但这可能会带来意想不到的结果。"</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"取消"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>:选择以进行管理"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"语言和键盘"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"设置语言区域(语言和区域)、文字输入和自动更正选项"</string>
<string name="language_category" msgid="3391756582724541530">"语言区域设置"</string>
<string name="text_category" msgid="6342540511465136739">"文字设置"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB 调试仅适用于开发工作。可将其用于在计算机和移动设备之间复制数据,在没有通知的情况下在移动设备中安装应用程序,以及读取日志数据。"</string>
<string name="gadget_picker_title" msgid="98374951396755811">"选择小工具"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"选择窗口小部件"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"有关用户 ID %d 的详情"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"有关用户 ID <xliff:g id="NUMBER">%d</xliff:g> 的详情"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"用户 ID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"有关<xliff:g id="APP_NAME">%1$s</xliff:g>的网络使用详情:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"收到的字节数:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"应用程序"</string>
<string name="launch_count_label" msgid="4019444833263957024">"次数"</string>
<string name="usage_time_label" msgid="295954901452833058">"使用时间"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"辅助功能"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"管理辅助功能选项"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"辅助功能"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"辅助服务"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"设备唤醒时间"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi 已启用时间"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 已启用时间"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"电量使用详情"</string>
<string name="details_subtitle" msgid="32593908269911734">"详细使用情况"</string>
<string name="controls_subtitle" msgid="390468421138288702">"调配电量"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Wi-Fi 所耗的电量"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"不使用 Wi-Fi 或其不可用时将其关闭"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"蓝牙所耗的电量"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"不使用蓝牙时将其关闭"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"请在未使用蓝牙功能时将其关闭"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"正在尝试连接另一蓝牙设备"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"运行应用程序时所耗的电量"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"停止或卸载应用程序"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"刷新"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android OS"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"媒体服务器"</string>
- <string name="tts_settings" msgid="6454363854545277027">"语音合成"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"文字到语音转换"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"设置文字到语音转换选项"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"语音合成器控件"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"始终使用我的设置"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"这是语音合成示例。"</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"设置已发生变化。这是声音效果示例。"</string>
<string name="gadget_title" msgid="7455548605888590466">"电量控制"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"正在更新 Wi-Fi 设置"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"正在更新蓝牙设置"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN 设置"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"连接“%s”"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"连接到 <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"用户名:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"密码:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"用户名"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"断开与网络的连接"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"修改网络"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"删除网络"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"必须输入“%s”。"</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"必须选择“%s”。"</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"已有 VPN 名称“%s”。请换个名称。"</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"必须输入<xliff:g id="CODE">%s</xliff:g>。"</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"必须选择<xliff:g id="OPTION">%s</xliff:g>。"</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN 名称“<xliff:g id="NAME">%s</xliff:g>”已存在。请换用其他名称。"</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"确定要删除此 VPN 吗?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"确定不想创建此个人资料吗?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"确定要舍弃对此个人资料所做的更改吗?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"此 VPN 配置中缺少一个或多个密钥。是否要检查密钥设置?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"输入的用户名或密码不正确。是否要再试一次?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"服务器已暂停。输入的用户名或密码可能不正确。是否要再试一次?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"服务器已挂起。可能是防火墙阻止了您与服务器的连接。是否要重试?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"服务器协商失败。该服务器可能不认可您的加密选项。是否要检查您的加密设置?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"添加 VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"添加 VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"添加 VPN“%s”"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s 详情"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"添加 VPN“<xliff:g id="NAME">%s</xliff:g>”"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"“<xliff:g id="NAME">%s</xliff:g>”详情"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"正在连接..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"正在断开连接..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"连接网络"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN 名称"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"VPN 名称"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"“%s”已添加"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"已更改 %s"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"已添加“<xliff:g id="NAME">%s</xliff:g>”"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"已更改“<xliff:g id="NAME">%s</xliff:g>”"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"设置用户证书"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"用户证书"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"用户证书"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN 服务器名称"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS 搜索范围"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS 搜索范围"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"“%s”已设置"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"“%s”未设置"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"“%s”未设置(可选)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"启用“%s”"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"停用“%s”"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"“%s”已启用"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"“%s”已停用"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"<xliff:g id="VALUE">%s</xliff:g> 已设置"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"<xliff:g id="VALUE">%s</xliff:g> 未设置"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"<xliff:g id="VALUE">%s</xliff:g> 未设置(可选)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"启用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"停用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"已启用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"已停用<xliff:g id="OPTION">%s</xliff:g>"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN 设置"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"设置和管理虚拟专用网 (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(未更改)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"允许应用程序访问安全凭据和其他凭据"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"输入密码"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"输入凭据存储密码。"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"设置密码"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"设置或更改凭据存储密码"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"设置密码"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"当前密码:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"新密码:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"确认新密码:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"对凭据存储设置密码。"</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"对凭据存储设置密码。"</string>
<string name="cstor_password_error" msgid="2917326097260402464">"请输入正确的密码。"</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"请输入正确的密码。删除该凭据存储之前,还有一次机会尝试输入正确的密码。"</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"请输入正确的密码。删除该凭据存储之前,还有 %d 次机会尝试输入正确的密码。"</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"请输入正确的密码。在系统删除该凭据存储之前,您还有 <xliff:g id="NUMBER">%d</xliff:g> 次输入正确密码的机会。"</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"密码不匹配。"</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"必须输入并确认密码。"</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"请输入密码。"</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"请再输入一次密码。密码必须至少有 8 个字符,不得含有空格。"</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"请输入名称。"</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"请输入仅包含字母和数字的名称。"</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"无法保存该证书。点击“确认”可重试。"</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"该证书未保存。"</string>
<string name="cstor_is_reset" msgid="449870501126790589">"该凭据存储已删除。"</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"凭据存储已启用。"</string>
- <string name="cstor_is_added" msgid="794788474010251572">"“%s”已添加。"</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"已添加<xliff:g id="CREDENTIAL">%s</xliff:g>。"</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"紧急提示音"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"设置进行紧急呼叫时的行为"</string>
</resources>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index 0f3cb31..16a8a35 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -24,6 +24,16 @@
<item msgid="5345178126174698955">"太平洋"</item>
<item msgid="8392017019801393511">"全部"</item>
</string-array>
+ <!-- no translation found for animations_entries:0 (207790005475613429) -->
+ <!-- no translation found for animations_entries:1 (6291186755504776720) -->
+ <!-- no translation found for animations_entries:2 (3856065399819979491) -->
+ <!-- no translation found for animations_entries:3 (4463430425852416111) -->
+ <string-array name="animations_summaries">
+ <item msgid="4569165952409350897">"不顯示視窗動畫"</item>
+ <item msgid="4460915688877708508">"顯示部分視窗動畫"</item>
+ <item msgid="488968798204105119">"顯示所有視窗動畫"</item>
+ <item msgid="5835565817235114270">"顯示較慢的視窗動畫"</item>
+ </string-array>
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 秒"</item>
<item msgid="8881760709354815449">"30 秒"</item>
@@ -54,23 +64,10 @@
<item msgid="5972100016440094433">"義大利文"</item>
<item msgid="5811378076054402537">"西班牙文"</item>
</string-array>
- <string-array name="wifi_security_entries">
- <item msgid="2923732046112398627">"自動"</item>
- <item msgid="5434666299123318296">"無"</item>
- <item msgid="3159594845889645948">"WEP"</item>
- <item msgid="6303607119537134095">"WPA Personal"</item>
- <item msgid="1977424472734732392">"WPA2 Personal"</item>
- <item msgid="5185669984217684689">"WPA-EAP"</item>
- <item msgid="8643206823103498303">"IEEE 802.1x"</item>
- </string-array>
- <string-array name="wifi_security_without_auto_entries">
- <item msgid="4402120432904877907">"無"</item>
- <item msgid="2329148995431627488">"WEP"</item>
- <item msgid="2296204649410509235">"WPA Personal"</item>
- <item msgid="8928468573279595315">"WPA2 Personal"</item>
- <item msgid="8319241197948974314">"WPA-EAP"</item>
- <item msgid="2222409752754955757">"IEEE 802.1x"</item>
- </string-array>
+ <!-- no translation found for wifi_security_entries:3 (1687348101566181433) -->
+ <!-- no translation found for wifi_security_entries:4 (329777238762866787) -->
+ <!-- no translation found for wifi_security_without_auto_entries:2 (6903317668294332381) -->
+ <!-- no translation found for wifi_security_without_auto_entries:3 (7280821339307729710) -->
<string-array name="wifi_wep_type">
<item msgid="1497433962958697183">"自動"</item>
<item msgid="7182335713815377158">"WEP ASCII"</item>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 4ca76be..b7e4dbd 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -104,6 +104,7 @@
<string name="bluetooth_notif_ticker" msgid="4726721390078512173">"藍牙配對要求"</string>
<string name="bluetooth_notif_title" msgid="2485175521845371514">"配對要求"</string>
<string name="bluetooth_notif_message" msgid="5381418499788668724">"選取要配對的裝置 "</string>
+ <string name="device_picker" msgid="8721012448931226323">"藍牙裝置選取器"</string>
<string name="date_and_time" msgid="4114084177056654663">"日期與時間設定"</string>
<string name="date_time_12_hour_sample" msgid="3259617262618020574">"下午 1:00"</string>
<string name="date_time_24_hour_sample" msgid="8916857570746212357">"13:00"</string>
@@ -196,7 +197,9 @@
<string name="airplane_mode_summary" msgid="3154817401368780988">"停用所有的無線網路連線"</string>
<string name="airplane_mode_turning_on" msgid="8871739222526957255">"停用無線網路連線中..."</string>
<string name="airplane_mode_turning_off" msgid="3393168549611505996">"啟用無線網路連線中..."</string>
- <string name="radio_controls_title" msgid="8356991079873437337">"無線網路控制"</string>
+ <string name="radio_controls_title" msgid="5868688473587168882">"無線與網路"</string>
+ <!-- no translation found for wireless_networks_settings_title (149274247949769551) -->
+ <skip />
<string name="radio_controls_summary" msgid="2998818677094465517">"管理 Wi-Fi、藍牙、飛行模式、行動網路和 VPN"</string>
<string name="roaming" msgid="3596055926335478572">"漫游服務"</string>
<string name="roaming_enable" msgid="3737380951525303961">"漫遊時連線到資料傳輸服務"</string>
@@ -219,20 +222,37 @@
<string name="date_time_date_format" msgid="436706100255870967">"選取日期格式"</string>
<string name="zone_list_menu_sort_alphabetically" msgid="5683377702671088588">"依照字母排序"</string>
<string name="zone_list_menu_sort_by_timezone" msgid="2720190443744884114">"依時區排序"</string>
- <string name="security_settings_title" msgid="4918904614964215087">"安全性與位置"</string>
+ <string name="security_settings_title" msgid="5168491784222013179">"位置與安全性"</string>
+ <!-- no translation found for location_security_settings_title (4624434296446625554) -->
+ <skip />
<string name="security_settings_summary" msgid="967393342537986570">"設定我的位置、畫面解鎖、SIM 卡鎖定、認證儲存空間鎖定"</string>
+ <string name="cdma_security_settings_summary" msgid="6068799952798901542">"設定我的位置、解除鎖定畫面及鎖定認證儲存空間"</string>
<string name="security_passwords_title" msgid="2930627259125138363">"密碼"</string>
<string name="bluetooth_quick_toggle_title" msgid="1037056952714061893">"藍牙"</string>
<string name="bluetooth_quick_toggle_summary" msgid="5293641680139873341">"開啟藍牙"</string>
<string name="bluetooth_settings" msgid="2725796451253089609">"藍牙設定"</string>
<string name="bluetooth_settings_title" msgid="2824020086246268296">"藍牙設定"</string>
<string name="bluetooth_settings_summary" msgid="2091062709530570462">"管理連線、設定裝置名稱與可偵測性"</string>
- <string name="bluetooth_pin_entry" msgid="5627349871303455279">"藍牙配對要求"</string>
+ <!-- no translation found for bluetooth_pairing_request (6385750334766370310) -->
+ <skip />
<string name="bluetooth_device_info" msgid="6644515376523965073">"藍牙裝置資訊"</string>
- <string name="bluetooth_enter_pin_msg" msgid="7551139612735632370">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>"\n\n"輸入 PIN 進行配對。"\n"(請嘗試 0000 或 1234。)"</string>
+ <!-- no translation found for bluetooth_enter_pin_msg (856962526754150334) -->
+ <skip />
+ <!-- no translation found for bluetooth_enter_passkey_msg (8121515818772179228) -->
+ <skip />
+ <string name="bluetooth_confirm_passkey_msg" msgid="1205362283945104263">"如要與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對,請確定裝置顯示以下密碼金鑰:<xliff:g id="PASSKEY">%2$s</xliff:g>。"</string>
+ <!-- no translation found for bluetooth_incoming_pairing_msg (1076613564387784476) -->
+ <skip />
+ <!-- no translation found for bluetooth_display_passkey_msg (3048496029389441579) -->
+ <skip />
+ <string name="bluetooth_pairing_accept" msgid="6163520056536604875">"配對"</string>
+ <string name="bluetooth_pairing_decline" msgid="930951069988011471">"不要配對"</string>
+ <!-- no translation found for bluetooth_remote_device (2406662802908395389) -->
+ <skip />
<string name="bluetooth_error_title" msgid="538287072376677166">"注意"</string>
<string name="bluetooth_pairing_error_message" msgid="2852744547246910349">"與<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配對時發生問題。"</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="6938408362011024289">"由於輸入的 PIN 不正確,因此無法與<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配對。"</string>
+ <!-- no translation found for bluetooth_pairing_pin_error_message (6065697229258906937) -->
+ <skip />
<string name="bluetooth_pairing_device_down_error_message" msgid="6688215193824686741">"無法與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」建立通訊。"</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="1648157108520832454">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」拒絕配對要求。"</string>
<string name="bluetooth_connecting_error_message" msgid="1779660510084746802">"連接至<xliff:g id="DEVICE_NAME">%1$s</xliff:g>時發生問題。"</string>
@@ -246,6 +266,7 @@
<string name="bluetooth_connect_specific_profiles_title" msgid="6952214406025825164">"連線到..."</string>
<string name="bluetooth_profile_a2dp" msgid="3259633293424539529">"媒體"</string>
<string name="bluetooth_profile_headset" msgid="1874975688666658946">"電話"</string>
+ <string name="bluetooth_profile_opp" msgid="3799470046565284440">"傳輸"</string>
<string name="bluetooth_summary_connected_to_a2dp" msgid="510833839847758664">"連接至媒體音訊"</string>
<string name="bluetooth_summary_connected_to_headset" msgid="4876496372728623918">"連接至電話音訊"</string>
<string name="bluetooth_summary_connected_to_a2dp_headset" msgid="3045032710457800891">"連接至電話和媒體音訊"</string>
@@ -255,8 +276,11 @@
<string name="bluetooth_device_advanced_profile_header_title" msgid="3764437426089639639">"設定檔"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"連接至媒體音訊"</string>
<string name="bluetooth_headset_profile_summary_connected" msgid="7661070206715520671">"連接至電話音訊"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2611913495968309066">"已連線到檔案傳輸伺服器"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"不要連線到檔案傳輸伺服器"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"用於媒體音訊"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"用於電話音訊"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"用於傳輸檔案"</string>
<string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
<string name="wifi_quick_toggle_title" msgid="874495178395350104">"Wi-Fi"</string>
<string name="wifi_quick_toggle_summary" msgid="1047950931623694366">"開啟 Wi-Fi"</string>
@@ -273,17 +297,17 @@
<string name="security" msgid="1040691896987225267">"安全性"</string>
<string name="wifi_security_open" msgid="3513305614048816607">"開啟"</string>
<string name="wifi_security_wep" msgid="7082604129842065776">"WEP"</string>
- <string name="wifi_security_wpa" msgid="8980169410565477162">"WPA"</string>
- <string name="wifi_security_wpa2" msgid="5780665935088930524">"WPA2"</string>
- <string name="wifi_security_wpa_eap" msgid="7485687331651751101">"WPA-EAP"</string>
- <string name="wifi_security_ieee8021x" msgid="8538687609878109005">"IEEE8021X"</string>
+ <!-- no translation found for wifi_security_psk (3392399380570381452) -->
+ <skip />
+ <!-- no translation found for wifi_security_eap (8309434150934969132) -->
+ <skip />
<string name="wifi_security_unknown" msgid="4564208312073060668">"未知的"</string>
<string name="wifi_security_verbose_open" msgid="8117878112088901945">"開放網路"</string>
<string name="wifi_security_verbose_wep" msgid="9220757688700421508">"以 WEP 保護連線安全性"</string>
- <string name="wifi_security_verbose_wpa" msgid="598697674252714455">"以 WPA 保護連線安全性"</string>
- <string name="wifi_security_verbose_wpa2" msgid="4116236883347875722">"以 WPA2 保護連線安全性"</string>
- <string name="wifi_security_verbose_wpa_eap" msgid="1984821646949066624">"以 WPA-EAP 保護連線安全性"</string>
- <string name="wifi_security_verbose_ieee8021x" msgid="5552995793910186310">"以 IEEE 802.1x 保護連線安全性"</string>
+ <!-- no translation found for wifi_security_verbose_psk (1110130025330416225) -->
+ <skip />
+ <!-- no translation found for wifi_security_verbose_eap (586632662086063) -->
+ <skip />
<string name="ip_address" msgid="850672263358989449">"IP 位址"</string>
<string name="signal" msgid="1947969631626413228">"訊號強度"</string>
<string name="wifi_starting" msgid="6710266609710860129">"開啟中..."</string>
@@ -302,7 +326,6 @@
<string name="please_type_anonymous_identity" msgid="835061562079965048">"匿名識別"</string>
<string name="please_select_client_certificate" msgid="2137906961594663234">"用戶端憑證"</string>
<string name="please_select_ca_certificate" msgid="5010815181914420677">"CA 憑證"</string>
- <string name="please_type_private_key_passwd" msgid="4077744679722504443">"私密金鑰密碼"</string>
<string name="please_type_passphrase" msgid="8256017704131522462">"無線網路密碼"</string>
<string name="please_type_hex_key" msgid="8751224390407867551">"WEP hex key (0-9,A-F)"</string>
<string name="wifi_show_password" msgid="4235237470701732009">"顯示密碼"</string>
@@ -360,6 +383,8 @@
<string name="status_disconnected" msgid="7561688569905126046">"已中斷連線"</string>
<string name="status_failed" msgid="610462050405904601">"失敗"</string>
<string name="sound_and_display_settings" msgid="349770582993029003">"音效與顯示"</string>
+ <!-- no translation found for sound_and_display_settings_title (5036144539683697330) -->
+ <skip />
<string name="sound_settings" msgid="5007659014828162881">"音效設定"</string>
<string name="sound_and_display_settings_summary" msgid="1433943789593286064">"設定鈴聲、通知與螢幕亮度"</string>
<string name="silent_mode_title" msgid="3181479108593217704">"靜音模式"</string>
@@ -388,8 +413,8 @@
<string name="play_media_notification_sounds_enable_title" msgid="1008791464029179529">"SD 卡通知"</string>
<string name="play_media_notification_sounds_enable_summary_on" msgid="7675466959375667370">"播放 SD 卡通知音效"</string>
<string name="play_media_notification_sounds_enable_summary_off" msgid="8672617597028744693">"播放 SD 卡通知音效"</string>
- <string name="sync_settings" msgid="2212736205476453234">"資料同步處理"</string>
- <string name="sync_settings_summary" msgid="6480534906375217074">"選取要同步處理的應用程式"</string>
+ <string name="sync_settings" msgid="9186125469300013491">"帳戶與同步處理"</string>
+ <string name="sync_settings_summary" msgid="2962179505214965667">"新增或移除帳戶和變更帳戶設定"</string>
<string name="search_settings" msgid="1910951467596035063">"搜尋"</string>
<string name="search_settings_summary" msgid="9205656546570654169">"管理搜尋設定和記錄"</string>
<string name="display_settings" msgid="3912042046350078328">"顯示設定"</string>
@@ -403,6 +428,8 @@
<string name="brightness_summary" msgid="838917350127550703">"調整螢幕亮度"</string>
<string name="screen_timeout" msgid="4882669461447531301">"螢幕逾時"</string>
<string name="screen_timeout_summary" msgid="2905757633140605334">"調整螢幕自動關閉前的延遲時間"</string>
+ <!-- no translation found for automatic_brightness (5014143533884135461) -->
+ <skip />
<string name="sim_lock_settings" msgid="3392331196873564292">"SIM 卡鎖定設定"</string>
<string name="sim_lock_settings_category" msgid="5136244267576697004">"設定 SIM 卡鎖定"</string>
<string name="sim_lock_settings_title" msgid="9018585580955414596">"SIM 卡鎖定"</string>
@@ -436,7 +463,10 @@
<string name="device_status_activity_title" msgid="1411201799384697904">"狀態"</string>
<string name="device_status" msgid="607405385799807324">"狀態"</string>
<string name="device_status_summary" msgid="2599162787451519618">"電話號碼、訊號等。"</string>
- <string name="storage_settings_title" msgid="8461515684514801302">"SD 卡與手機儲存"</string>
+ <!-- no translation found for storage_settings (6681164315506788024) -->
+ <skip />
+ <!-- no translation found for storage_settings_title (5379463509034022773) -->
+ <skip />
<string name="storage_settings_summary" msgid="9176693537325988610">"卸載 SD 卡,檢視可用儲存媒體。"</string>
<string name="status_number" msgid="5123197324870153205">"我的電話號碼"</string>
<string name="status_min_number" msgid="3519504522179420597">"MIN"</string>
@@ -521,9 +551,12 @@
<string name="location_gps" msgid="375912731641377120">"啟用 GPS 衛星接收器"</string>
<string name="location_street_level" msgid="5899941752252356344">"定位時,精準度設定為街道等級 (取消選取此項可較省電)"</string>
<string name="location_gps_disabled" msgid="6632537158777308128">"定位至街道等級 (需要更多電力及天候允許)"</string>
+ <string name="assisted_gps" msgid="245743826674562912">"啟用輔助 GPS"</string>
+ <string name="assisted_gps_enabled" msgid="4942865222779287424">"使用伺服器輔助 GPS (取消選取可降低網路使用量)"</string>
+ <string name="assisted_gps_disabled" msgid="5626923671782348802">"使用伺服器輔助 GPS (選取可提升 GPS 效能)"</string>
<string name="use_location_title" msgid="7585990952633568732">"與 Google 分享"</string>
<string name="use_location_summary" msgid="4411467143899877395">"允許 Google 使用位置資訊來改善搜尋與其他服務"</string>
- <string name="use_location_warning_message" msgid="5696732842038416151">"允許 Google 使用位置資訊來改善搜尋結果與其他服務"</string>
+ <string name="use_location_warning_message" msgid="1420184860518262439">"要允許 Google 使用位置資訊改善搜尋結果與其他服務嗎?"</string>
<string name="agree" msgid="6288718671527758326">"同意"</string>
<string name="disagree" msgid="6221069272309799230">"不同意"</string>
<string name="about_settings" msgid="1743378368185371685">"關於手機"</string>
@@ -620,9 +653,26 @@
<string name="security_settings_desc" msgid="3116027624526915561">"此應用程式可存取您電話中的下列項目:"</string>
<string name="computing_size" msgid="1599186977475211186">"計算中..."</string>
<string name="invalid_size_value" msgid="1901940003700269523">"無法計算封裝大小"</string>
- <string name="empty_list_msg" msgid="1883660401486953588">"您未安裝任何第三方應用程式。"</string>
+ <string name="empty_list_msg" msgid="2901049162265094971">"您未安裝任何第三方應用程式。"</string>
<string name="version_text" msgid="9189073826278676425">"版本 <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
- <string name="language_settings" msgid="2939555761536357092">"地區設定與文字"</string>
+ <string name="runningservices_settings_title" msgid="8097287939865165213">"正在運作的服務"</string>
+ <string name="runningservices_settings_summary" msgid="854608995821032748">"查看並控制目前正在運作的服務"</string>
+ <string name="service_restarting" msgid="2242747937372354306">"重新啟動中"</string>
+ <string name="no_running_services" msgid="6981216347270280598">"沒有正在運作的服務"</string>
+ <string name="confirm_stop_service" msgid="5700448757318301681">"要停止服務嗎?"</string>
+ <string name="confirm_stop_service_msg" msgid="2530344831367597886">"服務已停止運作,除非應用程式再次予以啟動;這可能會產生不良的後果。"</string>
+ <string name="confirm_stop_stop" msgid="7382363913280993331">"停止"</string>
+ <string name="confirm_stop_cancel" msgid="206495326622692381">"取消"</string>
+ <!-- no translation found for service_started_by_app (2611669867072561918) -->
+ <skip />
+ <string name="service_client_name" msgid="6645152045851445666">"<xliff:g id="CLIENT_NAME">%1$s</xliff:g>:選取即可管理"</string>
+ <!-- no translation found for service_background_processes (4590194788473181747) -->
+ <skip />
+ <!-- no translation found for service_foreground_processes (6033218875756846671) -->
+ <skip />
+ <string name="language_settings" msgid="502219872342167227">"語言與鍵盤"</string>
+ <!-- no translation found for language_keyboard_settings_title (3455826933385341107) -->
+ <skip />
<string name="language_settings_summary" msgid="595647729475399987">"選取地區設定 (語言和地區)、文字輸入和自動校正選項"</string>
<string name="language_category" msgid="3391756582724541530">"地區設定"</string>
<string name="text_category" msgid="6342540511465136739">"文字設定"</string>
@@ -680,7 +730,7 @@
<string name="adb_warning_message" msgid="5352555112049663033">"USB 偵錯是針對應用程式開發而設計的功能,可讓您在電腦與裝置間複製資料、不用通知即可在裝置上安裝應用程式,以及讀取記錄資料。"</string>
<string name="gadget_picker_title" msgid="98374951396755811">"選擇小工具"</string>
<string name="widget_picker_title" msgid="9130684134213467557">"選擇小工具"</string>
- <string name="battery_history_details_for" msgid="5189636461798594740">"UID %d 的詳細資料"</string>
+ <string name="battery_history_details_for" msgid="5924639922153109669">"UID <xliff:g id="NUMBER">%d</xliff:g> 的詳細資料"</string>
<string name="battery_history_uid" msgid="1016606150528436298">"UID <xliff:g id="USER_ID">%1$d</xliff:g>"</string>
<string name="battery_history_network_usage" msgid="8010852371665217020">"<xliff:g id="APP_NAME">%1$s</xliff:g> 的網路使用率詳細資料:"</string>
<string name="battery_history_bytes_received" msgid="980307569180518302">"已接收的位元組數:<xliff:g id="BYTES">%1$d</xliff:g>"</string>
@@ -716,7 +766,10 @@
<string name="app_name_label" msgid="2000949925256858308">"應用程式"</string>
<string name="launch_count_label" msgid="4019444833263957024">"計數"</string>
<string name="usage_time_label" msgid="295954901452833058">"使用時間"</string>
- <string name="accessibility_settings_title" msgid="4239640930601071058">"協助工具"</string>
+ <!-- no translation found for accessibility_settings (3975902491934816215) -->
+ <skip />
+ <!-- no translation found for accessibility_settings_title (2130492524656204459) -->
+ <skip />
<string name="accessibility_settings_summary" msgid="8185181964847149507">"管理協助工具選項"</string>
<string name="toggle_accessibility_title" msgid="650839277066574497">"協助工具"</string>
<string name="accessibility_services_category" msgid="8127851026323672607">"協助工具服務"</string>
@@ -733,7 +786,7 @@
<string name="awake" msgid="387122265874485088">"裝置甦醒時間"</string>
<string name="wifi_on_time" msgid="4630925382578609056">"WiFi 開啟時間"</string>
<string name="bluetooth_on_time" msgid="4478515071957280711">"WiFi 開啟時間"</string>
- <string name="usage_name_percent" msgid="1899151069711662289">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="PERCENT">%2$s</xliff:g>%%"</string>
+ <string name="usage_name_percent" msgid="7976919382448235858">"<xliff:g id="NAME">%1$s</xliff:g> - <xliff:g id="NUMBER">%2$s</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
<string name="details_title" msgid="7564809986329021063">"電池使用狀況詳細資料"</string>
<string name="details_subtitle" msgid="32593908269911734">"使用狀況詳細資訊"</string>
<string name="controls_subtitle" msgid="390468421138288702">"調整電力使用"</string>
@@ -769,7 +822,7 @@
<string name="battery_desc_wifi" msgid="1702486494565080431">"Wi-Fi 耗電量"</string>
<string name="battery_sugg_wifi" msgid="7542345142282261691">"未使用或無法使用 Wi-Fi 時即關閉 Wi-Fi"</string>
<string name="battery_desc_bluetooth" msgid="7535520658674621902">"藍牙耗電量"</string>
- <string name="battery_sugg_bluetooth_basic" msgid="144393178427277439">"未使用藍牙時即關閉藍牙"</string>
+ <string name="battery_sugg_bluetooth_basic" msgid="817276933922157788">"未使用藍牙時即關閉藍牙"</string>
<string name="battery_sugg_bluetooth_headset" msgid="8214816222115517479">"嘗試連線至不同的藍牙裝置"</string>
<string name="battery_desc_apps" msgid="8123202939321333639">"應用程式執行時的耗電量"</string>
<string name="battery_sugg_apps_info" msgid="6065882899391322442">"停止或解除安裝應用程式"</string>
@@ -781,7 +834,7 @@
<string name="menu_stats_refresh" msgid="1676215433344981075">"重新整理"</string>
<string name="process_kernel_label" msgid="3916858646836739323">"Android 作業系統"</string>
<string name="process_mediaserver_label" msgid="6500382062945689285">"媒體伺服器"</string>
- <string name="tts_settings" msgid="6454363854545277027">"語音合成"</string>
+ <string name="tts_settings" msgid="3348626948015962987">"文字轉語音"</string>
<string name="tts_settings_summary" msgid="2627715231944602766">"設定文字轉語音選項"</string>
<string name="tts_settings_title" msgid="5064947197040356736">"語音合成器控制項"</string>
<string name="use_default_tts_settings_title" msgid="1577063839539732930">"永遠使用我的設定"</string>
@@ -801,8 +854,10 @@
<string name="tts_demo" msgid="405357591189935876">"請聆聽合成的範例。"</string>
<string name="tts_settings_changed_demo" msgid="4926518555912328645">"設定已變更,請聆聽語音範例。"</string>
<string name="gadget_title" msgid="7455548605888590466">"電源控制"</string>
+ <string name="gadget_toggle_wifi" msgid="2382963973155082629">"正在更新 Wi-Fi 設定"</string>
+ <string name="gadget_toggle_bluetooth" msgid="7538903239807020826">"正在更新藍牙設定"</string>
<string name="vpn_settings_activity_title" msgid="7276864950701612579">"VPN 設定"</string>
- <string name="vpn_connect_to" msgid="9040615733700098831">"連線至「%s」"</string>
+ <string name="vpn_connect_to" msgid="2541409082892684362">"連線至<xliff:g id="NAME">%s</xliff:g>"</string>
<string name="vpn_username_colon" msgid="7854930370861306247">"使用者名稱:"</string>
<string name="vpn_password_colon" msgid="5716278710848606626">"密碼:"</string>
<string name="vpn_a_username" msgid="6664733641993968692">"使用者名稱"</string>
@@ -820,9 +875,9 @@
<string name="vpn_menu_disconnect" msgid="8254492450022562235">"中斷網路連線"</string>
<string name="vpn_menu_edit" msgid="4526245173583195618">"編輯網路"</string>
<string name="vpn_menu_delete" msgid="3326527392609513129">"刪除網路"</string>
- <string name="vpn_error_miss_entering" msgid="1467455143582547499">"請輸入%s。"</string>
- <string name="vpn_error_miss_selecting" msgid="953436717902387192">"請選取%s。"</string>
- <string name="vpn_error_duplicate_name" msgid="2786397299628471911">"VPN 名稱「%s」已經存在,請使用其他名稱。"</string>
+ <string name="vpn_error_miss_entering" msgid="5377667978602483250">"請輸入<xliff:g id="CODE">%s</xliff:g>。"</string>
+ <string name="vpn_error_miss_selecting" msgid="4890780825580511345">"請選取<xliff:g id="OPTION">%s</xliff:g>。"</string>
+ <string name="vpn_error_duplicate_name" msgid="2693927537390963745">"VPN 名稱「<xliff:g id="NAME">%s</xliff:g>」已經存在,請使用其他名稱。"</string>
<string name="vpn_confirm_profile_deletion" msgid="8679536635364177239">"確定要刪除此 VPN 嗎?"</string>
<string name="vpn_confirm_add_profile_cancellation" msgid="3377869170901609182">"確定不要建立此設定檔嗎?"</string>
<string name="vpn_confirm_edit_profile_cancellation" msgid="7496760181072204494">"確定要捨棄您對此設定檔所做的變更嗎?"</string>
@@ -833,10 +888,12 @@
<string name="vpn_secret_not_set_dialog_msg" msgid="8013052814131532765">"此 VPN 設定遺失了一或多個密碼檔,要檢查密碼檔設定嗎?"</string>
<string name="vpn_auth_error_dialog_msg" msgid="5476820106624807614">"您所輸入的使用者名稱或密碼不正確,您要再試一次嗎?"</string>
<string name="vpn_remote_hung_up_error_dialog_msg" msgid="1566946015052633150">"伺服器無回應,您所輸入的使用者名稱或密碼可能有誤,要再試一次嗎?"</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg" msgid="5135958511128503344">"伺服器中斷連線,這可能是因為您的防火牆禁止您連線到該伺服器。要再試一次嗎?"</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg" msgid="4611293656718340994">"伺服器協商失敗;伺服器不同意您的加密選項。要查看您的加密設定嗎?"</string>
<string name="vpn_type_title" msgid="6392933604218676224">"新增 VPN"</string>
<string name="vpn_add_new_vpn" msgid="5438260689052714550">"新增 VPN"</string>
- <string name="vpn_edit_title_add" msgid="2550661826320709266">"新增%s VPN"</string>
- <string name="vpn_edit_title_edit" msgid="1769999313158207723">"%s詳細資訊"</string>
+ <string name="vpn_edit_title_add" msgid="2121313217989682890">"新增 <xliff:g id="NAME">%s</xliff:g> VPN"</string>
+ <string name="vpn_edit_title_edit" msgid="2457278794066617935">"<xliff:g id="NAME">%s</xliff:g>的詳細資料"</string>
<string name="vpns" msgid="3148141862835492816">"VPN"</string>
<string name="vpn_connecting" msgid="8039521381692090116">"連線中..."</string>
<string name="vpn_disconnecting" msgid="7748050200708257066">"中斷連線中..."</string>
@@ -844,8 +901,8 @@
<string name="vpn_connect_hint" msgid="7442898962925875181">"連線至網路"</string>
<string name="vpn_name" msgid="1550918148476193076">"VPN 名稱"</string>
<string name="vpn_a_name" msgid="8445736942405283509">"VPN 名稱"</string>
- <string name="vpn_profile_added" msgid="2157095890825215726">"已新增「%s」"</string>
- <string name="vpn_profile_replaced" msgid="384234123486734768">"已變更「%s」的設定"</string>
+ <string name="vpn_profile_added" msgid="9061017910337129840">"已新增「<xliff:g id="NAME">%s</xliff:g>」"</string>
+ <string name="vpn_profile_replaced" msgid="587435576816273815">"已變更「<xliff:g id="NAME">%s</xliff:g>」的設定"</string>
<string name="vpn_user_certificate_title" msgid="6812545893924071742">"設定使用者憑證"</string>
<string name="vpn_user_certificate" msgid="949322691686938888">"使用者憑證"</string>
<string name="vpn_a_user_certificate" msgid="8943983437956898649">"使用者憑證"</string>
@@ -866,13 +923,13 @@
<string name="vpn_vpn_server_dialog_title" msgid="7850850940160521918">"VPN 伺服器名稱"</string>
<string name="vpn_dns_search_list_title" msgid="1022776976104584251">"DNS 搜尋網域"</string>
<string name="vpn_dns_search_list" msgid="4230034234026605360">"DNS 搜尋網域"</string>
- <string name="vpn_field_is_set" msgid="1880980734721258127">"已設定%s"</string>
- <string name="vpn_field_not_set" msgid="6827205815004809490">"未設定%s"</string>
- <string name="vpn_field_not_set_optional" msgid="8665901697706781015">"未設定%s (可略過)"</string>
- <string name="vpn_enable_field" msgid="3348948489989523325">"啟用%s"</string>
- <string name="vpn_disable_field" msgid="2286966253789266389">"停用%s"</string>
- <string name="vpn_is_enabled" msgid="5128973727115662815">"已啟用%s"</string>
- <string name="vpn_is_disabled" msgid="8028085699769751756">"已停用%s"</string>
+ <string name="vpn_field_is_set" msgid="7137320847812992243">"已設定<xliff:g id="VALUE">%s</xliff:g>"</string>
+ <string name="vpn_field_not_set" msgid="2972519243515893804">"未設定<xliff:g id="VALUE">%s</xliff:g>"</string>
+ <string name="vpn_field_not_set_optional" msgid="8840557698252556791">"未設定<xliff:g id="VALUE">%s</xliff:g> (可略過)"</string>
+ <string name="vpn_enable_field" msgid="3700967675854517191">"啟用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_disable_field" msgid="6905658811179634005">"停用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_enabled" msgid="1266304230417098877">"已啟用<xliff:g id="OPTION">%s</xliff:g>"</string>
+ <string name="vpn_is_disabled" msgid="2013622485867806167">"已停用<xliff:g id="OPTION">%s</xliff:g>"</string>
<string name="vpn_settings_title" msgid="7327468307909556719">"VPN 設定"</string>
<string name="vpn_settings_summary" msgid="8849924181594963972">"設定與管理虛擬私人網路 (VPN)"</string>
<string name="vpn_secret_unchanged" msgid="8700613973594154529">"(未變更)"</string>
@@ -882,6 +939,10 @@
<string name="cstor_access_summary" msgid="4512681868217546677">"允許應用程式存取安全認證及其他認證"</string>
<string name="cstor_access_dialog_title" msgid="3024256293191879190">"輸入密碼"</string>
<string name="cstor_access_dialog_hint_from_action" msgid="679746865623760961">"輸入認證儲存空間密碼。"</string>
+ <!-- no translation found for cstor_cert_install_title (8387889077991064784) -->
+ <skip />
+ <!-- no translation found for cstor_cert_install_summary (7231036252185501628) -->
+ <skip />
<string name="cstor_set_passwd_title" msgid="6156763762703061470">"設定密碼"</string>
<string name="cstor_set_passwd_summary" msgid="5248560429856597398">"設定或變更認證儲存空間密碼"</string>
<string name="cstor_set_passwd_dialog_title" msgid="4071157542842979977">"設定密碼"</string>
@@ -896,15 +957,17 @@
<string name="cstor_old_password" msgid="979282118063084561">"目前的密碼:"</string>
<string name="cstor_new_password" msgid="6218562692435670047">"新密碼:"</string>
<string name="cstor_confirm_password" msgid="8996028123356342466">"確認新密碼:"</string>
- <string name="cstor_first_time_hint" msgid="1831593416099224962">"設定認證儲存空間密碼。"</string>
+ <!-- no translation found for cstor_first_time_hint (252980561562035720) -->
+ <skip />
<string name="cstor_first_time_hint_from_action" msgid="4690937025845780557">"設定認證儲存空間密碼。"</string>
<string name="cstor_password_error" msgid="2917326097260402464">"請輸入正確的密碼。"</string>
<string name="cstor_password_error_reset_warning" msgid="3336370539045905953">"請輸入正確的密碼。您還有 1 次輸入密碼的機會,如果輸入錯誤,認證儲存空間將遭到清除。"</string>
- <string name="cstor_password_error_reset_warning_plural" msgid="6209069679269017200">"請輸入正確的密碼。您還有 %d 次輸入密碼的機會,如果輸入錯誤,認證儲存空間將遭到清除。"</string>
+ <string name="cstor_password_error_reset_warning_plural" msgid="6956258389658499987">"請輸入正確的密碼。您還有 <xliff:g id="NUMBER">%d</xliff:g> 次輸入密碼的機會,如果輸入錯誤,認證儲存空間將遭到清除。"</string>
<string name="cstor_passwords_error" msgid="956773958408751155">"密碼不符。"</string>
<string name="cstor_passwords_empty_error" msgid="6062539742626760734">"請輸入一個密碼,並確認未輸錯。"</string>
<string name="cstor_password_empty_error" msgid="7249632576906961482">"請輸入密碼。"</string>
- <string name="cstor_password_verification_error" msgid="8553930704493511389">"請再次輸入密碼,密碼必須包含至少 8 個字元,且不得包含空格。"</string>
+ <!-- no translation found for cstor_password_verification_error (1438172283989380605) -->
+ <skip />
<string name="cstor_name_empty_error" msgid="7499971191993770322">"請輸入名稱。"</string>
<string name="cstor_name_char_error" msgid="8048089317968192516">"請輸入名稱 (只能包含英數字元)。"</string>
<string name="cstor_storage_error" msgid="7140697503172458161">"無法儲存憑證,如要重試,請按一下 [確定]。"</string>
@@ -912,7 +975,7 @@
<string name="cstor_cert_not_saved" msgid="6318149789449538491">"未儲存憑證。"</string>
<string name="cstor_is_reset" msgid="449870501126790589">"已清除認證儲存空間內容。"</string>
<string name="cstor_is_enabled" msgid="4054049098081482785">"已啟用認證儲存空間。"</string>
- <string name="cstor_is_added" msgid="794788474010251572">"已新增%s。"</string>
+ <string name="cstor_is_added" msgid="5625022327411754924">"已新增<xliff:g id="CREDENTIAL">%s</xliff:g>。"</string>
<string name="emergency_tone_title" msgid="1055954530111587114">"緊急警示音"</string>
<string name="emergency_tone_summary" msgid="722259232924572153">"設定撥打緊急電話時的運作方式"</string>
</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 6ec90ca..5191d83 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -48,6 +48,30 @@
<item>yyyy-MM-dd</item>
</string-array>
+ <!-- Display settings. The type of animations to show. -->
+ <string-array name="animations_entries">
+ <item>No animations</item>
+ <item>Some animations</item>
+ <item>All animations</item>
+ </string-array>
+
+ <!-- Display settings. Summary for each type of animation. -->
+ <string-array name="animations_summaries">
+ <item>No window animations are shown</item>
+ <item>Some window animations are shown</item>
+ <item>All window animations are shown</item>
+ </string-array>
+
+ <!-- Do not translate. -->
+ <string-array name="animations_values">
+ <!-- Do not translate. -->
+ <item>00</item>
+ <!-- Do not translate. -->
+ <item>01</item>
+ <!-- Do not translate. -->
+ <item>11</item>
+ </string-array>
+
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown ain a list dialog. -->
<string-array name="screen_timeout_entries">
<item>15 seconds</item>
@@ -129,6 +153,15 @@
<item>ita-ITA</item>
<item>spa-ESP</item>
</string-array>
+ <!-- Do not translate. -->
+ <string-array name="tts_demo_strings">
+ <item>This is an example of speech synthesis in English.</item>
+ <item>This is an example of speech synthesis in English.</item>
+ <item>Voici un échantillon de synthèse vocale en français.</item>
+ <item>Dies ist ein Beispiel für Sprachsynthese in Deutsch.</item>
+ <item>Questo è un esempio di sintesi vocale in italiano.</item>
+ <item>Este es un ejemplo de síntesis de voz en español.</item>
+ </string-array>
<!-- Wi-Fi settings -->
@@ -142,13 +175,9 @@
<!-- Do not translate. The Wi-Fi network has WEP security. -->
<item>WEP</item>
<!-- The Wi-Fi network has WPA personal security. WPA Personal is a tech term, and might be better left untranslated? -->
- <item>WPA personal</item>
- <!-- The Wi-Fi network has WPA2 personal security. WPA Personal is a tech term, and might be better left untranslated? -->
- <item>WPA2 personal</item>
+ <item>WPA/WPA2 PSK</item>
<!-- The Wi-Fi network has WPA EAP extensible authentication protocol. -->
- <item>WPA-EAP</item>
- <!-- IEEE 802.1X key management -->
- <item>IEEE 802.1x</item>
+ <item>802.1x Enterprise</item>
</string-array>
<!-- Match this with code. --> <skip />
@@ -159,14 +188,9 @@
<!-- Do not translate. The Wi-Fi network has WEP security. -->
<item>WEP</item>
<!-- The Wi-Fi network has WPA personal security. WPA Personal is a tech term, and might be better left untranslated? -->
- <item>WPA personal</item>
- <!-- The Wi-Fi network has WPA2 personal security. WPA Personal is a tech term, and might be better left untranslated? -->
- <item>WPA2 personal</item>
+ <item>WPA/WPA2 PSK</item>
<!-- The Wi-Fi network has WPA enterprise security. WPA Enterprise is a tech term, and might be better left untranslated? -->
- <!-- The Wi-Fi network has WPA EAP extensible authentication protocol. -->
- <item>WPA-EAP</item>
- <!-- IEEE 802.1X key management -->
- <item>IEEE 802.1x</item>
+ <item>802.1x Enterprise</item>
</string-array>
<!-- Match this with code. --> <skip />
@@ -237,7 +261,7 @@
<item>None</item>
<item>PAP</item>
<item>MSCHAP</item>
- <item>MSCHAP2</item>
+ <item>MSCHAPV2</item>
<item>GTC</item>
</string-array>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 9bf79f9..0a2c5c5 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -18,4 +18,7 @@
<declare-styleable name="WifiEncryptionState">
<attr name="state_encrypted" format="boolean" />
</declare-styleable>
+ <declare-styleable name="IconPreferenceScreen">
+ <attr name="icon" format="reference" />
+ </declare-styleable>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3091f7a..b01608a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -15,6 +15,11 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Strings for Dialog yes button -->
+ <string name="yes">"Yes"</string>
+
+ <!-- Strings for Dialog no button -->
+ <string name="no">"No"</string>
<!-- Device Info --> <skip />
<!-- Device Info screen. Used for a status item's value when the proper value is not known -->
@@ -117,6 +122,8 @@
<!-- Battery Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="battery_info_status_label">Battery status:</string>
<!-- Battery Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="battery_info_power_label">Power plug:</string>
+ <!-- Battery Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="battery_info_scale_label">Battery scale:</string>
<!-- Battery Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="battery_info_level_label">Battery level:</string>
@@ -157,6 +164,13 @@
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="battery_info_status_full">Full</string>
+ <!-- Battery Info screen. Units shown after a value. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="battery_info_power_unplugged">Unplugged</string>
+ <string name="battery_info_power_ac">AC</string>
+ <string name="battery_info_power_usb">USB</string>
+ <string name="battery_info_power_ac_usb">AC+USB</string>
+ <string name="battery_info_power_unknown">Unknown</string>
+
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="battery_info_health_unknown">Unknown</string>
<!-- Battery Info screen. Value for a status item. Used for diagnostic info screens, precise translation isn't needed -->
@@ -174,7 +188,7 @@
<string name="bluetooth">Bluetooth</string>
<!-- Bluetooth settings screen, check box label when the Bluetooth device can be seen by others -->
<string name="bluetooth_visibility">Discoverable</string>
- <!-- Bluetooth settings screen, summary after selecting Discoverable check box -->
+ <!-- Bluetooth settings screen, summary after selecting Discoverable check box -->
<string name="bluetooth_is_discoverable">Discoverable for <xliff:g id="discoverable_time_period">%1$s</xliff:g> seconds\u2026</string>
<!-- Bluetooth settings screen, Discoverable checkbox summary text -->
<string name="bluetooth_not_discoverable">Make device discoverable</string>
@@ -215,6 +229,23 @@
<!-- Notification message when a Bluetooth device wants to pair with us -->
<string name="bluetooth_notif_message">Select to pair with\u0020</string>
+ <!-- Strings for BluetoothDevicePicker -->
+ <string name="device_picker">Bluetooth device picker</string>
+
+ <!-- Strings for dialog title when asking to the user whether to allow an app to enable discovery mode -->
+ <string name="bluetooth_permission_request">"Bluetooth permission request"</string>
+
+ <!-- Strings for asking to the user whether to allow an app to enable bluetooth -->
+ <string name="bluetooth_ask_enablement">"An application on your phone is requesting permission to turn on Bluetooth. Do you want to do this?"</string>
+
+ <!-- Strings for asking to the user whether to allow an app to enable discovery mode -->
+ <string name="bluetooth_ask_discovery">"An application on your phone is requesting permission to make your phone discoverable by other Bluetooth devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>
+
+ <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode -->
+ <string name="bluetooth_ask_enablement_and_discovery">"An application on your phone is requesting permission to turn on Bluetooth and to make your phone discoverable by other devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>
+
+ <!-- Strings for msg to display to user while bluetooth is turning on -->
+ <string name="bluetooth_turning_on">"Turning on Bluetooth\u2026"</string>
<!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
<string name="bluetooth_scan_text">Empty button\u2026</string>
@@ -435,7 +466,9 @@
<!-- Wireless controls settings screen, setting option summary text as airplane mode is being disabled (so it is re-enabling all the wireless conenctions) -->
<string name="airplane_mode_turning_off">Enabling wireless connections\u2026</string>
<!-- Main Settings screen settings title for things like Wi-Fi, bluetooth, airplane mode. This will take you to another screen with those settings. -->
- <string name="radio_controls_title">Wireless controls</string>
+ <string name="radio_controls_title">Wireless & networks</string>
+ <!-- Wireless Settings screen title for things like Wi-Fi, bluetooth, airplane mode. -->
+ <string name="wireless_networks_settings_title">Wireless & network settings</string>
<!-- Main Settings screen settings summary text for the "Wireless controls" setting -->
<string name="radio_controls_summary">Manage Wi-Fi, Bluetooth, airplane mode, mobile networks, & VPNs</string>
@@ -486,9 +519,13 @@
<string name="zone_list_menu_sort_by_timezone">Sort by time zone</string>
<!-- Main Settings screen setting option title for the item to take you the security and location screen -->
- <string name="security_settings_title">Security & location</string>
+ <string name="security_settings_title">Location & security</string>
+ <!-- Location & security settings screen title -->
+ <string name="location_security_settings_title">Location & security settings</string>
<!-- Main Settings screen setting option summary text for the item tot ake you to the security and location screen -->
<string name="security_settings_summary">Set My Location, screen unlock, SIM card lock, credential storage lock</string>
+ <!-- Main Settings screen setting option summary text for the item to take you to the CDMA security and location screen -->
+ <string name="cdma_security_settings_summary">Set My Location, screen unlock, credential storage lock</string>
<!-- In the security screen, the header title for settings related to Passwords-->
<string name="security_passwords_title">Passwords</string>
@@ -505,18 +542,33 @@
<string name="bluetooth_settings_summary">Manage connections, set device name & discoverability</string>
<!-- Title for the dialog to enter PIN. -->
- <string name="bluetooth_pin_entry">Bluetooth pairing request</string>
+ <string name="bluetooth_pairing_request">Bluetooth pairing request</string>
<!-- Title for the bluetooth device info screen. -->
<string name="bluetooth_device_info">Bluetooth device info</string>
- <!-- Message when bluetooth dialog for pin entry is shwoing -->
- <string name="bluetooth_enter_pin_msg"><xliff:g id="device_name">%1$s</xliff:g>\n\nType PIN to pair.\n(Try 0000 or 1234.)</string>
+ <!-- Message when bluetooth dialog for pin entry is showing -->
+ <string name="bluetooth_enter_pin_msg">\nType PIN to pair with \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022. (Try 0000 or 1234.)</string>
+ <!-- Message when bluetooth dialog for passkey entry is showing -->
+ <string name="bluetooth_enter_passkey_msg">\nType passkey to pair with \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022.</string>
+ <!-- Message when bluetooth dialog for confirmation of passkey is showing -->
+ <string name="bluetooth_confirm_passkey_msg">To pair with \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022, confirm that it is showing the passkey: <xliff:g id="passkey">%2$s</xliff:g>.</string>
+ <!-- Message when bluetooth incoming pairing request for (2.1 devices) dialog is showing -->
+ <string name="bluetooth_incoming_pairing_msg"><xliff:g id="device_name">%1$s</xliff:g>\nwants to pair.</string>
+ <!-- Message when bluetooth dialog when passkey needs to be displayed. -->
+ <string name="bluetooth_display_passkey_msg">Enter <xliff:g id="passkey">%2$s</xliff:g> on \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022 to pair. </string>
+ <!-- Button text for accepting an incoming pairing request -->
+ <string name="bluetooth_pairing_accept">Pair</string>
+ <!-- Button text for declining an incoming pairing request -->
+ <string name="bluetooth_pairing_decline">Don\u0027t Pair</string>
+ <!-- Generic string for remote Bluetooth device -->
+ <string name="bluetooth_remote_device">bluetooth device</string>
<!-- Title for BT error dialogs. -->
<string name="bluetooth_error_title">Attention</string>
<!-- Message for the error dialog when BT pairing fails generically. -->
<string name="bluetooth_pairing_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g>.</string>
- <!-- Message for the error dialog when BT pairing fails because the PIN entered is incorrect. -->
- <string name="bluetooth_pairing_pin_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g> because the typed PIN is incorrect.</string>
+ <!-- Message for the error dialog when BT pairing fails because the PIN /
+ Passkey entered is incorrect. -->
+ <string name="bluetooth_pairing_pin_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g> because the PIN or Passkey is incorrect.</string>
<!-- Message for the error dialog when BT pairing fails because the other device is down. -->
<string name="bluetooth_pairing_device_down_error_message">Cannot establish communication with <xliff:g id="device_name">%1$s</xliff:g>.</string>
<!-- Message for the error dialog when BT pairing fails because the other device rejected the pairing. -->
@@ -557,6 +609,8 @@
<string name="bluetooth_profile_a2dp">Media</string>
<!-- Bluetooth settings. The user-visible string that is used whenever referring to the headset or handsfree profile. -->
<string name="bluetooth_profile_headset">Phone</string>
+ <!-- Bluetooth settings. The user-visible string that is used whenever referring to the OPP profile. -->
+ <string name="bluetooth_profile_opp">Transfer</string>
<!-- Bluetooth settings. The summary string when a device is connected to the A2DP profile. -->
<string name="bluetooth_summary_connected_to_a2dp">Connected to media audio</string>
@@ -577,11 +631,17 @@
<string name="bluetooth_a2dp_profile_summary_connected">Connected to media audio</string>
<!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference when headset is connected. -->
<string name="bluetooth_headset_profile_summary_connected">Connected to phone audio</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is connected. -->
+ <string name="bluetooth_opp_profile_summary_connected">Connected to file transfer server</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference when OPP is not connected. -->
+ <string name="bluetooth_opp_profile_summary_not_connected">Not connected to file transfer server</string>
<!-- Bluetooth settings. Connection options screen. The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
<string name="bluetooth_a2dp_profile_summary_use_for">Use for media audio</string>
<!-- Bluetooth settings. Connection options screen. The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
<string name="bluetooth_headset_profile_summary_use_for">Use for phone audio</string>
+ <!-- Bluetooth settings. Connection options screen. The summary for the OPP checkbox preference that describes how checking it will set the OPP profile as preferred. -->
+ <string name="bluetooth_opp_profile_summary_use_for">Use for file transfer</string>
<!-- Wi-Fi settings -->
<!-- Used in the 2nd-level settings screen to turn on Wi-Fi -->
@@ -617,13 +677,10 @@
<!-- Value for the wifi security -->
<string name="wifi_security_wep">WEP</string>
<!-- Value for the wifi security -->
- <string name="wifi_security_wpa">WPA</string>
+ <string name="wifi_security_psk">WPA/WPA2 PSK</string>
<!-- Value for the wifi security -->
- <string name="wifi_security_wpa2">WPA2</string>
+ <string name="wifi_security_eap">Enterprise(802.1x)</string>
<!-- Value for the wifi security -->
- <string name="wifi_security_wpa_eap">WPA-EAP</string>
- <!-- Value for the wifi security -->
- <string name="wifi_security_ieee8021x">IEEE8021X</string>
<!-- Value for the wifi security when it is unknown -->
<string name="wifi_security_unknown">Unknown</string>
@@ -632,14 +689,10 @@
<!-- Verbose security type of a wifi network. Capitalized by app. -->
<string name="wifi_security_verbose_wep">secured with WEP</string>
<!-- Verbose security type of a wifi network. Capitalized by app. -->
- <string name="wifi_security_verbose_wpa">secured with WPA</string>
+ <string name="wifi_security_verbose_psk">secured with WPA/WPA2 PSK</string>
<!-- Verbose security type of a wifi network. Capitalized by app. -->
- <string name="wifi_security_verbose_wpa2">secured with WPA2</string>
- <!-- Verbose security type of a wifi network. Capitalized by app. -->
- <string name="wifi_security_verbose_wpa_eap">secured with WPA-EAP</string>
- <!-- Verbose security type of a wifi network. Capitalized by app. -->
- <string name="wifi_security_verbose_ieee8021x">secured with IEEE 802.1x</string>
- <!-- Wi-Fi IP addrress label -->
+ <string name="wifi_security_verbose_eap">secured with 802.1x EAP</string>
+ <!-- Wi-Fi IP addrress label -->
<string name="ip_address">IP address</string>
<!-- Label for the signal strength -->
<string name="signal">Signal strength</string>
@@ -675,8 +728,6 @@
<string name="please_select_client_certificate">Client certificate</string>
<!-- Caption for the ca certificate -->
<string name="please_select_ca_certificate">CA certificate</string>
- <!-- Caption for the Private Key -->
- <string name="please_type_private_key_passwd">Private key password</string>
<!-- Caption for the wireless password -->
<string name="please_type_passphrase">Wireless password</string>
<!--Wi-Fi settings screen, connect to network dialog box, field label and hint text -->
@@ -690,7 +741,7 @@
<!-- Wifi network summary when the network is configured previously, capitalized by app -->
<string name="summary_remembered">remembered</string>
<!-- Wifi network summary when there was an error connecting -->
- <string name="summary_connection_failed">Connection unsuccessful, select to try again</string>
+ <string name="summary_connection_failed">Connection unsuccessful, touch to try again</string>
<!-- Header for the list of wifi networks-->
<string name="wifi_access_points">Wi-Fi networks</string>
<!-- Caption for entering the SSID of a wifi network -->
@@ -798,6 +849,8 @@
<!-- Sound and alerts settings -->
<!-- Main Settings screen setting option name to go into the sound and display settings screen -->
<string name="sound_and_display_settings">Sound & display</string>
+ <!-- Main Settings screen setting option name to go into the sound and display settings screen -->
+ <string name="sound_and_display_settings_title">Sound & display settings</string>
<!-- Sound settings screen heading -->
<string name="sound_settings">Sound settings</string>
<!-- Main Settings screen setting option summary text for the item to go into the soudn and display settings screen-->
@@ -850,16 +903,22 @@
<!-- Sound settings screen, setting option summary text when check box is clear -->
<string name="sound_effects_enable_summary_off">Play sound when making screen selection</string>
<!-- Sound settings screen, setting check box label -->
+ <string name="haptic_feedback_enable_title">Haptic feedback</string>
+ <!-- Sound settings screen, setting option summary text when check box is selected -->
+ <string name="haptic_feedback_enable_summary_on">Vibrate when pressing soft keys and on certain UI interactions</string>
+ <!-- Sound settings screen, setting option summary text when check box is clear -->
+ <string name="haptic_feedback_enable_summary_off">Vibrate when pressing soft keys and on certain UI interactions</string>
+ <!-- Sound settings screen, setting check box label -->
<string name="play_media_notification_sounds_enable_title">SD card notifications</string>
<!-- Sound settings screen, setting option summary text when check box is selected -->
<string name="play_media_notification_sounds_enable_summary_on">Play sound for SD card notifications</string>
<!-- Sound settings screen, setting option summary text when check box is clear -->
<string name="play_media_notification_sounds_enable_summary_off">Play sound for SD card notifications</string>
- <!-- Main Settings screen setting option name to go into the screen for data sync settings-->
- <string name="sync_settings">Data synchronization</string>
+ <!-- Acounts & Sync settings screen setting option name to go into the screen for data sync settings-->
+ <string name="sync_settings">Accounts & sync</string>
<!-- Main Settings screen setting option summary text for the itme to go into the screen with data sync settings-->
- <string name="sync_settings_summary">Select which applications are synchronized</string>
+ <string name="sync_settings_summary">Add or remove accounts and change account settings</string>
<!-- Main Settings screen, setting option name to go into search settings -->
<string name="search_settings">Search</string>
@@ -889,6 +948,8 @@
<string name="screen_timeout">Screen timeout</string>
<!-- Sound & display settings screen, setting option summary to change screen timeout -->
<string name="screen_timeout_summary">Adjust the delay before the screen automatically turns off</string>
+ <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
+ <string name="automatic_brightness">Automatic brightness</string>
<!-- SIM lock settings title -->
<string name="sim_lock_settings">SIM card lock settings</string>
@@ -960,7 +1021,9 @@
<!-- About phone screen, summary of the item to go into the phone status screen -->
<string name="device_status_summary">Phone number, signal, etc.</string>
<!-- Main settings screen item's title to go into the SD card and storage settings screen-->
- <string name="storage_settings_title">SD card & phone storage</string>
+ <string name="storage_settings">SD card & phone storage</string>
+ <!-- SD card and storage settings screen title -->
+ <string name="storage_settings_title">SD card & phone storage settings</string>
<!-- Main settings screen item's summary for the SD card and storage settings -->
<string name="storage_settings_summary">Unmount SD card, view available storage</string>
<!-- Do not translate. About phone, status item title -->
@@ -1053,6 +1116,16 @@
<string name="apn_mcc">MCC</string>
<!-- Edit access point labels: -->
<string name="apn_mnc">MNC</string>
+ <!-- Edit acces point labels: Authenticaton type-->
+ <string name="apn_auth_type">Authentication type</string>
+ <!-- Authentication Typs: None -->
+ <string name="apn_auth_type_none">None</string>
+ <!-- Authentication Typs: PAP -->
+ <string name="apn_auth_type_pap">PAP</string>
+ <!-- Authentication Typs: CHAP -->
+ <string name="apn_auth_type_chap">CHAP</string>
+ <!-- Authentication Typs: PAP or CHAP -->
+ <string name="apn_auth_type_pap_chap">PAP or CHAP</string>
<!-- Edit access point labels: The type of APN -->
<string name="apn_type">APN type</string>
<!-- Edit access point screen menu option to delete this APN -->
@@ -1137,17 +1210,23 @@
<!-- Security & location settings screen, setting summary when Use wireless networks check box is selected -->
<string name="location_neighborhood_level">Location determined by Wi-Fi and/or mobile networks</string>
<!-- Security & location settings screen, setting check box label if the GPS receiver should be enabled -->
- <string name="location_gps">Enable GPS satellites</string>
- <!-- Security & location settings screen, setting summary when Enable GPS satellites check box is selected -->
- <string name="location_street_level">When locating, accurate to street level (deselect to conserve battery)</string>
- <!-- Security & location settings screen, setting summary when Enable GPS satellites check box is clear -->
+ <string name="location_gps">Use GPS satellites</string>
+ <!-- Security & location settings screen, setting summary when Use GPS satellites check box is selected -->
+ <string name="location_street_level">When locating, accurate to street level (uncheck to conserve battery)</string>
+ <!-- Security & location settings screen, setting summary when Use GPS satellites check box is clear -->
<string name="location_gps_disabled">Locate to street-level (requires more battery plus view of sky)</string>
+ <!-- Security & location settings screen, setting check box label if Assisted GPS should be enabled -->
+ <string name="assisted_gps">Use assisted GPS</string>
+ <!-- Security & location settings screen, setting summary when Assisted GPS check box is selected -->
+ <string name="assisted_gps_enabled">Use server to assist GPS (uncheck to reduce network usage)</string>
+ <!-- Security & location settings screen, setting summary when Assisted GPS check box is clear -->
+ <string name="assisted_gps_disabled">Use server to assist GPS (uncheck to improve GPS performance)</string>
<!-- Setting title for allow sending location to google -->
- <string name="use_location_title">Share with Google</string>
- <!-- Title of dialog to user requesting use of location information to improve services -->
- <string name="use_location_summary">Allow Google to use location for improved search and other services</string>
+ <string name="use_location_title">Use My Location</string>
+ <!-- Setting summary for allowing Google to use location information for improved search results. -->
+ <string name="use_location_summary">Use My Location for Google search results and other Google services</string>
<!-- Message of dialog to user requesting use of location information -->
- <string name="use_location_warning_message">Allow Google to use location for improved search results and other services</string>
+ <string name="use_location_warning_message">Do you want to allow Google to use location for improved search results and other services?</string>
<!-- Agree -->
<string name="agree">Agree</string>
<!-- Disagree -->
@@ -1185,6 +1264,15 @@
<!-- About phone settings screen, Open source license dialog title until license is fully loaded -->
<string name="settings_license_activity_loading">Loading\u2026</string>
+ <!-- About phone settings, Safety Legal information setting option name and title of dialog box holding safety legal info -->
+ <string name="settings_safetylegal_title">Safety information</string>
+ <!-- About phone settings, Safety Legal information setting option name and title of dialog box holding safety legal info -->
+ <string name="settings_safetylegal_activity_title">Safety information</string>
+ <!-- About phone settings screen, Safety legal dialog message when data network is not connected -->
+ <string name="settings_safetylegal_activity_unreachable">Your phone is not connected to a data service. To view this information now, go to %s from any computer connected to the Internet.</string>
+ <!-- About phone settings screen, Safety Legal dialog title until the link is fully loaded -->
+ <string name="settings_safetylegal_activity_loading">Loading\u2026</string>
+
<!-- Lock Pattern settings -->
<!-- Security & location settings screen, header -->
<string name="lock_settings_title">Screen unlock pattern</string>
@@ -1252,8 +1340,8 @@
\n<font height="17">\n</font><b>1</b>\u00A0 On the next screen, watch while an example pattern is drawn.
\n<font height="17">\n</font><b>2</b>\u00A0 When ready, draw your own personal unlock pattern. Experiment with different patterns but connect at least four dots.
\n<font height="17">\n</font><b>3</b>\u00A0 Redraw your pattern to confirm.
- \n<font height="17">\n</font><b>Ready to start? Select \u201CNext\u201D</b>.
- \n<font height="3">\n</font>To leave your phone unprotected, select \u201CCancel\u201D.</font>
+ \n<font height="17">\n</font><b>Ready to start? Touch \u201CNext\u201D</b>.
+ \n<font height="3">\n</font>To leave your phone unprotected, touch \u201CCancel\u201D.</font>
</string>
<!-- ChooseLockPatternExample --> <skip />
@@ -1261,7 +1349,7 @@
<string name="lock_example_title">Example pattern</string>
<!-- ChooseLockPatternExample, screen hint text at bottom of screen. These are instructions and rules for drawing a good patttern -->
<string name="lock_example_message">Connect at least four dots.\n
- \nSelect \u201CNext\u201D when you\u2019re ready to draw your own pattern.
+ \nTouch \u201CNext\u201D when you\u2019re ready to draw your own pattern.
</string>
<!-- Applications Settings --> <skip />
@@ -1337,7 +1425,7 @@
<string name="filter_apps_all">All</string>
<!-- Text for filter option in ManageApps screen to display third party
applications only -->
- <string name="filter_apps_third_party">Third-party</string>
+ <string name="filter_apps_third_party">Downloaded</string>
<!-- Text for filter option in ManageApps screen to display list of running
packages only. -->
<string name="filter_apps_running">Running</string>
@@ -1347,7 +1435,7 @@
<!-- Manage applications, individual application screen, confirmation dialog title. Displays when user selects to "Clear data". -->
<string name="clear_data_dlg_title">Delete</string>
<!-- Manage applications, individual application screen, confirmation dialog message. Displays when user selects to "Clear data". It warns the user of the consequences of clearing the data for an app. -->
- <string name="clear_data_dlg_text">All information you\'ve saved in this application will be deleted permanently.</string>
+ <string name="clear_data_dlg_text">All of this application\'s data will be deleted permanently. This includes all files, settings, accounts, databases and so on.</string>
<!-- Manage applications, individual application screen, confirmation dialog button. Displays when user selects to "Clear data". Goes through with the clearing of the data. -->
<string name="dlg_ok">OK</string>
<!-- Manage applications, individual application screen, confirmation dialog button. Displays when user selects to "Clear data". -->
@@ -1372,13 +1460,45 @@
<string name="computing_size">Computing\u2026</string>
<string name="invalid_size_value">Unable to compute package size</string>
<!-- String displayed when list is empty -->
- <string name="empty_list_msg">You do not have any third-party apps installed.</string>
+ <string name="empty_list_msg">You do not have any third-party applications installed.</string>
<!-- Manage applications, version string displayed in app snippet -->
<string name="version_text">version <xliff:g id="version_num">%1$s</xliff:g></string>
+ <!-- Services settings screen, setting option name for the user to go to the screen to view running services -->
+ <string name="runningservices_settings_title">Running services</string>
+ <!-- Services settings screen, setting option summary for the user to go to the screen to view running services -->
+ <string name="runningservices_settings_summary">View and control currently running services</string>
+ <!-- Label for a service item when it is restarting -->
+ <string name="service_restarting">Restarting</string>
+ <!-- Running services, body text when there are no services to show -->
+ <string name="no_running_services">No running services</string>
+ <!-- Running services, title of dialog to stop a service -->
+ <string name="confirm_stop_service">Stop service?</string>
+ <!-- Running services, message of dialog to stop a service -->
+ <string name="confirm_stop_service_msg">The service will no longer run until
+ started again. This may have undesireable
+ consequences on the applicaton
+ <xliff:g id="application">%1$s</xliff:g>.</string>
+ <!-- Running services, button to stop a service -->
+ <string name="confirm_stop_stop">Stop</string>
+ <!-- Running services, button to cancel stopping of a service -->
+ <string name="confirm_stop_cancel">Cancel</string>
+ <!-- Running services, description for a service in the started state -->
+ <string name="service_started_by_app">Started by application: touch to stop</string>
+ <!-- Running services, description for a service in the started state -->
+ <string name="service_client_name"><xliff:g id="client_name">%1$s</xliff:g>: touch to manage</string>
+ <!-- Running services, summary of background processes -->
+ <string name="service_background_processes">Avail: <xliff:g id="free">%2$s</xliff:g>+<xliff:g id="memory">%3$s</xliff:g> in <xliff:g id="count">%1$d</xliff:g></string>
+ <!-- Running services, summary of foreground processes -->
+ <string name="service_foreground_processes">Other: <xliff:g id="memory">%2$s</xliff:g> in <xliff:g id="count">%1$d</xliff:g></string>
+ <!-- Text to label a process entry with the process name. -->
+ <string name="service_process_name">Process: <xliff:g id="process">%1$s</xliff:g></string>
+
<!-- Language Settings --> <skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings realted to locale and text -->
- <string name="language_settings">Locale & text</string>
+ <string name="language_settings">Language & keyboard</string>
+ <!-- Title of Language and keyboard settings screen -->
+ <string name="language_keyboard_settings_title">Language & keyboard settings</string>
<!-- Summary of setting on main settings screen. This item will take the user to the screen to tweak settings realted to locale and text -->
<string name="language_settings_summary">Set locale (language and region), text input and auto-correction options</string>
<!-- On Text & language settings screen, heading. Inside the "Locale & text" screen, this is the header for settings that are for locale changes. -->
@@ -1413,7 +1533,7 @@
all the text you type, including personal data like passwords and credit
card numbers. It comes from the application
<xliff:g id="ime_application_name">%1$s</xliff:g>.
- Enable this input method?</string>
+ Use this input method?</string>
<!-- User dictionary settings --><skip />
<!-- User dictionary settings, The titlebar text of the User dictionary settings screen. -->
@@ -1475,7 +1595,7 @@
<!-- Input Methods Settings localized format string for generating the appropriate "Foo settings" menu label for the Input Method named "Foo" -->
<string name="input_methods_settings_label_format"><xliff:g id="ime_name">%1$s</xliff:g> settings</string>
<!-- Summary for on-screen keyboard settings -->
- <string name="onscreen_keyboard_settings_summary">On-screen keyboard settings</string>
+ <string name="onscreen_keyboard_settings_summary">Onscreen keyboard settings</string>
<!-- Title for built-in keyboard settings -->
<string name="builtin_keyboard_settings_title">Device keyboard</string>
<!-- Summary for built-in keyboard settings -->
@@ -1498,7 +1618,7 @@
<!-- setting Checkbox summary whether to allow mock locations -->
<string name="allow_mock_location_summary">Allow mock locations</string>
<!-- Title of warning dialog about the implications of enabling USB debugging -->
- <string name="adb_warning_title">Enable USB debugging?</string>
+ <string name="adb_warning_title">Allow USB debugging?</string>
<!-- Warning text to user about the implications of enabling USB debugging -->
<string name="adb_warning_message">USB debugging is intended for development purposes only. It can be used to copy data between your computer and your device, install applications on your device without notification, and read log data.</string>
@@ -1506,13 +1626,14 @@
(or other screens that can host gadgets). Note to translators: we're still determining
the final name for Gadgets/Widgets, so please translate both for now. -->
<string name="gadget_picker_title">Choose gadget</string>
+
<!-- Title for the screen that lets the user choose a widget to add to the home screen
(or other screens that can host widgets). Note to translators: we're still determining
the final name for Gadgets/Widgets, so please translate both for now. -->
<string name="widget_picker_title">Choose widget</string>
<!-- Used to display "Details for UID 1234" in BatteryHistory -->
- <string name="battery_history_details_for">Details for UID %d</string>
+ <string name="battery_history_details_for">Details for UID <xliff:g id="number" example="1234">%d</xliff:g></string>
<!-- Used to name a set of apps that share a user id in BatteryHistory -->
<string name="battery_history_uid">UID <xliff:g id="user_id">%1$d</xliff:g></string>
@@ -1618,8 +1739,10 @@
<!-- Accessibility settings -->
<skip/>
- <!-- Settings title for accessibility settings -->
- <string name="accessibility_settings_title">Accessibility</string>
+ <!-- Settings title in main settings screen for accessibility settings -->
+ <string name="accessibility_settings">Accessibility</string>
+ <!-- Settings title for accessibility settings screen -->
+ <string name="accessibility_settings_title">Accessibility settings</string>
<!-- Settings summary for accessibility settings -->
<string name="accessibility_settings_summary">Manage accessibility options</string>
<!-- Setting Checkbox title for enabling accessibility -->
@@ -1633,7 +1756,7 @@
<string name="accessibility_service_security_warning">This accessibility service may be able to collect
all the text you type, including personal data credit card numbers except passwords.
It may also log your user interface interactions. It comes from the application
- <xliff:g id="accessibility_service_name">%1$s</xliff:g>. Enable this accessibility service?</string>
+ <xliff:g id="accessibility_service_name">%1$s</xliff:g>. Use this accessibility service?</string>
<!-- Warning about disabling accessibility displayed as a dialog message when the user
selects to disable accessibility. This avoids accidental disabling. -->
<string name="accessibility_service_disable_warning">Disable accessibility?</string>
@@ -1661,7 +1784,7 @@
<string name="bluetooth_on_time">WiFi on time</string>
<!-- Application name and battery usage percentage -->
<string name="usage_name_percent"><xliff:g id="name">%1$s</xliff:g>" - "
- <xliff:g id="percent">%2$s</xliff:g>"%%"</string>
+ <xliff:g id="number" example="30">%2$s</xliff:g><xliff:g id="percent" example="%">%%</xliff:g></string>
<!-- Activity title for battery usage details for an app. or power consumer -->
<string name="details_title">Battery use details</string>
@@ -1742,7 +1865,7 @@
<!-- Description for bluetooth power consumption detail -->
<string name="battery_desc_bluetooth">Battery used by bluetooth</string>
<!-- Suggestion for bluetooth -->
- <string name="battery_sugg_bluetooth_basic">Turn off bluetooth when you aren't using it</string>
+ <string name="battery_sugg_bluetooth_basic">Turn off bluetooth when you aren\'t using it</string>
<!-- Suggestion for bluetooth headset -->
<string name="battery_sugg_bluetooth_headset">Try connecting to a different bluetooth device</string>
@@ -1771,11 +1894,11 @@
<!-- Text-To-Speech (TTS) settings --><skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
- <string name="tts_settings">Speech synthesis</string>
+ <string name="tts_settings">Text-to-speech</string>
<!-- Summary of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
<string name="tts_settings_summary">Set text-to-speech options</string>
<!-- Main TTS Settings screen title -->
- <string name="tts_settings_title">Speech synthesizer controls</string>
+ <string name="tts_settings_title">Text-to-speech settings</string>
<!-- On main TTS Settings screen, title for toggle used to force use of default TTS settings -->
<string name="use_default_tts_settings_title">Always use my settings</string>
<!-- On main TTS Settings screen, summary for toggle used to force use of default TTS settings -->
@@ -1811,11 +1934,16 @@
<!-- Power Control Widget -->
<string name="gadget_title">Power Control</string>
+ <string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
+ <string name="gadget_toggle_bluetooth">Updating Bluetooth setting</string>
+
+ <!-- credential installer title -->
+ <string name="credential_installer_activity_title">Credential installer</string>
<string name="vpn_settings_activity_title">VPN settings</string>
<!-- Title of VPN connect dialog -->
- <string name="vpn_connect_to">Connect to %s</string>
+ <string name="vpn_connect_to">Connect to <xliff:g id="name" example="Work Network">%s</xliff:g></string>
<!-- In VPN connect dialog, for inputing username and password -->
<string name="vpn_username_colon">Username:</string>
<string name="vpn_password_colon">Password:</string>
@@ -1840,9 +1968,9 @@
<string name="vpn_menu_delete">Delete network</string>
<!-- VPN error dialog messages -->
- <string name="vpn_error_miss_entering">You must enter %s.</string>
- <string name="vpn_error_miss_selecting">You must select %s.</string>
- <string name="vpn_error_duplicate_name">The VPN name \'%s\' already exists. Find another name.</string>
+ <string name="vpn_error_miss_entering">You must enter <xliff:g id="code">%s</xliff:g>.</string>
+ <string name="vpn_error_miss_selecting">You must select <xliff:g id="option">%s</xliff:g>.</string>
+ <string name="vpn_error_duplicate_name">The VPN name \'<xliff:g id="name" example="Home Network">%s</xliff:g>\' already exists. Find another name.</string>
<string name="vpn_confirm_profile_deletion">Are you sure you want to delete this VPN?</string>
<string name="vpn_confirm_add_profile_cancellation">Are you sure you don\'t want to create this profile?</string>
<string name="vpn_confirm_edit_profile_cancellation">Are you sure you want to discard the changes made to this profile?</string>
@@ -1853,15 +1981,17 @@
<string name="vpn_secret_not_set_dialog_msg">One or more secrets are missing in this VPN configuration. Do you want to check your secret setting?</string>
<string name="vpn_auth_error_dialog_msg">The username or password you entered is incorrect. Do you want to try again?</string>
<string name="vpn_remote_hung_up_error_dialog_msg">Server hung up. The username or password you entered could be incorrect. Do you want to try again?</string>
+ <string name="vpn_remote_ppp_hung_up_error_dialog_msg">Server hung up. It is possible that you are behind a firewall that prevents you from connecting to the server. Do you want to try again?</string>
+ <string name="vpn_ppp_negotiation_failed_dialog_msg">Server negotiation failed. The server may not agree with your encryption option. Do you want to check your encryption setting?</string>
<!-- VPN type selection activity title -->
<string name="vpn_type_title">Add VPN</string>
<!-- "Add VPN" preference title -->
<string name="vpn_add_new_vpn">Add VPN</string>
<!-- VPN profile editor title when adding a new profile -->
- <string name="vpn_edit_title_add">Add %s VPN</string>
+ <string name="vpn_edit_title_add">Add <xliff:g id="name">%s</xliff:g> VPN</string>
<!-- VPN profile editor title when editing an existing profile -->
- <string name="vpn_edit_title_edit">%s details</string>
+ <string name="vpn_edit_title_edit"><xliff:g id="name">%s</xliff:g> details</string>
<!-- Preference group title for a list of VPN profiles -->
<string name="vpns">VPNs</string>
<!-- Preference summary text when VPN is connecting -->
@@ -1878,9 +2008,9 @@
<string name="vpn_a_name">a VPN name</string>
<!-- Toast message shown when a profile is added -->
- <string name="vpn_profile_added">'%s' is added</string>
+ <string name="vpn_profile_added">\'<xliff:g id="name">%s</xliff:g>\' is added</string>
<!-- Toast message shown when changes of a profile is saved -->
- <string name="vpn_profile_replaced">Changes are made to '%s'</string>
+ <string name="vpn_profile_replaced">Changes are made to \'<xliff:g id="name">%s</xliff:g>\'</string>
<!-- Preference title -->
<string name="vpn_user_certificate_title">Set user certificate</string>
@@ -1921,21 +2051,21 @@
<string name="vpn_dns_search_list">DNS search domains</string>
<!-- Summary text to hint that the value is set -->
- <string name="vpn_field_is_set">%s is set</string>
+ <string name="vpn_field_is_set"><xliff:g id="value">%s</xliff:g> is set</string>
<!-- Summary text to hint that the value is not set -->
- <string name="vpn_field_not_set">%s not set</string>
+ <string name="vpn_field_not_set"><xliff:g id="value">%s</xliff:g> not set</string>
<!-- Summary text to hint that the value is not set but it's not required-->
- <string name="vpn_field_not_set_optional">%s not set (optional)</string>
+ <string name="vpn_field_not_set_optional"><xliff:g id="value">%s</xliff:g> not set (optional)</string>
<!-- CheckBoxPreference title to enable something -->
- <string name="vpn_enable_field">Enable %s</string>
+ <string name="vpn_enable_field">Enable <xliff:g id="option">%s</xliff:g></string>
<!-- CheckBoxPreference title to disable something -->
- <string name="vpn_disable_field">Disable %s</string>
+ <string name="vpn_disable_field">Disable <xliff:g id="option">%s</xliff:g></string>
<!-- CheckBoxPreference summary to hint that something is enabled -->
- <string name="vpn_is_enabled">%s is enabled</string>
+ <string name="vpn_is_enabled"><xliff:g id="option">%s</xliff:g> is enabled</string>
<!-- CheckBoxPreference summary to hint that something is disabled -->
- <string name="vpn_is_disabled">%s is disabled</string>
+ <string name="vpn_is_disabled"><xliff:g id="option">%s</xliff:g> is disabled</string>
<!-- Title of preference to enter the VPN settings activity -->
<string name="vpn_settings_title">VPN settings</string>
@@ -1947,71 +2077,71 @@
<string name="vpn_secret_not_set">(not set)</string>
<!-- Title of preference group for credential storage settings -->
- <string name="cstor_settings_category">Credential storage</string>
+ <string name="credentials_category">Credential storage</string>
<!-- Title of preference to enable/dislable access to credential storage -->
- <string name="cstor_access_title">Use secure credentials</string>
+ <string name="credentials_access">Use secure credentials</string>
<!-- Summary of preference to enable/dislable access to credential storage -->
- <string name="cstor_access_summary">Allow applications to access secure certificates and other credentials</string>
+ <string name="credentials_access_summary">Allow applications to access secure certificates and other credentials</string>
<!-- Title of dialog to enable/dislable access to credential storage -->
- <string name="cstor_access_dialog_title">Enter password</string>
- <!-- Description of dialog to enable/dislable access to credential storage from an action that requires the credential storage -->
- <string name="cstor_access_dialog_hint_from_action">Enter the credential storage password.</string>
-
+ <string name="credentials_unlock">Enter password</string>
+ <!-- Description of dialog to enable/dislable access to credential storage -->
+ <string name="credentials_unlock_hint">Enter the credential storage password.</string>
+ <!-- Title of preference to install certificates from SD card -->
+ <string name="credentials_install_certificates">Install from SD card</string>
+ <!-- Summary of preference to install certificates from SD card -->
+ <string name="credentials_install_certificates_summary">Install encrypted certificates from SD card</string>
<!-- Title of preference to set storage password -->
- <string name="cstor_set_passwd_title">Set password</string>
+ <string name="credentials_set_password">Set password</string>
<!-- Summary of preference to set storage password -->
- <string name="cstor_set_passwd_summary">Set or change the credential storage password</string>
- <!-- Title of dialog to set storage password -->
- <string name="cstor_set_passwd_dialog_title">Set password</string>
-
- <!-- Title of preference to reset storage -->
- <string name="cstor_reset_title">Clear storage</string>
- <!-- Summary of preference to reset storage -->
- <string name="cstor_reset_summary">Clear credential storage of all contents and reset its password</string>
- <string name="cstor_reset_hint">Are you sure you want to delete all credentials and reset the credential storage password?</string>
-
- <!-- Title of dialog to name a credential -->
- <string name="cstor_name_credential_dialog_title">Name the certificate</string>
- <!-- Description for the credential name input box -->
- <string name="cstor_credential_name">Certificate name:</string>
- <!-- Title of the credential info -->
- <!-- Description for the credential password input box -->
- <string name="cstor_credential_password">Password to extract the certificate:</string>
- <string name="cstor_credential_info">Certificate details:</string>
- <string name="cstor_name_credential_hint">The name can contain only letters and numbers.</string>
-
-
+ <string name="credentials_set_password_summary">Set or change the credential storage password</string>
+ <!-- Title of preference to reset credential storage -->
+ <string name="credentials_reset">Clear storage</string>
+ <!-- Summary of preference to reset credential storage -->
+ <string name="credentials_reset_summary">Clear credential storage of all contents and reset its password</string>
+ <!-- Description of dialog to reset the credential storage -->
+ <string name="credentials_reset_hint">Are you sure you want to delete all credentials and reset the credential storage password?</string>
<!-- Description for the old-password input box -->
- <string name="cstor_old_password">Current password:</string>
+ <string name="credentials_old_password">Current password:</string>
<!-- Description for the new-password input box -->
- <string name="cstor_new_password">New password:</string>
+ <string name="credentials_new_password">New password:</string>
<!-- Description for the confirm-new-password input box -->
- <string name="cstor_confirm_password">Confirm new password:</string>
+ <string name="credentials_confirm_password">Confirm new password:</string>
<!-- Description when user set up the storage for the very first time -->
- <string name="cstor_first_time_hint">Set a password for the credential storage.</string>
- <!-- Description when user set up the storage for the very first time from an action that requires the credential storage-->
- <string name="cstor_first_time_hint_from_action">Set a password for the credential storage.</string>
- <string name="cstor_password_error">Please enter the correct password.</string>
- <string name="cstor_password_error_reset_warning">Please enter the correct password. You have one more try to enter the correct password before the credential storage is erased.</string>
- <string name="cstor_password_error_reset_warning_plural">Please enter the correct password. You have %d more tries to enter the correct password before the credential storage is erased.</string>
- <string name="cstor_passwords_error">Passwords do not match.</string>
- <string name="cstor_passwords_empty_error">You must enter and confirm a password.</string>
- <string name="cstor_password_empty_error">Please enter the password.</string>
- <string name="cstor_password_verification_error">Please enter the password again. The password must have at least 8 characters and must not contain spaces.</string>
- <string name="cstor_name_empty_error">Please enter a name.</string>
- <string name="cstor_name_char_error">Please enter a name that contains only letters and numbers.</string>
- <string name="cstor_storage_error">Unable to save the certificate. Click OK to retry.</string>
- <string name="cstor_unable_to_save_cert">Unable to save the certificate. The credential storage is not enabled or properly initialized.</string>
- <string name="cstor_cert_not_saved">The certificate is not saved.</string>
- <string name="cstor_is_reset">The credential storage is erased.</string>
-
+ <string name="credentials_first_time_hint">Set a password for the credential storage (at least 8 characters).</string>
+ <string name="credentials_wrong_password">Please enter the correct password.</string>
+ <string name="credentials_reset_warning">Please enter the correct password. You have one more try to enter the correct password before the credential storage is erased.</string>
+ <string name="credentials_reset_warning_plural">Please enter the correct password. You have <xliff:g id="number" example="5">%1$d</xliff:g> more tries to enter the correct password before the credential storage is erased.</string>
+ <string name="credentials_passwords_mismatch">Passwords do not match.</string>
+ <string name="credentials_passwords_empty">You must enter and confirm a password.</string>
+ <string name="credentials_password_empty">Please enter the password.</string>
+ <string name="credentials_password_too_short">The password must have at least 8 characters.</string>
<!-- toast message -->
- <string name="cstor_is_enabled">Credential storage is enabled.</string>
+ <string name="credentials_erased">The credential storage is erased.</string>
<!-- toast message -->
- <string name="cstor_is_added">%s is added.</string>
+ <string name="credentials_enabled">Credential storage is enabled.</string>
+ <!-- toast message -->
+ <string name="credentials_disabled">Credential storage is disabled.</string>
<!-- Sound settings screen, setting check box label -->
<string name="emergency_tone_title">Emergency tone</string>
<!-- Sound settings screen, setting option summary text -->
<string name="emergency_tone_summary">Set behavior when an emergency call is placed</string>
+
+ <!-- Privacy Settings screen --><skip/>
+ <!-- Privacy settings menu title -->
+ <string name="privacy_settings">Privacy</string>
+ <!-- Privacy settings activity title -->
+ <string name="privacy_settings_title">Privacy settings</string>
+ <!-- Location settings section title -->
+ <string name="location_section_title">Location</string>
+ <!-- Settings section title -->
+ <string name="settings_section_title">Settings</string>
+ <!-- Personal data section title -->
+ <string name="personal_data_section_title">Personal data</string>
+ <!-- Backup settings menu title -->
+ <string name="backup_settings_title">Back up my settings</string>
+ <!-- Dialog title for confirmation to erase backup data from server -->
+ <string name="backup_erase_dialog_title">Settings backup</string>
+ <!-- Dialog title for confirmation to erase backup data from server -->
+ <string name="backup_erase_dialog_message">Are you sure you want to stop backing up your settings and erase all copies on Google servers?</string>
</resources>
diff --git a/res/xml-ar/timezones.xml b/res/xml-ar/timezones.xml
index 395e5e2..b903880 100644
--- a/res/xml-ar/timezones.xml
+++ b/res/xml-ar/timezones.xml
@@ -2,7 +2,7 @@
<timezone id="Pacific/Majuro">ماجورو</timezone>
<timezone id="Pacific/Midway">ميدواي</timezone>
<timezone id="Pacific/Honolulu">هونولولو</timezone>
- <timezone id="America/Anchorage">أنكوريج</timezone>
+ <timezone id="America/Anchorage">أنشوراج</timezone>
<timezone id="America/Los_Angeles">لوس انجلوس</timezone>
<timezone id="America/Tijuana">تيخوانا</timezone>
<timezone id="America/Phoenix">فينكس</timezone>
@@ -18,7 +18,7 @@
<timezone id="America/Barbados">Barbados</timezone>
<timezone id="America/Manaus">ماناوس</timezone>
<timezone id="America/Santiago">سانتيجو</timezone>
- <timezone id="America/St_Johns">سانت جونز</timezone>
+ <timezone id="America/St_Johns">سانت جونس</timezone>
<timezone id="America/Araguaina">أروجوانيا</timezone>
<timezone id="America/Argentina/Buenos_Aires">بوينوس أيرس</timezone>
<timezone id="America/Godthab">جودثاب</timezone>
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">كراسنويارسك</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">بكين</timezone>
<timezone id="Asia/Hong_Kong">Hong Kong</timezone>
<timezone id="Asia/Irkutsk">ايركيتسك</timezone>
<timezone id="Asia/Kuala_Lumpur">كوالالمبور</timezone>
@@ -70,7 +71,7 @@
<timezone id="Asia/Seoul">Seoul</timezone>
<timezone id="Asia/Tokyo">Tokyo</timezone>
<timezone id="Asia/Yakutsk">ياكتسك</timezone>
- <timezone id="Australia/Adelaide">أدليادا</timezone>
+ <timezone id="Australia/Adelaide">استراليا(توقيت أدليادا</timezone>
<timezone id="Australia/Darwin">دارون</timezone>
<timezone id="Australia/Brisbane">برسيبان</timezone>
<timezone id="Australia/Hobart">هوبارت</timezone>
diff --git a/res/xml-cs/timezones.xml b/res/xml-cs/timezones.xml
index 26a9715..3b7e87b 100644
--- a/res/xml-cs/timezones.xml
+++ b/res/xml-cs/timezones.xml
@@ -2,7 +2,7 @@
<timezone id="Pacific/Majuro">Majuro</timezone>
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">Aljašský čas</timezone>
+ <timezone id="America/Anchorage">Anchorage</timezone>
<timezone id="America/Los_Angeles">Pacifický standardní čas (Los Angeles)</timezone>
<timezone id="America/Tijuana">Pacifický standardní čas (Tichuana)</timezone>
<timezone id="America/Phoenix">Horský standardní čas (Phoenix)</timezone>
diff --git a/res/xml-da/timezones.xml b/res/xml-da/timezones.xml
index eb63dce..6e80e87 100644
--- a/res/xml-da/timezones.xml
+++ b/res/xml-da/timezones.xml
@@ -2,7 +2,7 @@
<timezone id="Pacific/Majuro">Majuro</timezone>
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">Alaska Time</timezone>
+ <timezone id="America/Anchorage">Alaska</timezone>
<timezone id="America/Los_Angeles">Pacific-tid (Los Angeles)</timezone>
<timezone id="America/Tijuana">Pacific-tid (Tijuana)</timezone>
<timezone id="America/Phoenix">Mountain-tid (Phoenix)</timezone>
@@ -62,13 +62,14 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
<timezone id="Asia/Bangkok">Indokinesisk tid (Bangkok)</timezone>
+ <timezone id="Asia/Shanghai">Kinesisk tid (Beijing)</timezone>
<timezone id="Asia/Hong_Kong">Hongkong-tid (Hongkong)</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Vestaustralsk tid (Perth)</timezone>
- <timezone id="Asia/Taipei">Kinesisk normaltid (Taipei)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Koreansk normaltid (Seoul)</timezone>
- <timezone id="Asia/Tokyo">Japansk normaltid (Tokyo)</timezone>
+ <timezone id="Asia/Tokyo">Japansk tid (Tokyo)</timezone>
<timezone id="Asia/Yakutsk">Yakutsk</timezone>
<timezone id="Australia/Adelaide">Centralaustralsk tid (Adelaide)</timezone>
<timezone id="Australia/Darwin">Centralaustralsk tid (Darwin)</timezone>
diff --git a/res/xml-el/timezones.xml b/res/xml-el/timezones.xml
index 9cb4dc1..de25148 100644
--- a/res/xml-el/timezones.xml
+++ b/res/xml-el/timezones.xml
@@ -6,19 +6,19 @@
<timezone id="America/Los_Angeles">Λος Άντζελες</timezone>
<timezone id="America/Tijuana">Τιχουάνα</timezone>
<timezone id="America/Phoenix">Φοίνιξ</timezone>
- <timezone id="America/Chihuahua">Chihuahua</timezone>
+ <timezone id="America/Chihuahua">Τσιουάουα</timezone>
<timezone id="America/Denver">Ντένβερ</timezone>
<timezone id="America/Costa_Rica">Κόστα Ρίκα</timezone>
<timezone id="America/Chicago">Σικάγο</timezone>
<timezone id="America/Mexico_City">Πόλη του Μεξικού</timezone>
- <timezone id="America/Regina">Regina</timezone>
+ <timezone id="America/Regina">Ρετζίνα</timezone>
<timezone id="America/Bogota">Μπογκοτά</timezone>
<timezone id="America/New_York">Νέα Υόρκη</timezone>
<timezone id="America/Caracas">Καράκας</timezone>
<timezone id="America/Barbados">Μπαρμπέιντος</timezone>
<timezone id="America/Manaus">Μανάος</timezone>
<timezone id="America/Santiago">Σαντιάγκο</timezone>
- <timezone id="America/St_Johns">St. John's</timezone>
+ <timezone id="America/St_Johns">Σεντ Τζονς</timezone>
<timezone id="America/Araguaina">Αραγκουάινα</timezone>
<timezone id="America/Argentina/Buenos_Aires">Μπουένος Άιρες</timezone>
<timezone id="America/Godthab">Γκόνθαμπ</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Βρυξέλλες</timezone>
<timezone id="Europe/Sarajevo">Sarajevo</timezone>
<timezone id="Africa/Windhoek">Γουιντχόεκ</timezone>
- <timezone id="Africa/Brazzaville">Μπράζαβιλ</timezone>
+ <timezone id="Africa/Brazzaville">ώρα Δυτικής Αφρικής (Μπράζαβιλ)</timezone>
<timezone id="Asia/Amman">Αμάν</timezone>
<timezone id="Europe/Athens">Αθήνα</timezone>
<timezone id="Asia/Beirut">Βηρυτός</timezone>
@@ -41,11 +41,11 @@
<timezone id="Europe/Helsinki">Ελσίνκι</timezone>
<timezone id="Asia/Jerusalem">Ιερουσαλήμ</timezone>
<timezone id="Europe/Minsk">Μινσκ</timezone>
- <timezone id="Africa/Harare">Ζιμπάμπουε</timezone>
+ <timezone id="Africa/Harare">ώρα Κεντρικής Αφρικής (Ζιμπάμπουε)</timezone>
<timezone id="Asia/Baghdad">Βαγδάτη</timezone>
<timezone id="Europe/Moscow">Μόσχα</timezone>
<timezone id="Asia/Kuwait">Kuwait</timezone>
- <timezone id="Africa/Nairobi">Κένυα</timezone>
+ <timezone id="Africa/Nairobi">ώρα Ανατολικής Αφρικής (Κένυα)</timezone>
<timezone id="Asia/Tehran">Τεχεράνη</timezone>
<timezone id="Asia/Baku">Μπακού</timezone>
<timezone id="Asia/Tbilisi">Τμπιλίσι</timezone>
@@ -53,31 +53,32 @@
<timezone id="Asia/Dubai">Ντουμπάι</timezone>
<timezone id="Asia/Kabul">Καμπούλ</timezone>
<timezone id="Asia/Karachi">Καράτσι</timezone>
- <timezone id="Asia/Oral">Oral</timezone>
+ <timezone id="Asia/Oral">Όραλ</timezone>
<timezone id="Asia/Yekaterinburg">Αικατερινούπολη</timezone>
<timezone id="Asia/Calcutta">Calcutta</timezone>
<timezone id="Asia/Colombo">Κολόμπο</timezone>
<timezone id="Asia/Katmandu">Κατμαντού</timezone>
<timezone id="Asia/Almaty">Αλμάτυ</timezone>
<timezone id="Asia/Rangoon">Ρανγκούν</timezone>
- <timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
+ <timezone id="Asia/Krasnoyarsk">Κρασνογιάρσκ</timezone>
<timezone id="Asia/Bangkok">Μπανγκόκ</timezone>
+ <timezone id="Asia/Shanghai">Πεκίνο</timezone>
<timezone id="Asia/Hong_Kong">Χονγκ Κονγκ</timezone>
<timezone id="Asia/Irkutsk">Ιρκούτσκ</timezone>
<timezone id="Asia/Kuala_Lumpur">Κουάλα Λουμπούρ</timezone>
- <timezone id="Australia/Perth">Perth</timezone>
+ <timezone id="Australia/Perth">Περθ</timezone>
<timezone id="Asia/Taipei">Ταϊπέι</timezone>
<timezone id="Asia/Seoul">Σεούλ</timezone>
<timezone id="Asia/Tokyo">Τόκυο</timezone>
- <timezone id="Asia/Yakutsk">Yakutsk</timezone>
+ <timezone id="Asia/Yakutsk">Γιάκουτσκ</timezone>
<timezone id="Australia/Adelaide">Αδελαΐδα</timezone>
- <timezone id="Australia/Darwin">Darwin</timezone>
- <timezone id="Australia/Brisbane">Brisbane</timezone>
- <timezone id="Australia/Hobart">Hobart</timezone>
- <timezone id="Australia/Sydney">Σύδνεϊ</timezone>
+ <timezone id="Australia/Darwin">Ντάργουιν</timezone>
+ <timezone id="Australia/Brisbane">Μπρίσμπεϊν</timezone>
+ <timezone id="Australia/Hobart">Χόμπαρτ</timezone>
+ <timezone id="Australia/Sydney">Σίδνεϊ</timezone>
<timezone id="Asia/Vladivostok">Βλαδιβοστόκ</timezone>
<timezone id="Pacific/Guam">Γκουάμ</timezone>
- <timezone id="Asia/Magadan">Magadan</timezone>
+ <timezone id="Asia/Magadan">Μαγκαντάν</timezone>
<timezone id="Pacific/Auckland">Όκλαντ</timezone>
<timezone id="Pacific/Fiji">Φίτζι</timezone>
<timezone id="Pacific/Tongatapu">Τονγκατάπου</timezone>
diff --git a/res/xml-es/timezones.xml b/res/xml-es/timezones.xml
index d59aabe..4fe564d 100644
--- a/res/xml-es/timezones.xml
+++ b/res/xml-es/timezones.xml
@@ -3,29 +3,29 @@
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulú</timezone>
<timezone id="America/Anchorage">Anchorage</timezone>
- <timezone id="America/Los_Angeles">Hora estándar del Pacífico (Los Ángeles)</timezone>
- <timezone id="America/Tijuana">Hora estándar del Pacífico (Hora de México (Tijuana))</timezone>
- <timezone id="America/Phoenix">Hora estándar de Montaña (Hora de Estados Unidos (Phoenix))</timezone>
- <timezone id="America/Chihuahua">Hora de México (Chihuahua)</timezone>
+ <timezone id="America/Los_Angeles">Hora del Pacífico (Los Ángeles)</timezone>
+ <timezone id="America/Tijuana">Hora del Pacífico (Tijuana)</timezone>
+ <timezone id="America/Phoenix">Hora estándar de Montaña (Phoenix)</timezone>
+ <timezone id="America/Chihuahua">Chihuahua</timezone>
<timezone id="America/Denver">Hora estándar de Montaña (Denver)</timezone>
<timezone id="America/Costa_Rica">Hora central (Costa Rica)</timezone>
<timezone id="America/Chicago">Hora central (Chicago)</timezone>
<timezone id="America/Mexico_City">Hora central (Ciudad de México)</timezone>
<timezone id="America/Regina">Hora central (Hora de Canadá (Regina))</timezone>
- <timezone id="America/Bogota">Bogotá</timezone>
+ <timezone id="America/Bogota">Hora de Colombia (Bogotá)</timezone>
<timezone id="America/New_York">Hora oriental (Nueva York)</timezone>
- <timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Hora estándar del Atlántico (Barbados)</timezone>
- <timezone id="America/Manaus">Manaus</timezone>
- <timezone id="America/Santiago">Santiago</timezone>
- <timezone id="America/St_Johns">Hora estándar de Newfoundland (St. Johns)</timezone>
- <timezone id="America/Araguaina">Araguaína</timezone>
- <timezone id="America/Argentina/Buenos_Aires">Hora de Argentina (Buenos Aires)</timezone>
- <timezone id="America/Godthab">Godthab</timezone>
- <timezone id="America/Montevideo">Montevideo</timezone>
- <timezone id="Atlantic/South_Georgia">Georgia del Sur</timezone>
+ <timezone id="America/Caracas">Hora de Venezuela (Caracas)</timezone>
+ <timezone id="America/Barbados">Hora del Atlántico (Barbados)</timezone>
+ <timezone id="America/Manaus">Hora del Amazonas (Manaus)</timezone>
+ <timezone id="America/Santiago">Hora de Chile (Santiago)</timezone>
+ <timezone id="America/St_Johns">Hora estándar de Newfoundland (St. John’s)</timezone>
+ <timezone id="America/Araguaina">Hora de Brasilia (Araguaína)</timezone>
+ <timezone id="America/Argentina/Buenos_Aires">Hora de Argentina (Hora de Argentina (Buenos Aires))</timezone>
+ <timezone id="America/Godthab">Hora de Groenlandia occidental (Godthab)</timezone>
+ <timezone id="America/Montevideo">Hora de Uruguay (Montevideo)</timezone>
+ <timezone id="Atlantic/South_Georgia">Hora de Georgia meridional (Georgia del Sur)</timezone>
<timezone id="Atlantic/Azores">Azores</timezone>
- <timezone id="Atlantic/Cape_Verde">Cabo Verde</timezone>
+ <timezone id="Atlantic/Cape_Verde">Hora de Cabo Verde (Cabo Verde)</timezone>
<timezone id="Africa/Casablanca">Casablanca</timezone>
<timezone id="Europe/London">Hora media de Greenwich (Londres)</timezone>
<timezone id="Europe/Amsterdam">Hora estándar de Europa Central (Amsterdam)</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Hora estándar de Europa Central (Bruselas)</timezone>
<timezone id="Europe/Sarajevo">Hora estándar de Europa Central (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Brazzaville</timezone>
+ <timezone id="Africa/Brazzaville">Hora de África occidental (Brazzaville)</timezone>
<timezone id="Asia/Amman">Hora estándar de Europa del Este (Amman)</timezone>
<timezone id="Europe/Athens">Hora estándar de Europa del Este (Atenas)</timezone>
<timezone id="Asia/Beirut">Hora estándar de Europa del Este (Beirut)</timezone>
@@ -41,45 +41,45 @@
<timezone id="Europe/Helsinki">Hora estándar de Europa del Este (Helsinki)</timezone>
<timezone id="Asia/Jerusalem">Hora estándar de Israel (Jerusalén)</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Harare</timezone>
- <timezone id="Asia/Baghdad">Bagdad</timezone>
+ <timezone id="Africa/Harare">Hora de África central (Harare)</timezone>
+ <timezone id="Asia/Baghdad">Hora de Arabia (Bagdad)</timezone>
<timezone id="Europe/Moscow">Moscú</timezone>
- <timezone id="Asia/Kuwait">Kuwait</timezone>
- <timezone id="Africa/Nairobi">Nairobi</timezone>
+ <timezone id="Asia/Kuwait">Hora de Arabia (Kuwait)</timezone>
+ <timezone id="Africa/Nairobi">Hora de África oriental (Nairobi)</timezone>
<timezone id="Asia/Tehran">Teherán</timezone>
<timezone id="Asia/Baku">Bakú</timezone>
<timezone id="Asia/Tbilisi">Tiflis</timezone>
<timezone id="Asia/Yerevan">Ereván</timezone>
<timezone id="Asia/Dubai">Dubai</timezone>
- <timezone id="Asia/Kabul">Kabul</timezone>
+ <timezone id="Asia/Kabul">Hora de Afganistán (Kabul)</timezone>
<timezone id="Asia/Karachi">Karachi</timezone>
<timezone id="Asia/Oral">Oral</timezone>
<timezone id="Asia/Yekaterinburg">Yekaterinburgo</timezone>
- <timezone id="Asia/Calcutta">Calcutta</timezone>
+ <timezone id="Asia/Calcutta">Hora estándar de la India (Calcutta)</timezone>
<timezone id="Asia/Colombo">Colombo</timezone>
<timezone id="Asia/Katmandu">Katmandú</timezone>
<timezone id="Asia/Almaty">Almaty</timezone>
<timezone id="Asia/Rangoon">Rangún</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
- <timezone id="Asia/Shanghai">Hora estándar de China (Beijing)</timezone>
- <timezone id="Asia/Hong_Kong">Hong Kong</timezone>
+ <timezone id="Asia/Shanghai">Hora de China (Beijing)</timezone>
+ <timezone id="Asia/Hong_Kong">Hora de Hong Kong (Hong Kong)</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
- <timezone id="Australia/Perth">Hora de Australia (Perth)</timezone>
+ <timezone id="Australia/Perth">Hora de Australia occidental (Perth)</timezone>
<timezone id="Asia/Taipei">Taipei</timezone>
- <timezone id="Asia/Seoul">Seúl</timezone>
+ <timezone id="Asia/Seoul">Hora de Corea (Seúl)</timezone>
<timezone id="Asia/Tokyo">Hora estándar de Japón (Tokio)</timezone>
<timezone id="Asia/Yakutsk">Yakutsk</timezone>
- <timezone id="Australia/Adelaide">Adelaida</timezone>
- <timezone id="Australia/Darwin">Hora de Australia (Darwin)</timezone>
- <timezone id="Australia/Brisbane">Hora de Australia (Brisbane)</timezone>
- <timezone id="Australia/Hobart">Hora de Australia (Hobart)</timezone>
- <timezone id="Australia/Sydney">Sydney</timezone>
+ <timezone id="Australia/Adelaide">Hora de Australia central (Adelaida)</timezone>
+ <timezone id="Australia/Darwin">Hora de Australia central (Darwin)</timezone>
+ <timezone id="Australia/Brisbane">Hora de Australia oriental (Brisbane)</timezone>
+ <timezone id="Australia/Hobart">Hora de Australia oriental (Hobart)</timezone>
+ <timezone id="Australia/Sydney">Hora de Australia oriental (Sídney)</timezone>
<timezone id="Asia/Vladivostok">Vladivostok</timezone>
<timezone id="Pacific/Guam">Guam</timezone>
<timezone id="Asia/Magadan">Magadan</timezone>
- <timezone id="Pacific/Auckland">Auckland</timezone>
+ <timezone id="Pacific/Auckland">Hora de Nueva Zelanda (Auckland)</timezone>
<timezone id="Pacific/Fiji">Fiyi</timezone>
<timezone id="Pacific/Tongatapu">Tongatapu</timezone>
</timezones>
diff --git a/res/xml-fi/timezones.xml b/res/xml-fi/timezones.xml
index 4172ec0..ae194a7 100644
--- a/res/xml-fi/timezones.xml
+++ b/res/xml-fi/timezones.xml
@@ -3,22 +3,22 @@
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
<timezone id="America/Anchorage">Anchorage</timezone>
- <timezone id="America/Los_Angeles">Yhdysvaltain Tyynenmeren normaaliaika (Los Angeles)</timezone>
- <timezone id="America/Tijuana">Yhdysvaltain Tyynenmeren normaaliaika (Tijuana)</timezone>
- <timezone id="America/Phoenix">Kalliovuorten normaaliaika (Phoenix)</timezone>
+ <timezone id="America/Los_Angeles">Yhdysvaltain Tyynenmeren aika (Los Angeles)</timezone>
+ <timezone id="America/Tijuana">Yhdysvaltain Tyynenmeren aika (Tijuana)</timezone>
+ <timezone id="America/Phoenix">Kalliovuorten aika (Phoenix)</timezone>
<timezone id="America/Chihuahua">Chihuahua</timezone>
- <timezone id="America/Denver">Kalliovuorten normaaliaika (Denver)</timezone>
- <timezone id="America/Costa_Rica">Yhdysvaltain keskinen normaaliaika (Costa Rica)</timezone>
- <timezone id="America/Chicago">Yhdysvaltain keskinen normaaliaika (Chicago)</timezone>
- <timezone id="America/Mexico_City">Yhdysvaltain keskinen normaaliaika (Ciudad de México)</timezone>
- <timezone id="America/Regina">Yhdysvaltain keskinen normaaliaika (Regina)</timezone>
+ <timezone id="America/Denver">Kalliovuorten aika (Denver)</timezone>
+ <timezone id="America/Costa_Rica">Yhdysvaltain keskinen aika (Costa Rica)</timezone>
+ <timezone id="America/Chicago">Yhdysvaltain keskinen aika (Chicago)</timezone>
+ <timezone id="America/Mexico_City">Yhdysvaltain keskinen aika (Ciudad de México)</timezone>
+ <timezone id="America/Regina">Yhdysvaltain keskinen aika (Regina)</timezone>
<timezone id="America/Bogota">Bogota</timezone>
- <timezone id="America/New_York">Yhdysvaltain itäinen normaaliaika (New York)</timezone>
+ <timezone id="America/New_York">Yhdysvaltain itäinen aika (New York)</timezone>
<timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Kanadan Atlantin normaaliaika (Barbados)</timezone>
+ <timezone id="America/Barbados">Kanadan Atlantin aika (Barbados)</timezone>
<timezone id="America/Manaus">Manaus</timezone>
<timezone id="America/Santiago">Santiago</timezone>
- <timezone id="America/St_Johns">Newfoundlandin normaaliaika (St. John's)</timezone>
+ <timezone id="America/St_Johns">Newfoundlandin normaaliaika (St. Johns)</timezone>
<timezone id="America/Araguaina">Araguaina</timezone>
<timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
<timezone id="America/Godthab">Godthåb</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Keski-Euroopan normaaliaika (Bryssel)</timezone>
<timezone id="Europe/Sarajevo">Keski-Euroopan normaaliaika (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Brazzaville</timezone>
+ <timezone id="Africa/Brazzaville">Länsi-Afrikan aika (Brazzaville)</timezone>
<timezone id="Asia/Amman">Itä-Euroopan normaaliaika (Amman)</timezone>
<timezone id="Europe/Athens">Itä-Euroopan normaaliaika (Ateena)</timezone>
<timezone id="Asia/Beirut">Itä-Euroopan normaaliaika (Beirut)</timezone>
@@ -41,11 +41,11 @@
<timezone id="Europe/Helsinki">Itä-Euroopan normaaliaika (Helsinki)</timezone>
<timezone id="Asia/Jerusalem">Israelin normaaliaika (Jerusalem)</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Harare</timezone>
+ <timezone id="Africa/Harare">Keski-Afrikan aika (Harare)</timezone>
<timezone id="Asia/Baghdad">Baghdad</timezone>
<timezone id="Europe/Moscow">Moskova</timezone>
<timezone id="Asia/Kuwait">Kuwait</timezone>
- <timezone id="Africa/Nairobi">Nairobi</timezone>
+ <timezone id="Africa/Nairobi">Itä-Afrikan aika (Nairobi)</timezone>
<timezone id="Asia/Tehran">Teheran</timezone>
<timezone id="Asia/Baku">Baku</timezone>
<timezone id="Asia/Tbilisi">Tbilisi</timezone>
@@ -62,11 +62,12 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Kiinan normaaliaika (Peking)</timezone>
<timezone id="Asia/Hong_Kong">Hongkong</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Perth</timezone>
- <timezone id="Asia/Taipei">Kiinan normaaliaika (Taipei)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Seoul</timezone>
<timezone id="Asia/Tokyo">Japanin normaaliaika (Tokio)</timezone>
<timezone id="Asia/Yakutsk">Jakutsk</timezone>
diff --git a/res/xml-fr/timezones.xml b/res/xml-fr/timezones.xml
index 6def475..d655e89 100644
--- a/res/xml-fr/timezones.xml
+++ b/res/xml-fr/timezones.xml
@@ -1,8 +1,8 @@
<timezones>
- <timezone id="Pacific/Majuro">Majuro</timezone>
+ <timezone id="Pacific/Majuro">Heure des îles Marshall (Majuro)</timezone>
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">Anchorage</timezone>
+ <timezone id="America/Anchorage">Alaska</timezone>
<timezone id="America/Los_Angeles">Heure du Pacifique (Los Angeles)</timezone>
<timezone id="America/Tijuana">Heure du Pacifique (Tijuana)</timezone>
<timezone id="America/Phoenix">Heure des Rocheuses (Phoenix)</timezone>
@@ -11,21 +11,21 @@
<timezone id="America/Costa_Rica">Heure du Centre (San José)</timezone>
<timezone id="America/Chicago">Heure du Centre (Chicago)</timezone>
<timezone id="America/Mexico_City">Heure du Centre (Mexico)</timezone>
- <timezone id="America/Regina">Heure du Centre (Regina)</timezone>
- <timezone id="America/Bogota">Bogota</timezone>
+ <timezone id="America/Regina">Heure du Centre (Régina)</timezone>
+ <timezone id="America/Bogota">Heure de Colombie (Bogota)</timezone>
<timezone id="America/New_York">Heure de l’Est (New York)</timezone>
<timezone id="America/Caracas">Caracas</timezone>
<timezone id="America/Barbados">Heure de l’Atlantique (Barbade (La))</timezone>
- <timezone id="America/Manaus">Manaus</timezone>
- <timezone id="America/Santiago">Santiago</timezone>
+ <timezone id="America/Manaus">Heure de l’Amazonie (Manaos)</timezone>
+ <timezone id="America/Santiago">Heure du Chili (Santiago)</timezone>
<timezone id="America/St_Johns">Heure de Terre-Neuve (Saint-Jean de Terre-Neuve)</timezone>
- <timezone id="America/Araguaina">Araguaína</timezone>
- <timezone id="America/Argentina/Buenos_Aires">Heure d’Argentine (Buenos Aires)</timezone>
+ <timezone id="America/Araguaina">Heure de Brasilia (Araguaína)</timezone>
+ <timezone id="America/Argentina/Buenos_Aires">Heure de l’Est argentin (Buenos Aires)</timezone>
<timezone id="America/Godthab">Heure de l’Ouest du Groenland (Godthåb)</timezone>
<timezone id="America/Montevideo">Montevideo</timezone>
<timezone id="Atlantic/South_Georgia">Heure de Géorgie du Sud (Géorgie du Sud)</timezone>
- <timezone id="Atlantic/Azores">Ponta Delgada</timezone>
- <timezone id="Atlantic/Cape_Verde">Cap Vert</timezone>
+ <timezone id="Atlantic/Azores">Açores</timezone>
+ <timezone id="Atlantic/Cape_Verde">Heure du Cap-Vert (Cap Vert)</timezone>
<timezone id="Africa/Casablanca">Casablanca</timezone>
<timezone id="Europe/London">Heure moyenne de Greenwich (Londres)</timezone>
<timezone id="Europe/Amsterdam">Heure de l’Europe centrale (Amsterdam)</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Heure de l’Europe centrale (Bruxelles)</timezone>
<timezone id="Europe/Sarajevo">Heure de l’Europe centrale (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Heure normale d’Afrique de l’Ouest (Brazzaville)</timezone>
+ <timezone id="Africa/Brazzaville">Heure d’Afrique de l’Ouest (Brazzaville)</timezone>
<timezone id="Asia/Amman">Heure normale de l’Europe de l’Est (Amman)</timezone>
<timezone id="Europe/Athens">Heure normale de l’Europe de l’Est (Athènes)</timezone>
<timezone id="Asia/Beirut">Heure normale de l’Europe de l’Est (Beyrouth)</timezone>
@@ -41,24 +41,24 @@
<timezone id="Europe/Helsinki">Heure normale de l’Europe de l’Est (Helsinki)</timezone>
<timezone id="Asia/Jerusalem">Heure d’Israël (Jérusalem)</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Heure normale d’Afrique centrale (Harare)</timezone>
+ <timezone id="Africa/Harare">Heure d’Afrique centrale (Harare)</timezone>
<timezone id="Asia/Baghdad">Heure de l’Arabie (Bagdad)</timezone>
<timezone id="Europe/Moscow">Moscou</timezone>
<timezone id="Asia/Kuwait">Heure de l’Arabie (Koweït)</timezone>
- <timezone id="Africa/Nairobi">Heure normale d’Afrique de l’Est (Nairobi)</timezone>
- <timezone id="Asia/Tehran">Heure normale d’Iran (Téhéran)</timezone>
+ <timezone id="Africa/Nairobi">Heure d’Afrique de l’Est (Nairobi)</timezone>
+ <timezone id="Asia/Tehran">Heure d’Iran (Téhéran)</timezone>
<timezone id="Asia/Baku">Bakou</timezone>
<timezone id="Asia/Tbilisi">Tbilissi</timezone>
<timezone id="Asia/Yerevan">Erevan</timezone>
<timezone id="Asia/Dubai">Heure du Golfe (Dubaï)</timezone>
<timezone id="Asia/Kabul">Heure d’Afghanistan (Kaboul)</timezone>
<timezone id="Asia/Karachi">Karâchi</timezone>
- <timezone id="Asia/Oral">Oral</timezone>
- <timezone id="Asia/Yekaterinburg">Iekaterinbourg</timezone>
- <timezone id="Asia/Calcutta">Heure normale de l’Inde (Kolkata)</timezone>
+ <timezone id="Asia/Oral">Ouralsk</timezone>
+ <timezone id="Asia/Yekaterinburg">Ekaterinbourg</timezone>
+ <timezone id="Asia/Calcutta">Heure de l’Inde (Kolkata)</timezone>
<timezone id="Asia/Colombo">Colombo</timezone>
<timezone id="Asia/Katmandu">Katmandou</timezone>
- <timezone id="Asia/Almaty">Almaty</timezone>
+ <timezone id="Asia/Almaty">Alma Ata</timezone>
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Heure de Krasnoïarsk (Krasnoïarsk)</timezone>
<timezone id="Asia/Bangkok">Heure d’Indochine (Bangkok)</timezone>
@@ -79,7 +79,7 @@
<timezone id="Asia/Vladivostok">Vladivostok</timezone>
<timezone id="Pacific/Guam">Hagåtña</timezone>
<timezone id="Asia/Magadan">Magadan</timezone>
- <timezone id="Pacific/Auckland">Auckland</timezone>
+ <timezone id="Pacific/Auckland">Heure de Nouvelle-Zélande (Auckland)</timezone>
<timezone id="Pacific/Fiji">Heure des îles Fidji (Fidji)</timezone>
- <timezone id="Pacific/Tongatapu">Nukuʻalofa</timezone>
+ <timezone id="Pacific/Tongatapu">Heure de Tonga (Nukuʻalofa)</timezone>
</timezones>
diff --git a/res/xml-he/timezones.xml b/res/xml-he/timezones.xml
index 510e0a5..9a2d9f3 100644
--- a/res/xml-he/timezones.xml
+++ b/res/xml-he/timezones.xml
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">ראנגון</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
<timezone id="Asia/Bangkok">בנקוק</timezone>
+ <timezone id="Asia/Shanghai">בייג'ין</timezone>
<timezone id="Asia/Hong_Kong">הונג קונג</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">קואלה לומפור</timezone>
diff --git a/res/xml-hr/timezones.xml b/res/xml-hr/timezones.xml
index 7280fdb..9a44c47 100644
--- a/res/xml-hr/timezones.xml
+++ b/res/xml-hr/timezones.xml
@@ -3,19 +3,19 @@
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
<timezone id="America/Anchorage">Alaska vremenska zona</timezone>
- <timezone id="America/Los_Angeles">Los Angeles</timezone>
- <timezone id="America/Tijuana">Tijuana</timezone>
- <timezone id="America/Phoenix">Phoenix</timezone>
+ <timezone id="America/Los_Angeles">Pacifičko vrijeme (Los Angeles)</timezone>
+ <timezone id="America/Tijuana">Pacifičko vrijeme (Tijuana)</timezone>
+ <timezone id="America/Phoenix">Planinsko vrijeme (Phoenix)</timezone>
<timezone id="America/Chihuahua">Chihuahua</timezone>
- <timezone id="America/Denver">Denver</timezone>
- <timezone id="America/Costa_Rica">Kostarika</timezone>
- <timezone id="America/Chicago">Chicago</timezone>
- <timezone id="America/Mexico_City">Mexico City</timezone>
- <timezone id="America/Regina">Regina</timezone>
+ <timezone id="America/Denver">Planinsko vrijeme (Denver)</timezone>
+ <timezone id="America/Costa_Rica">Središnje vrijeme (Kostarika)</timezone>
+ <timezone id="America/Chicago">Središnje vrijeme (Chicago)</timezone>
+ <timezone id="America/Mexico_City">Središnje vrijeme (Mexico City)</timezone>
+ <timezone id="America/Regina">Središnje vrijeme (Regina)</timezone>
<timezone id="America/Bogota">Bogota</timezone>
- <timezone id="America/New_York">New York</timezone>
+ <timezone id="America/New_York">Istočno vrijeme (New York)</timezone>
<timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Barbados</timezone>
+ <timezone id="America/Barbados">Atlantsko vrijeme (Barbados)</timezone>
<timezone id="America/Manaus">Manaus</timezone>
<timezone id="America/Santiago">Santiago</timezone>
<timezone id="America/St_Johns">St. John's</timezone>
@@ -24,7 +24,7 @@
<timezone id="America/Godthab">Godthab</timezone>
<timezone id="America/Montevideo">Montevideo</timezone>
<timezone id="Atlantic/South_Georgia">Južna Georgia</timezone>
- <timezone id="Atlantic/Azores">Azores</timezone>
+ <timezone id="Atlantic/Azores">Azorski otoci</timezone>
<timezone id="Atlantic/Cape_Verde">Zelenortska Republika</timezone>
<timezone id="Africa/Casablanca">Casablanca</timezone>
<timezone id="Europe/London">London</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Brussels</timezone>
<timezone id="Europe/Sarajevo">Sarajevo</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Brazzaville</timezone>
+ <timezone id="Africa/Brazzaville">Zapadna Afrika (Brazzaville)</timezone>
<timezone id="Asia/Amman">Amman</timezone>
<timezone id="Europe/Athens">Atena</timezone>
<timezone id="Asia/Beirut">Beirut</timezone>
@@ -41,11 +41,11 @@
<timezone id="Europe/Helsinki">Helsinki</timezone>
<timezone id="Asia/Jerusalem">Jerusalem</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Harare</timezone>
+ <timezone id="Africa/Harare">Središnja Afrika (Harare)</timezone>
<timezone id="Asia/Baghdad">Baghdad</timezone>
<timezone id="Europe/Moscow">Moskva</timezone>
<timezone id="Asia/Kuwait">Kuvajt</timezone>
- <timezone id="Africa/Nairobi">Nairobi</timezone>
+ <timezone id="Africa/Nairobi">Istočna Afrika (Nairobi)</timezone>
<timezone id="Asia/Tehran">Tehran</timezone>
<timezone id="Asia/Baku">Baku</timezone>
<timezone id="Asia/Tbilisi">Tbilisi</timezone>
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Peking</timezone>
<timezone id="Asia/Hong_Kong">Hong Kong</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
diff --git a/res/xml-hu/timezones.xml b/res/xml-hu/timezones.xml
index 7fcc513..7266860 100644
--- a/res/xml-hu/timezones.xml
+++ b/res/xml-hu/timezones.xml
@@ -2,7 +2,7 @@
<timezone id="Pacific/Majuro">Marshall-szigeteki idő (Majuro-zátony)</timezone>
<timezone id="Pacific/Midway">Midway-szigetek</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">anchorage-i idő</timezone>
+ <timezone id="America/Anchorage">Anchorage</timezone>
<timezone id="America/Los_Angeles">Csendes-óceáni idő (Los Angeles)</timezone>
<timezone id="America/Tijuana">Csendes-óceáni idő (Tijuana)</timezone>
<timezone id="America/Phoenix">Hegyvidéki idő (Phoenix)</timezone>
@@ -33,7 +33,7 @@
<timezone id="Europe/Brussels">Közép-európai idő (Brüsszel)</timezone>
<timezone id="Europe/Sarajevo">Közép-európai idő (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Nyugat-afrikai idő (Brazzaville)</timezone>
+ <timezone id="Africa/Brazzaville">Nigériai idő (Brazzaville)</timezone>
<timezone id="Asia/Amman">Kelet-európai idő (Amman)</timezone>
<timezone id="Europe/Athens">Kelet-európai idő (Athén)</timezone>
<timezone id="Asia/Beirut">Kelet-európai idő (Bejrút)</timezone>
@@ -41,11 +41,11 @@
<timezone id="Europe/Helsinki">Kelet-európai idő (Helsinki)</timezone>
<timezone id="Asia/Jerusalem">Izraeli zónaidő (Jerusalem)</timezone>
<timezone id="Europe/Minsk">Minszk</timezone>
- <timezone id="Africa/Harare">Közép-afrikai idő (Harare)</timezone>
+ <timezone id="Africa/Harare">Mozambiki idő (Harare)</timezone>
<timezone id="Asia/Baghdad">Arab idő (Bagdad)</timezone>
<timezone id="Europe/Moscow">Moszkva</timezone>
<timezone id="Asia/Kuwait">Arab idő (Kuvait)</timezone>
- <timezone id="Africa/Nairobi">Kelet-afrikai idő (Nairobi)</timezone>
+ <timezone id="Africa/Nairobi">Kenyai idő (Nairobi)</timezone>
<timezone id="Asia/Tehran">Iráni zónaidő (Teherán)</timezone>
<timezone id="Asia/Baku">Baku</timezone>
<timezone id="Asia/Tbilisi">Tbilisi</timezone>
@@ -58,15 +58,16 @@
<timezone id="Asia/Calcutta">Indiai zónaidő (Calcutta)</timezone>
<timezone id="Asia/Colombo">Colombo</timezone>
<timezone id="Asia/Katmandu">Nepáli idő (Katmandu)</timezone>
- <timezone id="Asia/Almaty">almati idő</timezone>
+ <timezone id="Asia/Almaty">Alma-Ata</timezone>
<timezone id="Asia/Rangoon">Myanmari idő (Rangoon)</timezone>
<timezone id="Asia/Krasnoyarsk">Krasznojarszki idő (Krasznojarszk)</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Kínai zónaidő (Peking)</timezone>
<timezone id="Asia/Hong_Kong">Hongkongi idő (Hong Kong)</timezone>
<timezone id="Asia/Irkutsk">Irkutszki idő (Irkutszk)</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Nyugat-ausztrál idő (Perth)</timezone>
- <timezone id="Asia/Taipei">Kínai zónaidő (Tajvan)</timezone>
+ <timezone id="Asia/Taipei">Tajvan</timezone>
<timezone id="Asia/Seoul">Koreai idő (Dél-Korea)</timezone>
<timezone id="Asia/Tokyo">Japán zónaidő (Tokio)</timezone>
<timezone id="Asia/Yakutsk">Jakutszki idő (Jakutszk)</timezone>
diff --git a/res/xml-id/timezones.xml b/res/xml-id/timezones.xml
index c1db837..ee625b0 100644
--- a/res/xml-id/timezones.xml
+++ b/res/xml-id/timezones.xml
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Beijing</timezone>
<timezone id="Asia/Hong_Kong">Hongkong</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
diff --git a/res/xml-ko/timezones.xml b/res/xml-ko/timezones.xml
index 6d62d03..711f732 100644
--- a/res/xml-ko/timezones.xml
+++ b/res/xml-ko/timezones.xml
@@ -23,9 +23,9 @@
<timezone id="America/Argentina/Buenos_Aires">부에노스 아이레스</timezone>
<timezone id="America/Godthab">고드호프</timezone>
<timezone id="America/Montevideo">몬테비데오</timezone>
- <timezone id="Atlantic/South_Georgia">남부 조지아</timezone>
+ <timezone id="Atlantic/South_Georgia">사우스 조지아 표준시 (남부 조지아)</timezone>
<timezone id="Atlantic/Azores">아조레스</timezone>
- <timezone id="Atlantic/Cape_Verde">카보 베르데</timezone>
+ <timezone id="Atlantic/Cape_Verde">카보 베르데 표준시 (카보 베르데)</timezone>
<timezone id="Africa/Casablanca">카사블랑카</timezone>
<timezone id="Europe/London">그리니치 표준시 (런던)</timezone>
<timezone id="Europe/Amsterdam">중부유럽 표준시 (암스텔담)</timezone>
@@ -42,9 +42,9 @@
<timezone id="Asia/Jerusalem">이스라엘 표준시 (예루살렘)</timezone>
<timezone id="Europe/Minsk">민스크</timezone>
<timezone id="Africa/Harare">중앙아프리카 시간 (하라레)</timezone>
- <timezone id="Asia/Baghdad">바그다드</timezone>
+ <timezone id="Asia/Baghdad">아라비아 시간 (바그다드)</timezone>
<timezone id="Europe/Moscow">모스크바</timezone>
- <timezone id="Asia/Kuwait">쿠웨이트</timezone>
+ <timezone id="Asia/Kuwait">아라비아 시간 (쿠웨이트)</timezone>
<timezone id="Africa/Nairobi">동아프리카 시간 (나이로비)</timezone>
<timezone id="Asia/Tehran">테헤란</timezone>
<timezone id="Asia/Baku">바쿠</timezone>
@@ -55,7 +55,7 @@
<timezone id="Asia/Karachi">카라치</timezone>
<timezone id="Asia/Oral">오랄</timezone>
<timezone id="Asia/Yekaterinburg">예카테린부르크</timezone>
- <timezone id="Asia/Calcutta">Calcutta</timezone>
+ <timezone id="Asia/Calcutta">인도 표준시 (Calcutta)</timezone>
<timezone id="Asia/Colombo">콜롬보</timezone>
<timezone id="Asia/Katmandu">카트만두</timezone>
<timezone id="Asia/Almaty">알마티</timezone>
@@ -80,6 +80,6 @@
<timezone id="Pacific/Guam">괌</timezone>
<timezone id="Asia/Magadan">마가단</timezone>
<timezone id="Pacific/Auckland">뉴질랜드 시간 (오클랜드)</timezone>
- <timezone id="Pacific/Fiji">피지</timezone>
+ <timezone id="Pacific/Fiji">피지 표준시 (피지)</timezone>
<timezone id="Pacific/Tongatapu">통가타푸</timezone>
</timezones>
diff --git a/res/xml-nb/timezones.xml b/res/xml-nb/timezones.xml
index 4bf4145..f374a34 100644
--- a/res/xml-nb/timezones.xml
+++ b/res/xml-nb/timezones.xml
@@ -2,24 +2,24 @@
<timezone id="Pacific/Majuro">Majuro</timezone>
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">Anchorage</timezone>
- <timezone id="America/Los_Angeles">Los Angeles</timezone>
- <timezone id="America/Tijuana">Tijuana</timezone>
- <timezone id="America/Phoenix">Phoenix</timezone>
+ <timezone id="America/Anchorage">Alaska</timezone>
+ <timezone id="America/Los_Angeles">PST (Los Angeles)</timezone>
+ <timezone id="America/Tijuana">PST (Tijuana)</timezone>
+ <timezone id="America/Phoenix">MST (Phoenix)</timezone>
<timezone id="America/Chihuahua">Chihuahua</timezone>
- <timezone id="America/Denver">Denver</timezone>
- <timezone id="America/Costa_Rica">Costa Rica</timezone>
- <timezone id="America/Chicago">Chicago</timezone>
- <timezone id="America/Mexico_City">Mexico by</timezone>
- <timezone id="America/Regina">Regina</timezone>
+ <timezone id="America/Denver">MST (Denver)</timezone>
+ <timezone id="America/Costa_Rica">Normaltid (Costa Rica)</timezone>
+ <timezone id="America/Chicago">Normaltid (Chicago)</timezone>
+ <timezone id="America/Mexico_City">Normaltid (Mexico by)</timezone>
+ <timezone id="America/Regina">Normaltid (Regina)</timezone>
<timezone id="America/Bogota">Bogotá</timezone>
<timezone id="America/New_York">New York</timezone>
<timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Barbados</timezone>
- <timezone id="America/Manaus">Manaus</timezone>
+ <timezone id="America/Barbados">AT (Barbados)</timezone>
+ <timezone id="America/Manaus">Amazonas-tid (Manaus)</timezone>
<timezone id="America/Santiago">Santiago</timezone>
<timezone id="America/St_Johns">St. John's</timezone>
- <timezone id="America/Araguaina">Araguaína</timezone>
+ <timezone id="America/Araguaina">Brasilia-tid (Araguaína)</timezone>
<timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
<timezone id="America/Godthab">Godthåb</timezone>
<timezone id="America/Montevideo">Montevideo</timezone>
@@ -62,11 +62,12 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsk</timezone>
<timezone id="Asia/Bangkok">Indokinesisk tid (Bangkok)</timezone>
+ <timezone id="Asia/Shanghai">Kinesisk standardtid (Beijing)</timezone>
<timezone id="Asia/Hong_Kong">Hong Kong-tid (Hong Kong)</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Vestaustralsk tid (Perth)</timezone>
- <timezone id="Asia/Taipei">Kinesisk standardtid (Taipei)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Koreansk standardtid (Seoul)</timezone>
<timezone id="Asia/Tokyo">Japansk standardtid (Tokyo)</timezone>
<timezone id="Asia/Yakutsk">Jakutsk</timezone>
diff --git a/res/xml-nl/timezones.xml b/res/xml-nl/timezones.xml
index e2315df..ee2453e 100644
--- a/res/xml-nl/timezones.xml
+++ b/res/xml-nl/timezones.xml
@@ -62,7 +62,7 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
- <timezone id="Asia/Shanghai">Chinese standaardtijd (Peking)</timezone>
+ <timezone id="Asia/Shanghai">Chinese standaardtijd (Beijing)</timezone>
<timezone id="Asia/Hong_Kong">Hongkong</timezone>
<timezone id="Asia/Irkutsk">Irkoetsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
diff --git a/res/xml-no/timezones.xml b/res/xml-no/timezones.xml
deleted file mode 100644
index 85201b9..0000000
--- a/res/xml-no/timezones.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<timezones>
- <timezone id="Pacific/Majuro">Majuro</timezone>
- <timezone id="Pacific/Midway">Midway</timezone>
- <timezone id="Pacific/Honolulu">Honolulu</timezone>
- <timezone id="America/Anchorage">Anchorage</timezone>
- <timezone id="America/Los_Angeles">Los Angeles</timezone>
- <timezone id="America/Tijuana">Tijuana</timezone>
- <timezone id="America/Phoenix">Phoenix</timezone>
- <timezone id="America/Chihuahua">Chihuahua</timezone>
- <timezone id="America/Denver">Denver</timezone>
- <timezone id="America/Costa_Rica">Costa Rica</timezone>
- <timezone id="America/Chicago">Chicago</timezone>
- <timezone id="America/Mexico_City">Mexico City</timezone>
- <timezone id="America/Regina">Regina</timezone>
- <timezone id="America/Bogota">Bogota</timezone>
- <timezone id="America/New_York">New York</timezone>
- <timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Barbados</timezone>
- <timezone id="America/Manaus">Manaus</timezone>
- <timezone id="America/Santiago">Santiago</timezone>
- <timezone id="America/St_Johns">St. John's</timezone>
- <timezone id="America/Araguaina">Araguaina</timezone>
- <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
- <timezone id="America/Godthab">Godthab</timezone>
- <timezone id="America/Montevideo">Montevideo</timezone>
- <timezone id="Atlantic/South_Georgia">South Georgia</timezone>
- <timezone id="Atlantic/Azores">Azores</timezone>
- <timezone id="Atlantic/Cape_Verde">Cape Verde</timezone>
- <timezone id="Africa/Casablanca">Casablanca</timezone>
- <timezone id="Europe/London">London</timezone>
- <timezone id="Europe/Amsterdam">Amsterdam</timezone>
- <timezone id="Europe/Belgrade">Belgrade</timezone>
- <timezone id="Europe/Brussels">Brussels</timezone>
- <timezone id="Europe/Sarajevo">Sarajevo</timezone>
- <timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Brazzaville</timezone>
- <timezone id="Asia/Amman">Amman</timezone>
- <timezone id="Europe/Athens">Athens</timezone>
- <timezone id="Asia/Beirut">Beirut</timezone>
- <timezone id="Africa/Cairo">Cairo</timezone>
- <timezone id="Europe/Helsinki">Helsinki</timezone>
- <timezone id="Asia/Jerusalem">Jerusalem</timezone>
- <timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Harare</timezone>
- <timezone id="Asia/Baghdad">Baghdad</timezone>
- <timezone id="Europe/Moscow">Moscow</timezone>
- <timezone id="Asia/Kuwait">Kuwait</timezone>
- <timezone id="Africa/Nairobi">Nairobi</timezone>
- <timezone id="Asia/Tehran">Tehran</timezone>
- <timezone id="Asia/Baku">Baku</timezone>
- <timezone id="Asia/Tbilisi">Tbilisi</timezone>
- <timezone id="Asia/Yerevan">Yerevan</timezone>
- <timezone id="Asia/Dubai">Dubai</timezone>
- <timezone id="Asia/Kabul">Kabul</timezone>
- <timezone id="Asia/Karachi">Karachi</timezone>
- <timezone id="Asia/Oral">Oral</timezone>
- <timezone id="Asia/Yekaterinburg">Yekaterinburg</timezone>
- <timezone id="Asia/Calcutta">Calcutta</timezone>
- <timezone id="Asia/Colombo">Colombo</timezone>
- <timezone id="Asia/Katmandu">Katmandu</timezone>
- <timezone id="Asia/Almaty">Almaty</timezone>
- <timezone id="Asia/Rangoon">Rangoon</timezone>
- <timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
- <timezone id="Asia/Bangkok">Bangkok</timezone>
- <timezone id="Asia/Shanghai">Beijing</timezone>
- <timezone id="Asia/Hong_Kong">Hong Kong</timezone>
- <timezone id="Asia/Irkutsk">Irkutsk</timezone>
- <timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
- <timezone id="Australia/Perth">Perth</timezone>
- <timezone id="Asia/Taipei">Taipei</timezone>
- <timezone id="Asia/Seoul">Seoul</timezone>
- <timezone id="Asia/Tokyo">Tokyo</timezone>
- <timezone id="Asia/Yakutsk">Yakutsk</timezone>
- <timezone id="Australia/Adelaide">Adelaide</timezone>
- <timezone id="Australia/Darwin">Darwin</timezone>
- <timezone id="Australia/Brisbane">Brisbane</timezone>
- <timezone id="Australia/Hobart">Hobart</timezone>
- <timezone id="Australia/Sydney">Sydney</timezone>
- <timezone id="Asia/Vladivostok">Vladivostok</timezone>
- <timezone id="Pacific/Guam">Guam</timezone>
- <timezone id="Asia/Magadan">Magadan</timezone>
- <timezone id="Pacific/Auckland">Auckland</timezone>
- <timezone id="Pacific/Fiji">Fiji</timezone>
- <timezone id="Pacific/Tongatapu">Tongatapu</timezone>
-</timezones>
diff --git a/res/xml-pt/timezones.xml b/res/xml-pt/timezones.xml
index b77e30f..176d214 100644
--- a/res/xml-pt/timezones.xml
+++ b/res/xml-pt/timezones.xml
@@ -1,5 +1,5 @@
<timezones>
- <timezone id="Pacific/Majuro">Majuro</timezone>
+ <timezone id="Pacific/Majuro">Horário das Ilhas Marshall (Majuro)</timezone>
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
<timezone id="America/Anchorage">Anchorage</timezone>
@@ -8,24 +8,24 @@
<timezone id="America/Phoenix">Horário da Montanha (Phoenix)</timezone>
<timezone id="America/Chihuahua">Chihuahua</timezone>
<timezone id="America/Denver">Horário da Montanha (Denver)</timezone>
- <timezone id="America/Costa_Rica">Horário Padrão Central (Costa Rica)</timezone>
- <timezone id="America/Chicago">Horário Padrão Central (Chicago)</timezone>
- <timezone id="America/Mexico_City">Horário Padrão Central (Cidade do México)</timezone>
- <timezone id="America/Regina">Horário Padrão Central (Regina)</timezone>
- <timezone id="America/Bogota">Bogotá</timezone>
- <timezone id="America/New_York">Horário Padrão Oriental (Nova Iorque)</timezone>
- <timezone id="America/Caracas">Caracas</timezone>
+ <timezone id="America/Costa_Rica">Horário Central (Costa Rica)</timezone>
+ <timezone id="America/Chicago">Horário Central (Chicago)</timezone>
+ <timezone id="America/Mexico_City">Horário Central (Cidade do México)</timezone>
+ <timezone id="America/Regina">Horário Central (Regina)</timezone>
+ <timezone id="America/Bogota">Horário da Colômbia (Bogotá)</timezone>
+ <timezone id="America/New_York">Horário Oriental (Nova York)</timezone>
+ <timezone id="America/Caracas">Horário da Venezuela (Caracas)</timezone>
<timezone id="America/Barbados">Horário do Atlântico (Barbados)</timezone>
<timezone id="America/Manaus">Horário do Amazonas (Manaus)</timezone>
- <timezone id="America/Santiago">Santiago</timezone>
- <timezone id="America/St_Johns">Horário Padrão de Terra Nova (St. Johns)</timezone>
- <timezone id="America/Araguaina">Araguaína</timezone>
+ <timezone id="America/Santiago">Horário do Chile (Santiago)</timezone>
+ <timezone id="America/St_Johns">Horário de Terra Nova (St. Johns)</timezone>
+ <timezone id="America/Araguaina">Horário de Brasília (Araguaína)</timezone>
<timezone id="America/Argentina/Buenos_Aires">Horário da Argentina (Buenos Aires)</timezone>
<timezone id="America/Godthab">Horário da Groenlândia Ocidental (Godthab)</timezone>
- <timezone id="America/Montevideo">Montevidéu</timezone>
- <timezone id="Atlantic/South_Georgia">Geórgia do Sul</timezone>
+ <timezone id="America/Montevideo">Horário do Uruguai (Montevidéu)</timezone>
+ <timezone id="Atlantic/South_Georgia">Horário da Geórgia do Sul (Geórgia do Sul)</timezone>
<timezone id="Atlantic/Azores">Açores</timezone>
- <timezone id="Atlantic/Cape_Verde">Cabo Verde</timezone>
+ <timezone id="Atlantic/Cape_Verde">Horário do Cabo Verde (Cabo Verde)</timezone>
<timezone id="Africa/Casablanca">Casablanca</timezone>
<timezone id="Europe/London">Horário do Meridiano de Greenwich (Londres)</timezone>
<timezone id="Europe/Amsterdam">Horário da Europa Central (Amsterdã)</timezone>
@@ -39,46 +39,47 @@
<timezone id="Asia/Beirut">Horário Padrão da Europa Oriental (Beirute)</timezone>
<timezone id="Africa/Cairo">Horário Padrão da Europa Oriental (Cairo)</timezone>
<timezone id="Europe/Helsinki">Horário Padrão da Europa Oriental (Helsinque)</timezone>
- <timezone id="Asia/Jerusalem">Horário Padrão de Israel (Jerusalém)</timezone>
+ <timezone id="Asia/Jerusalem">Horário de Israel (Jerusalém)</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
<timezone id="Africa/Harare">Horário da África Central (Harare)</timezone>
- <timezone id="Asia/Baghdad">Bagdá</timezone>
+ <timezone id="Asia/Baghdad">Horário da Arábia (Bagdá)</timezone>
<timezone id="Europe/Moscow">Moscou</timezone>
- <timezone id="Asia/Kuwait">Kuwait</timezone>
+ <timezone id="Asia/Kuwait">Horário da Arábia (Kuwait)</timezone>
<timezone id="Africa/Nairobi">Horário da África Oriental (Nairóbi)</timezone>
- <timezone id="Asia/Tehran">Teerã</timezone>
+ <timezone id="Asia/Tehran">Horário Padrão do Irã (Teerã)</timezone>
<timezone id="Asia/Baku">Baku</timezone>
<timezone id="Asia/Tbilisi">Tbilisi</timezone>
<timezone id="Asia/Yerevan">Ierevan</timezone>
- <timezone id="Asia/Dubai">Dubai</timezone>
- <timezone id="Asia/Kabul">Cabul</timezone>
+ <timezone id="Asia/Dubai">Horário do Golfo (Dubai)</timezone>
+ <timezone id="Asia/Kabul">Horário do Afeganistão (Cabul)</timezone>
<timezone id="Asia/Karachi">Karachi</timezone>
<timezone id="Asia/Oral">Oral</timezone>
- <timezone id="Asia/Yekaterinburg">Yekaterinburg</timezone>
+ <timezone id="Asia/Yekaterinburg">Ecaterimburgo</timezone>
<timezone id="Asia/Calcutta">Horário Padrão da Índia (Calcutta)</timezone>
<timezone id="Asia/Colombo">Colombo</timezone>
- <timezone id="Asia/Katmandu">Catmandu</timezone>
+ <timezone id="Asia/Katmandu">Horário do Nepal (Catmandu)</timezone>
<timezone id="Asia/Almaty">Almaty</timezone>
- <timezone id="Asia/Rangoon">Rangoon</timezone>
- <timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
- <timezone id="Asia/Bangkok">Bangkok</timezone>
- <timezone id="Asia/Hong_Kong">Hong Kong</timezone>
- <timezone id="Asia/Irkutsk">Irkutsk</timezone>
+ <timezone id="Asia/Rangoon">Horário de Mianmar (Rangoon)</timezone>
+ <timezone id="Asia/Krasnoyarsk">Horário de Krasnoyarsk (Krasnoyarsk)</timezone>
+ <timezone id="Asia/Bangkok">Horário da Indochina (Bangkok)</timezone>
+ <timezone id="Asia/Shanghai">Horário da China (Beijing)</timezone>
+ <timezone id="Asia/Hong_Kong">Horário de Hong Kong (Hong Kong)</timezone>
+ <timezone id="Asia/Irkutsk">Horário de Irkutsk (Irkutsk)</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
- <timezone id="Australia/Perth">Perth</timezone>
- <timezone id="Asia/Taipei">Horário Padrão da China (Taipei)</timezone>
- <timezone id="Asia/Seoul">Seul</timezone>
- <timezone id="Asia/Tokyo">Horário Padrão do Japão (Tóquio)</timezone>
- <timezone id="Asia/Yakutsk">Yakutsk</timezone>
+ <timezone id="Australia/Perth">Horário da Austrália Ocidental (Perth)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
+ <timezone id="Asia/Seoul">Horário da Coréia (Seul)</timezone>
+ <timezone id="Asia/Tokyo">Horário do Japão (Tóquio)</timezone>
+ <timezone id="Asia/Yakutsk">Horário de Yakutsk (Yakutsk)</timezone>
<timezone id="Australia/Adelaide">Horário da Austrália Central (Adelaide)</timezone>
<timezone id="Australia/Darwin">Horário da Austrália Central (Darwin)</timezone>
<timezone id="Australia/Brisbane">Horário da Austrália Oriental (Brisbane)</timezone>
<timezone id="Australia/Hobart">Horário da Austrália Oriental (Hobart)</timezone>
<timezone id="Australia/Sydney">Horário da Austrália Oriental (Sydney)</timezone>
- <timezone id="Asia/Vladivostok">Vladivostok</timezone>
+ <timezone id="Asia/Vladivostok">Horário de Vladivostok (Vladivostok)</timezone>
<timezone id="Pacific/Guam">Guam</timezone>
- <timezone id="Asia/Magadan">Magadan</timezone>
+ <timezone id="Asia/Magadan">Horário de Magadan (Magadan)</timezone>
<timezone id="Pacific/Auckland">Horário da Nova Zelândia (Auckland)</timezone>
- <timezone id="Pacific/Fiji">Fiji</timezone>
- <timezone id="Pacific/Tongatapu">Tongatapu</timezone>
+ <timezone id="Pacific/Fiji">Horário de Fiji (Fiji)</timezone>
+ <timezone id="Pacific/Tongatapu">Horário de Tonga (Tongatapu)</timezone>
</timezones>
diff --git a/res/xml-ro/timezones.xml b/res/xml-ro/timezones.xml
index c875ef7..c87d0e0 100644
--- a/res/xml-ro/timezones.xml
+++ b/res/xml-ro/timezones.xml
@@ -3,49 +3,49 @@
<timezone id="Pacific/Midway">Midway</timezone>
<timezone id="Pacific/Honolulu">Honolulu</timezone>
<timezone id="America/Anchorage">Anchorage</timezone>
- <timezone id="America/Los_Angeles">Los Angeles</timezone>
- <timezone id="America/Tijuana">Tijuana</timezone>
- <timezone id="America/Phoenix">Phoenix</timezone>
+ <timezone id="America/Los_Angeles">Ora zonei Pacific (Los Angeles)</timezone>
+ <timezone id="America/Tijuana">Ora zonei Pacific (Tijuana)</timezone>
+ <timezone id="America/Phoenix">Ora zonei montane (Phoenix)</timezone>
<timezone id="America/Chihuahua">Chihuahua</timezone>
- <timezone id="America/Denver">Denver</timezone>
- <timezone id="America/Costa_Rica">Costa Rica</timezone>
- <timezone id="America/Chicago">Chicago</timezone>
- <timezone id="America/Mexico_City">Mexico City</timezone>
- <timezone id="America/Regina">Regina</timezone>
+ <timezone id="America/Denver">Ora zonei montane (Denver)</timezone>
+ <timezone id="America/Costa_Rica">Ora Centrală (Costa Rica)</timezone>
+ <timezone id="America/Chicago">Ora Centrală (Chicago)</timezone>
+ <timezone id="America/Mexico_City">Ora Centrală (Mexico City)</timezone>
+ <timezone id="America/Regina">Ora Centrală (Regina)</timezone>
<timezone id="America/Bogota">Bogota</timezone>
- <timezone id="America/New_York">New York</timezone>
+ <timezone id="America/New_York">Ora orientală (New York)</timezone>
<timezone id="America/Caracas">Caracas</timezone>
- <timezone id="America/Barbados">Barbados</timezone>
- <timezone id="America/Manaus">Manaus</timezone>
+ <timezone id="America/Barbados">Ora zonei Atlantic (Barbados)</timezone>
+ <timezone id="America/Manaus">Ora Amazon (Manaus)</timezone>
<timezone id="America/Santiago">Santiago</timezone>
<timezone id="America/St_Johns">St. John's</timezone>
<timezone id="America/Araguaina">Araguaina</timezone>
- <timezone id="America/Argentina/Buenos_Aires">Buenos Aires</timezone>
+ <timezone id="America/Argentina/Buenos_Aires">Ora Argentinei (Buenos Aires)</timezone>
<timezone id="America/Godthab">Godthab</timezone>
<timezone id="America/Montevideo">Montevideo</timezone>
<timezone id="Atlantic/South_Georgia">Georgia de Sud</timezone>
<timezone id="Atlantic/Azores">Azore</timezone>
<timezone id="Atlantic/Cape_Verde">Capul Verde</timezone>
<timezone id="Africa/Casablanca">Casablanca</timezone>
- <timezone id="Europe/London">Londra</timezone>
- <timezone id="Europe/Amsterdam">Amsterdam</timezone>
- <timezone id="Europe/Belgrade">Belgrade</timezone>
- <timezone id="Europe/Brussels">Bruxelles</timezone>
- <timezone id="Europe/Sarajevo">Sarajevo</timezone>
+ <timezone id="Europe/London">Greenwich Mean Time (Londra)</timezone>
+ <timezone id="Europe/Amsterdam">Ora Europei Centrale (Amsterdam)</timezone>
+ <timezone id="Europe/Belgrade">Ora Europei Centrale (Belgrade)</timezone>
+ <timezone id="Europe/Brussels">Ora Europei Centrale (Bruxelles)</timezone>
+ <timezone id="Europe/Sarajevo">Ora Europei Centrale (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Windhoek</timezone>
- <timezone id="Africa/Brazzaville">Brazzaville</timezone>
- <timezone id="Asia/Amman">Amman</timezone>
- <timezone id="Europe/Athens">Atena</timezone>
- <timezone id="Asia/Beirut">Beirut</timezone>
- <timezone id="Africa/Cairo">Cairo</timezone>
- <timezone id="Europe/Helsinki">Helsinki</timezone>
+ <timezone id="Africa/Brazzaville">Ora Africii Occidentale (Brazzaville)</timezone>
+ <timezone id="Asia/Amman">Ora Europei de Est (Amman)</timezone>
+ <timezone id="Europe/Athens">Ora Europei de Est (Atena)</timezone>
+ <timezone id="Asia/Beirut">Ora Europei de Est (Beirut)</timezone>
+ <timezone id="Africa/Cairo">Ora Europei de Est (Cairo)</timezone>
+ <timezone id="Europe/Helsinki">Ora Europei de Est (Helsinki)</timezone>
<timezone id="Asia/Jerusalem">Ierusalim</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
- <timezone id="Africa/Harare">Harare</timezone>
+ <timezone id="Africa/Harare">Ora Africii Centrale (Harare)</timezone>
<timezone id="Asia/Baghdad">Bagdad</timezone>
<timezone id="Europe/Moscow">Moscova</timezone>
<timezone id="Asia/Kuwait">Kuweit</timezone>
- <timezone id="Africa/Nairobi">Nairobi</timezone>
+ <timezone id="Africa/Nairobi">Ora Africii Orientale (Nairobi)</timezone>
<timezone id="Asia/Tehran">Teheran</timezone>
<timezone id="Asia/Baku">Baku</timezone>
<timezone id="Asia/Tbilisi">Tbilisi</timezone>
@@ -60,21 +60,22 @@
<timezone id="Asia/Katmandu">Katmandu</timezone>
<timezone id="Asia/Almaty">Almaty</timezone>
<timezone id="Asia/Rangoon">Rangoon</timezone>
- <timezone id="Asia/Krasnoyarsk">Krasnoyarsk</timezone>
+ <timezone id="Asia/Krasnoyarsk">Krasnoiarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Beijing</timezone>
<timezone id="Asia/Hong_Kong">Hong Kong</timezone>
<timezone id="Asia/Irkutsk">Irkuțk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
- <timezone id="Australia/Perth">Perth</timezone>
+ <timezone id="Australia/Perth">Ora Australiei Occidentale (Perth)</timezone>
<timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Seul</timezone>
<timezone id="Asia/Tokyo">Tokyo</timezone>
<timezone id="Asia/Yakutsk">Yakuțk</timezone>
- <timezone id="Australia/Adelaide">Adelaide</timezone>
- <timezone id="Australia/Darwin">Darwin</timezone>
- <timezone id="Australia/Brisbane">Brisbane</timezone>
- <timezone id="Australia/Hobart">Hobart</timezone>
- <timezone id="Australia/Sydney">Sydney</timezone>
+ <timezone id="Australia/Adelaide">Ora Australiei Centrale (Adelaide)</timezone>
+ <timezone id="Australia/Darwin">Ora Australiei Centrale (Darwin)</timezone>
+ <timezone id="Australia/Brisbane">Ora Australiei Orientale (Brisbane)</timezone>
+ <timezone id="Australia/Hobart">Ora Australiei Orientale (Hobart)</timezone>
+ <timezone id="Australia/Sydney">Ora Australiei Orientale (Sydney)</timezone>
<timezone id="Asia/Vladivostok">Vladivostok</timezone>
<timezone id="Pacific/Guam">Guam</timezone>
<timezone id="Asia/Magadan">Magadan</timezone>
diff --git a/res/xml-sk/timezones.xml b/res/xml-sk/timezones.xml
index bd00b10..2f4254c 100644
--- a/res/xml-sk/timezones.xml
+++ b/res/xml-sk/timezones.xml
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsko</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Peking</timezone>
<timezone id="Asia/Hong_Kong">Hongkong</timezone>
<timezone id="Asia/Irkutsk">Irkutsko</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
diff --git a/res/xml-sr/timezones.xml b/res/xml-sr/timezones.xml
index 1b7517a..51caf08 100644
--- a/res/xml-sr/timezones.xml
+++ b/res/xml-sr/timezones.xml
@@ -1,84 +1,85 @@
<timezones>
- <timezone id="Pacific/Majuro">Мајуро</timezone>
+ <timezone id="Pacific/Majuro">Маршалска Острва време (Мајуро)</timezone>
<timezone id="Pacific/Midway">Мидвеј</timezone>
<timezone id="Pacific/Honolulu">Хонолулу</timezone>
<timezone id="America/Anchorage">Енкориџ</timezone>
- <timezone id="America/Los_Angeles">Лос Анђелес</timezone>
- <timezone id="America/Tijuana">Тихуана</timezone>
- <timezone id="America/Phoenix">Феникс</timezone>
+ <timezone id="America/Los_Angeles">Пацифичко време (Лос Анђелес)</timezone>
+ <timezone id="America/Tijuana">Пацифичко време (Тихуана)</timezone>
+ <timezone id="America/Phoenix">Планинско време (Феникс)</timezone>
<timezone id="America/Chihuahua">Чихуахуа</timezone>
- <timezone id="America/Denver">Денвер</timezone>
- <timezone id="America/Costa_Rica">Костарика</timezone>
- <timezone id="America/Chicago">Чикаго</timezone>
- <timezone id="America/Mexico_City">Мексико Сити</timezone>
- <timezone id="America/Regina">Regina</timezone>
- <timezone id="America/Bogota">Богота</timezone>
- <timezone id="America/New_York">Њујорк</timezone>
- <timezone id="America/Caracas">Каракас</timezone>
- <timezone id="America/Barbados">Барбадос</timezone>
- <timezone id="America/Manaus">Манаус</timezone>
- <timezone id="America/Santiago">Сантијаго</timezone>
- <timezone id="America/St_Johns">Св. Џон</timezone>
- <timezone id="America/Araguaina">Арагвајана</timezone>
- <timezone id="America/Argentina/Buenos_Aires">Буенос Аирес</timezone>
- <timezone id="America/Godthab">Нук</timezone>
- <timezone id="America/Montevideo">Монтевидео</timezone>
- <timezone id="Atlantic/South_Georgia">Јужна Џорџија</timezone>
+ <timezone id="America/Denver">Планинско време (Денвер)</timezone>
+ <timezone id="America/Costa_Rica">Централно време (Костарика)</timezone>
+ <timezone id="America/Chicago">Централно време (Чикаго)</timezone>
+ <timezone id="America/Mexico_City">Централно време (Мексико Сити)</timezone>
+ <timezone id="America/Regina">Централно време (Регина)</timezone>
+ <timezone id="America/Bogota">Колумбија време (Богота)</timezone>
+ <timezone id="America/New_York">Источно време (Њујорк)</timezone>
+ <timezone id="America/Caracas">Венецуела време (Каракас)</timezone>
+ <timezone id="America/Barbados">Атланско време (Барбадос)</timezone>
+ <timezone id="America/Manaus">Амазон време (Манаус)</timezone>
+ <timezone id="America/Santiago">Чиле време (Сантијаго)</timezone>
+ <timezone id="America/St_Johns">Њуфаундленд време (Св. Џон)</timezone>
+ <timezone id="America/Araguaina">Бразилија време (Арагвајана)</timezone>
+ <timezone id="America/Argentina/Buenos_Aires">Аргентина време (Буенос Аирес)</timezone>
+ <timezone id="America/Godthab">Западни Гренланд време (Нук)</timezone>
+ <timezone id="America/Montevideo">Уругвај време (Монтевидео)</timezone>
+ <timezone id="Atlantic/South_Georgia">Јужна Џорџија време (Јужна Џорџија)</timezone>
<timezone id="Atlantic/Azores">Азори</timezone>
- <timezone id="Atlantic/Cape_Verde">Капе Верде</timezone>
+ <timezone id="Atlantic/Cape_Verde">Зелениртско време (Капе Верде)</timezone>
<timezone id="Africa/Casablanca">Казабланка</timezone>
- <timezone id="Europe/London">Лондон</timezone>
+ <timezone id="Europe/London">Гринвич средње време (Лондон)</timezone>
<timezone id="Europe/Amsterdam">Средњеевропско време (Амстердам)</timezone>
<timezone id="Europe/Belgrade">Средњеевропско време (Belgrade)</timezone>
<timezone id="Europe/Brussels">Средњеевропско време (Брисел)</timezone>
<timezone id="Europe/Sarajevo">Средњеевропско време (Sarajevo)</timezone>
<timezone id="Africa/Windhoek">Виндхук</timezone>
- <timezone id="Africa/Brazzaville">Бразавил</timezone>
+ <timezone id="Africa/Brazzaville">Западно-афричко време (Бразавил)</timezone>
<timezone id="Asia/Amman">Источноевропско време (Аман)</timezone>
<timezone id="Europe/Athens">Источноевропско време (Атина)</timezone>
<timezone id="Asia/Beirut">Источноевропско време (Бејрут)</timezone>
<timezone id="Africa/Cairo">Источноевропско време (Каиро)</timezone>
<timezone id="Europe/Helsinki">Источноевропско време (Хелсинки)</timezone>
- <timezone id="Asia/Jerusalem">Jerusalem</timezone>
+ <timezone id="Asia/Jerusalem">Израелско стандардно време (Jerusalem)</timezone>
<timezone id="Europe/Minsk">Минск</timezone>
- <timezone id="Africa/Harare">Хараре</timezone>
- <timezone id="Asia/Baghdad">Багдад</timezone>
+ <timezone id="Africa/Harare">Централно-афричко време (Хараре)</timezone>
+ <timezone id="Asia/Baghdad">Арабијско време (Багдад)</timezone>
<timezone id="Europe/Moscow">Москва</timezone>
- <timezone id="Asia/Kuwait">Кувајт</timezone>
- <timezone id="Africa/Nairobi">Најроби</timezone>
- <timezone id="Asia/Tehran">Техеран</timezone>
+ <timezone id="Asia/Kuwait">Арабијско време (Кувајт)</timezone>
+ <timezone id="Africa/Nairobi">Источно-афричко време (Најроби)</timezone>
+ <timezone id="Asia/Tehran">Иран стандардно време (Техеран)</timezone>
<timezone id="Asia/Baku">Баку</timezone>
<timezone id="Asia/Tbilisi">Тбилиси</timezone>
<timezone id="Asia/Yerevan">Јереван</timezone>
- <timezone id="Asia/Dubai">Дубаи</timezone>
+ <timezone id="Asia/Dubai">Залив време (Дубаи)</timezone>
<timezone id="Asia/Kabul">Кабул</timezone>
<timezone id="Asia/Karachi">Карачи</timezone>
<timezone id="Asia/Oral">Орал</timezone>
<timezone id="Asia/Yekaterinburg">Јекатеринбург</timezone>
- <timezone id="Asia/Calcutta">Calcutta</timezone>
+ <timezone id="Asia/Calcutta">Индијско стандардно време (Calcutta)</timezone>
<timezone id="Asia/Colombo">Коломбо</timezone>
- <timezone id="Asia/Katmandu">Катманду</timezone>
- <timezone id="Asia/Almaty">Almaty</timezone>
- <timezone id="Asia/Rangoon">Рангун</timezone>
- <timezone id="Asia/Krasnoyarsk">Краснојарск</timezone>
- <timezone id="Asia/Bangkok">Банкок</timezone>
- <timezone id="Asia/Hong_Kong">Хонг Конг</timezone>
- <timezone id="Asia/Irkutsk">Иркуцк</timezone>
+ <timezone id="Asia/Katmandu">Непал време (Катманду)</timezone>
+ <timezone id="Asia/Almaty">Алмати</timezone>
+ <timezone id="Asia/Rangoon">Мијанмар време (Рангун)</timezone>
+ <timezone id="Asia/Krasnoyarsk">Краснојарск време (Краснојарск)</timezone>
+ <timezone id="Asia/Bangkok">Индокина време (Банкок)</timezone>
+ <timezone id="Asia/Shanghai">Кина време (Пекинг)</timezone>
+ <timezone id="Asia/Hong_Kong">Хонг Конг време (Хонг Конг)</timezone>
+ <timezone id="Asia/Irkutsk">Иркуцк време (Иркуцк)</timezone>
<timezone id="Asia/Kuala_Lumpur">Куала Лумпур</timezone>
- <timezone id="Australia/Perth">Перт</timezone>
+ <timezone id="Australia/Perth">Аустралијско западно време (Перт)</timezone>
<timezone id="Asia/Taipei">Тајпеј</timezone>
- <timezone id="Asia/Seoul">Сеул</timezone>
- <timezone id="Asia/Tokyo">Токио</timezone>
- <timezone id="Asia/Yakutsk">Јакутск</timezone>
- <timezone id="Australia/Adelaide">Аделајд</timezone>
- <timezone id="Australia/Darwin">Дарвин</timezone>
- <timezone id="Australia/Brisbane">Бризбејн</timezone>
- <timezone id="Australia/Hobart">Хобарт</timezone>
- <timezone id="Australia/Sydney">Сиднеј</timezone>
- <timezone id="Asia/Vladivostok">Владивосток</timezone>
+ <timezone id="Asia/Seoul">Кореја време (Сеул)</timezone>
+ <timezone id="Asia/Tokyo">Јапанско стандардно време (Токио)</timezone>
+ <timezone id="Asia/Yakutsk">Јакутск време (Јакутск)</timezone>
+ <timezone id="Australia/Adelaide">Аустралијско централно време (Аделаида)</timezone>
+ <timezone id="Australia/Darwin">Аустралијско централно време (Дарвин)</timezone>
+ <timezone id="Australia/Brisbane">Аустралијско источно време (Бризбејн)</timezone>
+ <timezone id="Australia/Hobart">Аустралијско источно време (Хобарт)</timezone>
+ <timezone id="Australia/Sydney">Аустралијско источно време (Сиднеј)</timezone>
+ <timezone id="Asia/Vladivostok">Владивосток време (Владивосток)</timezone>
<timezone id="Pacific/Guam">Гуам</timezone>
- <timezone id="Asia/Magadan">Магадан</timezone>
- <timezone id="Pacific/Auckland">Окланд</timezone>
- <timezone id="Pacific/Fiji">Фиџи</timezone>
- <timezone id="Pacific/Tongatapu">Тонгатапу</timezone>
+ <timezone id="Asia/Magadan">Магадан време (Магадан)</timezone>
+ <timezone id="Pacific/Auckland">Нови Зеланд време (Окланд)</timezone>
+ <timezone id="Pacific/Fiji">Фиџи време (Фиџи)</timezone>
+ <timezone id="Pacific/Tongatapu">Тонга време (Тонгатапу)</timezone>
</timezones>
diff --git a/res/xml-sv/timezones.xml b/res/xml-sv/timezones.xml
index aaed828..ecf9921 100644
--- a/res/xml-sv/timezones.xml
+++ b/res/xml-sv/timezones.xml
@@ -18,7 +18,7 @@
<timezone id="America/Barbados">Atlantic, normaltid (Barbados)</timezone>
<timezone id="America/Manaus">Amazonastid (Manaus)</timezone>
<timezone id="America/Santiago">Chilensk tid (Santiago)</timezone>
- <timezone id="America/St_Johns">Newfoundland, normaltid (S:t Johns)</timezone>
+ <timezone id="America/St_Johns">Newfoundland, normaltid (St. Johns)</timezone>
<timezone id="America/Araguaina">Brasiliansk tid (Araguaina)</timezone>
<timezone id="America/Argentina/Buenos_Aires">östargentinsk tid (Buenos Aires)</timezone>
<timezone id="America/Godthab">Godthåb</timezone>
@@ -62,11 +62,12 @@
<timezone id="Asia/Rangoon">Rangoon</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnojarsk</timezone>
<timezone id="Asia/Bangkok">Bangkok</timezone>
+ <timezone id="Asia/Shanghai">Kinesisk tid (Peking)</timezone>
<timezone id="Asia/Hong_Kong">Hongkong</timezone>
<timezone id="Asia/Irkutsk">Irkutsk</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Västaustralisk tid (Perth)</timezone>
- <timezone id="Asia/Taipei">Kinesisk tid (Taipei)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Söul</timezone>
<timezone id="Asia/Tokyo">Japan, normaltid (Tokyo)</timezone>
<timezone id="Asia/Yakutsk">Jakutsk</timezone>
diff --git a/res/xml-th/timezones.xml b/res/xml-th/timezones.xml
index d90c499..f2fdabc 100644
--- a/res/xml-th/timezones.xml
+++ b/res/xml-th/timezones.xml
@@ -3,14 +3,14 @@
<timezone id="Pacific/Midway">มิดเวย์</timezone>
<timezone id="Pacific/Honolulu">โฮโนลูลู</timezone>
<timezone id="America/Anchorage">แองเคอเรจ</timezone>
- <timezone id="America/Los_Angeles">ลอสแอนเจลิส</timezone>
+ <timezone id="America/Los_Angeles">ลอสแองเจลิส</timezone>
<timezone id="America/Tijuana">ทิฮัวนา</timezone>
<timezone id="America/Phoenix">ฟีนิกซ์</timezone>
<timezone id="America/Chihuahua">ชีวาวา</timezone>
<timezone id="America/Denver">เดนเวอร์</timezone>
<timezone id="America/Costa_Rica">คอสตาริกา</timezone>
<timezone id="America/Chicago">ชิคาโก</timezone>
- <timezone id="America/Mexico_City">เม็กซิโกซิตี้</timezone>
+ <timezone id="America/Mexico_City">เม็กซิโกซิตี</timezone>
<timezone id="America/Regina">ริไจนา</timezone>
<timezone id="America/Bogota">โบโกตา</timezone>
<timezone id="America/New_York">นิวยอร์ก</timezone>
@@ -24,7 +24,7 @@
<timezone id="America/Godthab">กอดแธบ</timezone>
<timezone id="America/Montevideo">มอนเตวิเดโอ</timezone>
<timezone id="Atlantic/South_Georgia">เซาท์ จอร์เจีย</timezone>
- <timezone id="Atlantic/Azores">อาโซเรช</timezone>
+ <timezone id="Atlantic/Azores">อาซอเรส</timezone>
<timezone id="Atlantic/Cape_Verde">เคปเวิร์ด</timezone>
<timezone id="Africa/Casablanca">คาสซาบลางก้า</timezone>
<timezone id="Europe/London">ลอนดอน</timezone>
@@ -53,15 +53,16 @@
<timezone id="Asia/Dubai">ดูใบ</timezone>
<timezone id="Asia/Kabul">คาบูล</timezone>
<timezone id="Asia/Karachi">การาจี</timezone>
- <timezone id="Asia/Oral">โอรัล</timezone>
- <timezone id="Asia/Yekaterinburg">เยคาเตรินบูร์ก</timezone>
+ <timezone id="Asia/Oral">ออรัล</timezone>
+ <timezone id="Asia/Yekaterinburg">ยีคาเตอรินเบิร์ก</timezone>
<timezone id="Asia/Calcutta">Calcutta</timezone>
<timezone id="Asia/Colombo">โคลัมโบ</timezone>
<timezone id="Asia/Katmandu">กาตมันดุ</timezone>
<timezone id="Asia/Almaty">อัลมาตี</timezone>
<timezone id="Asia/Rangoon">ย่างกุ้ง</timezone>
- <timezone id="Asia/Krasnoyarsk">ครัสโนยาสค์</timezone>
+ <timezone id="Asia/Krasnoyarsk">ครัสโนยาร์สก์</timezone>
<timezone id="Asia/Bangkok">กรุงเทพ</timezone>
+ <timezone id="Asia/Shanghai">Beijing</timezone>
<timezone id="Asia/Hong_Kong">ฮ่องกง</timezone>
<timezone id="Asia/Irkutsk">อีร์คุตสค์</timezone>
<timezone id="Asia/Kuala_Lumpur">กัวลาลัมเปอร์</timezone>
@@ -75,7 +76,7 @@
<timezone id="Australia/Brisbane">บริสเบน</timezone>
<timezone id="Australia/Hobart">โฮบาร์ต</timezone>
<timezone id="Australia/Sydney">ซิดนีย์</timezone>
- <timezone id="Asia/Vladivostok">วลาดีวอสตอค</timezone>
+ <timezone id="Asia/Vladivostok">วลาดิโวสต็อก</timezone>
<timezone id="Pacific/Guam">กวม</timezone>
<timezone id="Asia/Magadan">มากาดาน</timezone>
<timezone id="Pacific/Auckland">โอคแลนด์</timezone>
diff --git a/res/xml-tr/timezones.xml b/res/xml-tr/timezones.xml
index 31f5d46..18a341e 100644
--- a/res/xml-tr/timezones.xml
+++ b/res/xml-tr/timezones.xml
@@ -9,7 +9,7 @@
<timezone id="America/Chihuahua">Chihuahua</timezone>
<timezone id="America/Denver">ABD Sıradağlar Saati (Denver)</timezone>
<timezone id="America/Costa_Rica">Merkezi Saat (Kosta Rika)</timezone>
- <timezone id="America/Chicago">Merkezi Saat (Şikago)</timezone>
+ <timezone id="America/Chicago">Merkezi Saat (Chicago)</timezone>
<timezone id="America/Mexico_City">Merkezi Saat (Meksiko City)</timezone>
<timezone id="America/Regina">Merkezi Saat (Regina)</timezone>
<timezone id="America/Bogota">Kolombiya Saati (Bogota)</timezone>
@@ -42,9 +42,9 @@
<timezone id="Asia/Jerusalem">İsrail Saati (Kudüs)</timezone>
<timezone id="Europe/Minsk">Minsk</timezone>
<timezone id="Africa/Harare">Orta Afrika Saati (Harare)</timezone>
- <timezone id="Asia/Baghdad">Arap Saati (Bağdat)</timezone>
+ <timezone id="Asia/Baghdad">Arabistan Saati (Bağdat)</timezone>
<timezone id="Europe/Moscow">Moskova</timezone>
- <timezone id="Asia/Kuwait">Arap Saati (Kuveyt)</timezone>
+ <timezone id="Asia/Kuwait">Arabistan Saati (Kuveyt)</timezone>
<timezone id="Africa/Nairobi">Doğu Afrika Saati (Nairobi)</timezone>
<timezone id="Asia/Tehran">İran Standart Saati (Tahran)</timezone>
<timezone id="Asia/Baku">Bakü</timezone>
@@ -62,11 +62,12 @@
<timezone id="Asia/Rangoon">Myanmar Saati (Rangoon)</timezone>
<timezone id="Asia/Krasnoyarsk">Krasnoyarsk Saati (Krasnoyarsk)</timezone>
<timezone id="Asia/Bangkok">Çinhindi Saati (Bangkok)</timezone>
+ <timezone id="Asia/Shanghai">Çin Saati (Pekin)</timezone>
<timezone id="Asia/Hong_Kong">Hong Kong Saati (Hong Kong)</timezone>
- <timezone id="Asia/Irkutsk">Irkutsk Saati (İrkutsk)</timezone>
+ <timezone id="Asia/Irkutsk">İrkutsk Saati (İrkutsk)</timezone>
<timezone id="Asia/Kuala_Lumpur">Kuala Lumpur</timezone>
<timezone id="Australia/Perth">Batı Avustralya Saati (Perth)</timezone>
- <timezone id="Asia/Taipei">Çin Saati (Taipei)</timezone>
+ <timezone id="Asia/Taipei">Taipei</timezone>
<timezone id="Asia/Seoul">Kore Saati (Seul)</timezone>
<timezone id="Asia/Tokyo">Japonya Saati (Tokyo)</timezone>
<timezone id="Asia/Yakutsk">Yakutsk Saati (Yakutsk)</timezone>
diff --git a/res/xml-uk/timezones.xml b/res/xml-uk/timezones.xml
index 55192ef..2337570 100644
--- a/res/xml-uk/timezones.xml
+++ b/res/xml-uk/timezones.xml
@@ -62,6 +62,7 @@
<timezone id="Asia/Rangoon">Рангун</timezone>
<timezone id="Asia/Krasnoyarsk">Красноярськ</timezone>
<timezone id="Asia/Bangkok">Бангкок</timezone>
+ <timezone id="Asia/Shanghai">Пекін</timezone>
<timezone id="Asia/Hong_Kong">Гонконг</timezone>
<timezone id="Asia/Irkutsk">Іркутськ</timezone>
<timezone id="Asia/Kuala_Lumpur">Куала-Лумпур</timezone>
diff --git a/res/xml-zh/timezones.xml b/res/xml-zh/timezones.xml
index 7f852aa..1129e7c 100644
--- a/res/xml-zh/timezones.xml
+++ b/res/xml-zh/timezones.xml
@@ -3,26 +3,26 @@
<timezone id="Pacific/Midway">中途岛</timezone>
<timezone id="Pacific/Honolulu">檀香山</timezone>
<timezone id="America/Anchorage">安克雷奇</timezone>
- <timezone id="America/Los_Angeles">太平洋标准时间 (洛杉矶)</timezone>
- <timezone id="America/Tijuana">太平洋标准时间 (提华纳)</timezone>
- <timezone id="America/Phoenix">山区标准时间 (凤凰城)</timezone>
+ <timezone id="America/Los_Angeles">美国太平洋时间 (洛杉矶)</timezone>
+ <timezone id="America/Tijuana">美国太平洋时间 (提华纳)</timezone>
+ <timezone id="America/Phoenix">美国山区时间 (凤凰城)</timezone>
<timezone id="America/Chihuahua">奇瓦瓦</timezone>
- <timezone id="America/Denver">山区标准时间 (丹佛)</timezone>
- <timezone id="America/Costa_Rica">中部标准时间 (哥斯达黎加)</timezone>
- <timezone id="America/Chicago">中部标准时间 (芝加哥)</timezone>
- <timezone id="America/Mexico_City">中部标准时间 (墨西哥城)</timezone>
- <timezone id="America/Regina">中部标准时间 (里贾纳)</timezone>
- <timezone id="America/Bogota">波哥大</timezone>
- <timezone id="America/New_York">东部标准时间 (纽约)</timezone>
- <timezone id="America/Caracas">加拉加斯</timezone>
- <timezone id="America/Barbados">大西洋标准时间 (巴巴多斯)</timezone>
- <timezone id="America/Manaus">亚马逊时间 (马瑙斯)</timezone>
+ <timezone id="America/Denver">美国山区时间 (丹佛)</timezone>
+ <timezone id="America/Costa_Rica">美国中部时间 (哥斯达黎加)</timezone>
+ <timezone id="America/Chicago">美国中部时间 (芝加哥)</timezone>
+ <timezone id="America/Mexico_City">美国中部时间 (墨西哥城)</timezone>
+ <timezone id="America/Regina">美国中部时间 (里贾纳)</timezone>
+ <timezone id="America/Bogota">哥伦比亚时间 (波哥大)</timezone>
+ <timezone id="America/New_York">美国东部时间 (纽约)</timezone>
+ <timezone id="America/Caracas">委内瑞拉时间 (加拉加斯)</timezone>
+ <timezone id="America/Barbados">大西洋时间 (巴巴多斯)</timezone>
+ <timezone id="America/Manaus">亚马逊标准时间 (马瑙斯)</timezone>
<timezone id="America/Santiago">圣地亚哥</timezone>
- <timezone id="America/St_Johns">纽芬兰标准时间 (圣约翰)</timezone>
+ <timezone id="America/St_Johns">纽芬兰时间 (圣约翰)</timezone>
<timezone id="America/Araguaina">阿拉瓜伊纳</timezone>
<timezone id="America/Argentina/Buenos_Aires">布宜诺斯艾利斯</timezone>
<timezone id="America/Godthab">戈特霍布</timezone>
- <timezone id="America/Montevideo">蒙得维的亚</timezone>
+ <timezone id="America/Montevideo">乌拉圭时间 (蒙得维的亚)</timezone>
<timezone id="Atlantic/South_Georgia">南乔治亚</timezone>
<timezone id="Atlantic/Azores">亚述尔群岛</timezone>
<timezone id="Atlantic/Cape_Verde">佛得角</timezone>
@@ -33,52 +33,52 @@
<timezone id="Europe/Brussels">中欧标准时间 (布鲁塞尔)</timezone>
<timezone id="Europe/Sarajevo">中欧标准时间 (萨拉热窝)</timezone>
<timezone id="Africa/Windhoek">温得和克</timezone>
- <timezone id="Africa/Brazzaville">西部非洲时间 (布拉扎维)</timezone>
+ <timezone id="Africa/Brazzaville">西部非洲标准时间 (布拉扎维)</timezone>
<timezone id="Asia/Amman">东欧标准时间 (安曼)</timezone>
<timezone id="Europe/Athens">东欧标准时间 (雅典)</timezone>
<timezone id="Asia/Beirut">东欧标准时间 (贝鲁特)</timezone>
<timezone id="Africa/Cairo">东欧标准时间 (开罗)</timezone>
<timezone id="Europe/Helsinki">东欧标准时间 (赫尔辛基)</timezone>
- <timezone id="Asia/Jerusalem">以色列标准时间 (耶路撒冷)</timezone>
+ <timezone id="Asia/Jerusalem">以色列时间 (耶路撒冷)</timezone>
<timezone id="Europe/Minsk">明斯克</timezone>
- <timezone id="Africa/Harare">非洲中部时间 (哈拉雷)</timezone>
+ <timezone id="Africa/Harare">中部非洲标准时间 (哈拉雷)</timezone>
<timezone id="Asia/Baghdad">巴格达</timezone>
<timezone id="Europe/Moscow">莫斯科</timezone>
<timezone id="Asia/Kuwait">科威特</timezone>
- <timezone id="Africa/Nairobi">非洲东部时间 (内罗毕)</timezone>
- <timezone id="Asia/Tehran">德黑兰</timezone>
+ <timezone id="Africa/Nairobi">东部非洲标准时间 (内罗毕)</timezone>
+ <timezone id="Asia/Tehran">伊朗标准时间 (德黑兰)</timezone>
<timezone id="Asia/Baku">巴库</timezone>
<timezone id="Asia/Tbilisi">第比利斯</timezone>
<timezone id="Asia/Yerevan">埃里温</timezone>
<timezone id="Asia/Dubai">迪拜</timezone>
- <timezone id="Asia/Kabul">喀布尔</timezone>
+ <timezone id="Asia/Kabul">阿富汗时间 (喀布尔)</timezone>
<timezone id="Asia/Karachi">卡拉奇</timezone>
<timezone id="Asia/Oral">乌拉尔</timezone>
<timezone id="Asia/Yekaterinburg">叶卡捷林堡</timezone>
<timezone id="Asia/Calcutta">加尔各答</timezone>
<timezone id="Asia/Colombo">科伦坡</timezone>
- <timezone id="Asia/Katmandu">加德满都</timezone>
+ <timezone id="Asia/Katmandu">尼泊尔时间 (加德满都)</timezone>
<timezone id="Asia/Almaty">阿拉木图</timezone>
- <timezone id="Asia/Rangoon">仰光</timezone>
+ <timezone id="Asia/Rangoon">缅甸时间 (仰光)</timezone>
<timezone id="Asia/Krasnoyarsk">克拉斯诺亚尔斯克</timezone>
<timezone id="Asia/Bangkok">曼谷</timezone>
<timezone id="Asia/Shanghai">中国标准时间 (北京)</timezone>
- <timezone id="Asia/Hong_Kong">香港</timezone>
- <timezone id="Asia/Irkutsk">伊尔库茨克</timezone>
+ <timezone id="Asia/Hong_Kong">香港时间 (香港)</timezone>
+ <timezone id="Asia/Irkutsk">伊尔库茨克时间 (伊尔库茨克)</timezone>
<timezone id="Asia/Kuala_Lumpur">吉隆坡</timezone>
<timezone id="Australia/Perth">佩思</timezone>
- <timezone id="Asia/Taipei">台北</timezone>
+ <timezone id="Asia/Taipei">台北时间 (台北)</timezone>
<timezone id="Asia/Seoul">首尔</timezone>
- <timezone id="Asia/Tokyo">日本标准时间 (东京)</timezone>
- <timezone id="Asia/Yakutsk">雅库茨克</timezone>
+ <timezone id="Asia/Tokyo">日本时间 (东京)</timezone>
+ <timezone id="Asia/Yakutsk">雅库茨克时间 (雅库茨克)</timezone>
<timezone id="Australia/Adelaide">阿德莱德</timezone>
<timezone id="Australia/Darwin">达尔文</timezone>
<timezone id="Australia/Brisbane">布里斯班</timezone>
<timezone id="Australia/Hobart">霍巴特</timezone>
<timezone id="Australia/Sydney">悉尼</timezone>
- <timezone id="Asia/Vladivostok">符拉迪沃斯托克</timezone>
+ <timezone id="Asia/Vladivostok">海参崴时间 (符拉迪沃斯托克)</timezone>
<timezone id="Pacific/Guam">关岛</timezone>
- <timezone id="Asia/Magadan">马加丹</timezone>
+ <timezone id="Asia/Magadan">马加丹时间 (马加丹)</timezone>
<timezone id="Pacific/Auckland">奥克兰</timezone>
<timezone id="Pacific/Fiji">斐济</timezone>
<timezone id="Pacific/Tongatapu">东加塔布</timezone>
diff --git a/res/xml/apn_editor.xml b/res/xml/apn_editor.xml
index e9ded6c..4ff801f 100644
--- a/res/xml/apn_editor.xml
+++ b/res/xml/apn_editor.xml
@@ -106,5 +106,6 @@
android:dialogTitle="@string/apn_type"
android:key="apn_type"
android:singleLine="true"
+ android:inputType="textNoSuggestions"
/>
</PreferenceScreen>
diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml
index 8d0a7cb..b5418e8 100644
--- a/res/xml/application_settings.xml
+++ b/res/xml/application_settings.xml
@@ -43,6 +43,14 @@
android:targetClass="com.android.settings.ManageApplications" />
</PreferenceScreen>
+ <PreferenceScreen
+ android:title="@string/runningservices_settings_title"
+ android:summary="@string/runningservices_settings_summary">
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.RunningServices" />
+ </PreferenceScreen>
+
<PreferenceScreen
android:title="@string/development_settings_title"
android:summary="@string/development_settings_summary">
diff --git a/res/xml/device_info_memory.xml b/res/xml/device_info_memory.xml
index b7ec3c1..febd00f 100644
--- a/res/xml/device_info_memory.xml
+++ b/res/xml/device_info_memory.xml
@@ -38,13 +38,6 @@
style="?android:attr/preferenceInformationStyle"
android:title="@string/memory_available"
android:summary="00"/>
- <PreferenceScreen
- android:title="@string/master_clear_title"
- android:summary="@string/master_clear_summary">
- <intent android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.MasterClear" />
- </PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
index 56810b4..860c2ea 100644
--- a/res/xml/device_info_settings.xml
+++ b/res/xml/device_info_settings.xml
@@ -75,6 +75,12 @@
</PreferenceScreen>
+ <PreferenceScreen
+ android:key="safetylegal"
+ android:title="@string/settings_safetylegal_title">
+ <intent android:action="android.settings.SAFETY" />
+ </PreferenceScreen>
+
<!-- Contributors -->
<!--
<PreferenceScreen
diff --git a/res/xml/device_picker.xml b/res/xml/device_picker.xml
new file mode 100644
index 0000000..7dd5b68
--- /dev/null
+++ b/res/xml/device_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <Preference
+ android:key="bt_scan"
+ android:title="@string/bluetooth_preference_scan_title" />
+
+ <com.android.settings.ProgressCategory
+ android:key="bt_device_list"
+ android:title="@string/bluetooth_devices"
+ android:orderingFromXml="false" />
+
+</PreferenceScreen>
+
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index 86893bd..47eb795 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -15,8 +15,7 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
- android:title="@string/language_settings">
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceScreen
android:title="@string/phone_language"
diff --git a/res/xml/privacy_settings.xml b/res/xml/privacy_settings.xml
new file mode 100644
index 0000000..92955a5
--- /dev/null
+++ b/res/xml/privacy_settings.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory android:key="location_category"
+ android:title="@string/location_section_title">
+ <!-- Share location with Google -->
+ <CheckBoxPreference
+ android:key="use_location"
+ android:title="@string/use_location_title"
+ android:persistent="false"
+ android:summary="@string/use_location_summary"/>
+ </PreferenceCategory>
+
+ <PreferenceCategory android:key="settings_category"
+ android:title="@string/settings_section_title">
+ <!-- Backup settings -->
+ <CheckBoxPreference
+ android:key="backup_settings"
+ android:title="@string/backup_settings_title"
+ android:persistent="false" />
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:title="@string/personal_data_section_title">
+ <!-- Factory reset -->
+ <PreferenceScreen
+ android:title="@string/master_clear_title"
+ android:summary="@string/master_clear_summary">
+ <intent android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.MasterClear" />
+ </PreferenceScreen>
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/security_settings.xml b/res/xml/security_settings.xml
index 8dd9d89..1b73584 100644
--- a/res/xml/security_settings.xml
+++ b/res/xml/security_settings.xml
@@ -32,11 +32,14 @@
android:summaryOn="@string/location_street_level"
android:summaryOff="@string/location_gps_disabled"/>
+<!-- Disabled to avoid confusion on devices with no AGPS
+ For Google experience devices we want AGPS on by default (if supported) so we don't really need this.
<CheckBoxPreference
- android:key="use_location"
- android:title="@string/use_location_title"
- android:persistent="false"
- android:summary="@string/use_location_summary"/>
+ android:key="assisted_gps"
+ android:title="@string/assisted_gps"
+ android:summaryOn="@string/assisted_gps_enabled"
+ android:summaryOff="@string/assisted_gps_disabled"/>
+-->
</PreferenceCategory>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 9ca581a..79a777d 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -16,104 +16,96 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/settings_label"
android:key="parent">
-
- <PreferenceScreen
+
+ <com.android.settings.IconPreferenceScreen
android:title="@string/radio_controls_title"
- android:summary="@string/radio_controls_summary">
+ settings:icon="@drawable/ic_settings_wireless">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.WirelessSettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
- <PreferenceScreen
+ <com.android.settings.IconPreferenceScreen
android:key="call_settings"
- android:title="@string/call_settings_title"
- android:summary="@string/call_settings_summary">
+ settings:icon="@drawable/ic_settings_call"
+ android:title="@string/call_settings_title">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
<!-- Sound and Display -->
-
- <PreferenceScreen
- android:title="@string/sound_and_display_settings"
- android:summary="@string/sound_and_display_settings_summary">
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_sound_display"
+ android:title="@string/sound_and_display_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.SoundAndDisplaySettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
- <!-- Data Sync. The settings activity will ensure this is resolved to an
- activity on the system image, otherwise it will remove this
- preference. -->
-
- <PreferenceScreen
- android:title="@string/sync_settings"
- android:summary="@string/sync_settings_summary"
- android:key="sync_settings">
- <intent android:action="android.settings.SYNC_SETTINGS" />
- </PreferenceScreen>
+ <!-- Security & Location -->
- <!-- Security & Privacy -->
-
- <PreferenceScreen
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_security"
android:title="@string/security_settings_title"
- android:summary="@string/security_settings_summary">
+ android:key="security_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.SecuritySettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
<!-- Application Settings -->
-
- <PreferenceScreen
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_applications"
android:title="@string/applications_settings"
- android:summary="@string/applications_settings_summary"
android:key="applications_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.ApplicationSettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
+
+ <!-- Data Sync. The settings activity will ensure this is resolved to an
+ activity on the system image, otherwise it will remove this
+ preference. -->
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_sync"
+ android:title="@string/sync_settings"
+ android:key="sync_settings">
+ <intent android:action="android.settings.SYNC_SETTINGS" />
+ </com.android.settings.IconPreferenceScreen>
+
+ <!-- Privacy -->
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_privacy"
+ android:title="@string/privacy_settings"
+ android:key="privacy_settings">
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.PrivacySettings" />
+ </com.android.settings.IconPreferenceScreen>
<!-- Storage -->
-
- <PreferenceScreen
- android:title="@string/storage_settings_title"
- android:summary="@string/storage_settings_summary">
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_storage"
+ android:title="@string/storage_settings">
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.deviceinfo.Memory" />
- </PreferenceScreen>
-
- <!-- Date & Time -->
-
- <PreferenceScreen
- android:title="@string/date_and_time_settings_title"
- android:summary="@string/date_and_time_settings_summary">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.DateTimeSettings" />
- </PreferenceScreen>
-
- <!-- Language -->
-
- <PreferenceScreen
- android:title="@string/language_settings"
- android:summary="@string/language_settings_summary">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.LanguageSettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
<!-- Search.
The settings activity will ensure that this is resolved to an
@@ -123,44 +115,66 @@
android.app.SearchManager.INTENT_ACTION_SEARCH_SETTINGS.
-->
- <PreferenceScreen
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_search"
android:title="@string/search_settings"
- android:summary="@string/search_settings_summary"
android:key="search_settings">
<intent android:action="android.search.action.SEARCH_SETTINGS" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
+
+ <!-- Language -->
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_language"
+ android:title="@string/language_settings">
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.LanguageSettings" />
+ </com.android.settings.IconPreferenceScreen>
<!-- Accessibility feedback -->
- <PreferenceScreen
- android:title="@string/accessibility_settings_title"
- android:summary="@string/accessibility_settings_summary">
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_accessibility"
+ android:title="@string/accessibility_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.AccessibilitySettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
<!-- Text-To-Speech -->
-
- <PreferenceScreen
- android:title="@string/tts_settings"
- android:summary="@string/tts_settings_summary">
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_speech"
+ android:title="@string/tts_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.TextToSpeechSettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
+
+ <!-- Date & Time -->
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_date_time"
+ android:title="@string/date_and_time_settings_title">
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.DateTimeSettings" />
+ </com.android.settings.IconPreferenceScreen>
<!-- About Device -->
-
- <PreferenceScreen
- android:title="@string/about_settings"
- android:summary="@string/about_settings_summary">
+
+ <com.android.settings.IconPreferenceScreen
+ settings:icon="@drawable/ic_settings_about"
+ android:title="@string/about_settings">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.DeviceInfoSettings" />
- </PreferenceScreen>
+ </com.android.settings.IconPreferenceScreen>
</PreferenceScreen>
diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_and_display_settings.xml
index 639204a..8544fee 100644
--- a/res/xml/sound_and_display_settings.xml
+++ b/res/xml/sound_and_display_settings.xml
@@ -85,6 +85,14 @@
android:defaultValue="true" />
<CheckBoxPreference
+ android:key="haptic_feedback"
+ android:title="@string/haptic_feedback_enable_title"
+ android:summaryOn="@string/haptic_feedback_enable_summary_on"
+ android:summaryOff="@string/haptic_feedback_enable_summary_off"
+ android:dependency="silent"
+ android:defaultValue="true" />
+
+ <CheckBoxPreference
android:key="play_media_notification_sounds"
android:title="@string/play_media_notification_sounds_enable_title"
android:summaryOn="@string/play_media_notification_sounds_enable_summary_on"
@@ -110,11 +118,12 @@
android:summaryOn="@string/accelerometer_summary_on"
android:summaryOff="@string/accelerometer_summary_off"/>
- <CheckBoxPreference
- android:key="animations"
- android:title="@string/animations_title"
- android:summaryOn="@string/animations_summary_on"
- android:summaryOff="@string/animations_summary_off" />
+ <ListPreference
+ android:key="animations"
+ android:title="@string/animations_title"
+ android:persistent="false"
+ android:entries="@array/animations_entries"
+ android:entryValues="@array/animations_values" />
<com.android.settings.BrightnessPreference
android:key="brightness"
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 4731fb3..9110ced 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -14,70 +14,67 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/radio_controls_title">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- Programmatically will have dynamic summary, but we provide the fallback summary. -->
- <CheckBoxPreference
- android:key="toggle_wifi"
- android:title="@string/wifi_quick_toggle_title"
- android:summary="@string/wifi_quick_toggle_summary"
- android:persistent="false"
- android:dependency="toggle_airplane" />
+ <CheckBoxPreference
+ android:key="toggle_airplane"
+ android:title="@string/airplane_mode"
+ android:summary="@string/airplane_mode_summary"
+ android:persistent="false"
+ android:disableDependentsState="true" />
- <PreferenceScreen
- android:title="@string/wifi_settings"
- android:summary="@string/wifi_settings_summary"
- android:dependency="toggle_airplane">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.wifi.WifiSettings" />
- </PreferenceScreen>
+ <!-- Programmatically will have dynamic summary, but we provide the fallback summary. -->
+ <CheckBoxPreference
+ android:key="toggle_wifi"
+ android:title="@string/wifi_quick_toggle_title"
+ android:summary="@string/wifi_quick_toggle_summary"
+ android:persistent="false" />
- <CheckBoxPreference
- android:key="toggle_bluetooth"
- android:title="@string/bluetooth_quick_toggle_title"
- android:summary="@string/bluetooth_quick_toggle_summary"
- android:persistent="false"
- android:dependency="toggle_airplane" />
+ <PreferenceScreen
+ android:key="wifi_settings"
+ android:title="@string/wifi_settings"
+ android:summary="@string/wifi_settings_summary" >
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.wifi.WifiSettings" />
+ </PreferenceScreen>
- <PreferenceScreen
- android:title="@string/bluetooth_settings_title"
- android:summary="@string/bluetooth_settings_summary"
- android:dependency="toggle_airplane">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.bluetooth.BluetoothSettings" />
- </PreferenceScreen>
+ <CheckBoxPreference
+ android:key="toggle_bluetooth"
+ android:title="@string/bluetooth_quick_toggle_title"
+ android:summary="@string/bluetooth_quick_toggle_summary"
+ android:persistent="false"
+ android:dependency="toggle_airplane" />
- <PreferenceScreen
- android:title="@string/vpn_settings_title"
- android:summary="@string/vpn_settings_summary"
- android:dependency="toggle_airplane">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.settings"
- android:targetClass="com.android.settings.vpn.VpnSettings" />
- </PreferenceScreen>
+ <PreferenceScreen
+ android:title="@string/bluetooth_settings_title"
+ android:summary="@string/bluetooth_settings_summary"
+ android:dependency="toggle_airplane">
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.bluetooth.BluetoothSettings" />
+ </PreferenceScreen>
- <PreferenceScreen
- android:title="@string/network_settings_title"
- android:summary="@string/network_settings_summary"
- android:dependency="toggle_airplane">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetPackage="com.android.phone"
- android:targetClass="com.android.phone.Settings" />
- </PreferenceScreen>
+ <PreferenceScreen
+ android:key="vpn_settings"
+ android:title="@string/vpn_settings_title"
+ android:summary="@string/vpn_settings_summary" >
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.vpn.VpnSettings" />
+ </PreferenceScreen>
- <CheckBoxPreference
- android:key="toggle_airplane"
- android:title="@string/airplane_mode"
- android:summary="@string/airplane_mode_summary"
- android:persistent="false"
- android:disableDependentsState="true" />
-
+ <PreferenceScreen
+ android:title="@string/network_settings_title"
+ android:summary="@string/network_settings_summary"
+ android:dependency="toggle_airplane">
+ <intent
+ android:action="android.intent.action.MAIN"
+ android:targetPackage="com.android.phone"
+ android:targetClass="com.android.phone.Settings" />
+ </PreferenceScreen>
</PreferenceScreen>
diff --git a/src/com/android/settings/AccessibilitySettings.java b/src/com/android/settings/AccessibilitySettings.java
index 54e3f14..6199e50 100644
--- a/src/com/android/settings/AccessibilitySettings.java
+++ b/src/com/android/settings/AccessibilitySettings.java
@@ -130,7 +130,11 @@
int count = mAccessibilityServicesCategory.getPreferenceCount();
for (int i = 0; i < count; i++) {
- mAccessibilityServicesCategory.getPreference(i).setEnabled(isEnabled);
+ Preference pref = mAccessibilityServicesCategory.getPreference(i);
+ pref.setEnabled(isEnabled);
+ if (!isEnabled){
+ ((CheckBoxPreference) pref).setChecked(false);
+ }
}
}
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index f105712..ff4b27d 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -22,11 +22,14 @@
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
+import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.provider.Settings;
import android.telephony.ServiceState;
+import com.android.internal.telephony.TelephonyProperties;
+
public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener {
private final Context mContext;
@@ -74,7 +77,7 @@
mCheckBoxPref.setOnPreferenceChangeListener(null);
}
- static boolean isAirplaneModeOn(Context context) {
+ public static boolean isAirplaneModeOn(Context context) {
return Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}
@@ -111,8 +114,23 @@
* Called when someone clicks on the checkbox preference.
*/
public boolean onPreferenceChange(Preference preference, Object newValue) {
- setAirplaneModeOn((Boolean) newValue);
+ if (Boolean.parseBoolean(
+ SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
+ // In ECM mode, do not update database at this point
+ } else {
+ setAirplaneModeOn((Boolean) newValue);
+ }
return true;
}
+ public void setAirplaneModeInECM(boolean isECMExit, boolean isAirplaneModeOn) {
+ if (isECMExit) {
+ // update database based on the current checkbox state
+ setAirplaneModeOn(isAirplaneModeOn);
+ } else {
+ // update checkbox state based on database value
+ onAirplaneModeChanged();
+ }
+ }
+
}
diff --git a/src/com/android/settings/ApnPreference.java b/src/com/android/settings/ApnPreference.java
index 74fb902..710eda2 100644
--- a/src/com/android/settings/ApnPreference.java
+++ b/src/com/android/settings/ApnPreference.java
@@ -107,7 +107,7 @@
return getKey().equals(mSelectedKey);
}
- public void setChecked(boolean checked) {
+ public void setChecked() {
mSelectedKey = getKey();
}
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 2624990..00ef3a7 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -178,7 +178,7 @@
pref.setSelectable(selectable);
if (selectable) {
if ((mSelectedKey != null) && mSelectedKey.equals(key)) {
- pref.setChecked(true);
+ pref.setChecked();
}
apnList.addPreference(pref);
} else {
diff --git a/src/com/android/settings/BandMode.java b/src/com/android/settings/BandMode.java
index 1297cad..a8c7833 100644
--- a/src/com/android/settings/BandMode.java
+++ b/src/com/android/settings/BandMode.java
@@ -97,7 +97,7 @@
}
};
- private class BandListItem {
+ static private class BandListItem {
private int mBandMode = Phone.BM_UNSPECIFIED;
public BandListItem(int bm) {
diff --git a/src/com/android/settings/BatteryInfo.java b/src/com/android/settings/BatteryInfo.java
index eb7ddb4..1cbe47f 100644
--- a/src/com/android/settings/BatteryInfo.java
+++ b/src/com/android/settings/BatteryInfo.java
@@ -36,6 +36,7 @@
public class BatteryInfo extends Activity {
private TextView mStatus;
+ private TextView mPower;
private TextView mLevel;
private TextView mScale;
private TextView mHealth;
@@ -67,7 +68,7 @@
*/
private final String tenthsToFixedString(int x) {
int tens = x / 10;
- return new String("" + tens + "." + (x - 10*tens));
+ return Integer.toString(tens) + "." + (x - 10 * tens);
}
/**
@@ -111,6 +112,24 @@
}
mStatus.setText(statusString);
+ switch (plugType) {
+ case 0:
+ mPower.setText(getString(R.string.battery_info_power_unplugged));
+ break;
+ case BatteryManager.BATTERY_PLUGGED_AC:
+ mPower.setText(getString(R.string.battery_info_power_ac));
+ break;
+ case BatteryManager.BATTERY_PLUGGED_USB:
+ mPower.setText(getString(R.string.battery_info_power_usb));
+ break;
+ case (BatteryManager.BATTERY_PLUGGED_AC|BatteryManager.BATTERY_PLUGGED_USB):
+ mPower.setText(getString(R.string.battery_info_power_ac_usb));
+ break;
+ default:
+ mPower.setText(getString(R.string.battery_info_power_unknown));
+ break;
+ }
+
int health = intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN);
String healthString;
if (health == BatteryManager.BATTERY_HEALTH_GOOD) {
@@ -148,6 +167,7 @@
super.onResume();
mStatus = (TextView)findViewById(R.id.status);
+ mPower = (TextView)findViewById(R.id.power);
mLevel = (TextView)findViewById(R.id.level);
mScale = (TextView)findViewById(R.id.scale);
mHealth = (TextView)findViewById(R.id.health);
diff --git a/src/com/android/settings/BrightnessPreference.java b/src/com/android/settings/BrightnessPreference.java
index 9f55463..2bba814 100644
--- a/src/com/android/settings/BrightnessPreference.java
+++ b/src/com/android/settings/BrightnessPreference.java
@@ -18,7 +18,7 @@
import android.content.Context;
import android.os.RemoteException;
-import android.os.IHardwareService;
+import android.os.IPowerManager;
import android.os.ServiceManager;
import android.preference.SeekBarPreference;
import android.provider.Settings;
@@ -26,16 +26,22 @@
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
import android.widget.SeekBar;
import java.util.Map;
public class BrightnessPreference extends SeekBarPreference implements
- SeekBar.OnSeekBarChangeListener {
+ SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener {
private SeekBar mSeekBar;
+ private CheckBox mCheckBox;
private int mOldBrightness;
+ private int mOldAutomatic;
+
+ private boolean mAutomaticAvailable;
// Backlight range is from 0 - 255. Need to make sure that user
// doesn't set the backlight to 0 and get stuck
@@ -44,6 +50,11 @@
public BrightnessPreference(Context context, AttributeSet attrs) {
super(context, attrs);
+
+ mAutomaticAvailable = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_automatic_brightness_available);
+
+ setDialogLayoutResource(R.layout.preference_dialog_brightness);
}
@Override
@@ -60,6 +71,20 @@
mOldBrightness = MAXIMUM_BACKLIGHT;
}
mSeekBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT);
+
+ mCheckBox = (CheckBox)view.findViewById(R.id.automatic_mode);
+ if (mAutomaticAvailable) {
+ mCheckBox.setOnCheckedChangeListener(this);
+ try {
+ mOldAutomatic = Settings.System.getInt(getContext().getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE);
+ } catch (SettingNotFoundException snfe) {
+ mOldAutomatic = 0;
+ }
+ mCheckBox.setChecked(mOldAutomatic != 0);
+ } else {
+ mCheckBox.setVisibility(View.GONE);
+ }
}
public void onProgressChanged(SeekBar seekBar, int progress,
@@ -75,6 +100,13 @@
// NA
}
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ setMode(isChecked ? 1 : 0);
+ if (!isChecked) {
+ setBrightness(mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
+ }
+ }
+
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
@@ -83,21 +115,46 @@
Settings.System.putInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS,
mSeekBar.getProgress() + MINIMUM_BACKLIGHT);
+ if (mAutomaticAvailable) {
+ Settings.System.putInt(getContext().getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ mCheckBox.isChecked() ? 1 : 0);
+ }
} else {
+ if (mAutomaticAvailable) {
+ setMode(mOldAutomatic);
+ }
+ // brightness needs to be restored after restoring ALS mode
setBrightness(mOldBrightness);
}
}
private void setBrightness(int brightness) {
try {
- IHardwareService hardware = IHardwareService.Stub.asInterface(
- ServiceManager.getService("hardware"));
- if (hardware != null) {
- hardware.setBacklights(brightness);
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
+ power.setBacklightBrightness(brightness);
}
} catch (RemoteException doe) {
}
}
+
+ private void setMode(int automatic) {
+ if (automatic != 0) {
+ mSeekBar.setVisibility(View.GONE);
+ } else {
+ mSeekBar.setVisibility(View.VISIBLE);
+ }
+ try {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
+ power.setAutoBrightness(automatic != 0);
+ }
+ } catch (RemoteException doe) {
+ }
+ }
}
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index d0c3758..f103c6b 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -21,6 +21,7 @@
import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
+import com.android.internal.widget.LockPatternView.Cell;
import static com.android.internal.widget.LockPatternView.DisplayMode;
import android.app.Activity;
@@ -124,6 +125,10 @@
}
}
+ public void onPatternCellAdded(List<Cell> pattern) {
+
+ }
+
private void patternInProgress() {
mHeaderText.setText(R.string.lockpattern_recording_inprogress);
mFooterText.setText("");
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index 44baccc..a91b45f 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -19,6 +19,7 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient;
+import com.android.internal.widget.LockPatternView.Cell;
import android.app.Activity;
import android.content.Intent;
@@ -216,6 +217,10 @@
mLockPatternView.removeCallbacks(mClearPatternRunnable);
}
+ public void onPatternCellAdded(List<Cell> pattern) {
+
+ }
+
public void onPatternDetected(List<LockPatternView.Cell> pattern) {
if (mLockPatternUtils.checkPattern(pattern)) {
setResult(RESULT_OK);
diff --git a/src/com/android/settings/CredentialInstaller.java b/src/com/android/settings/CredentialInstaller.java
new file mode 100644
index 0000000..5a457d7
--- /dev/null
+++ b/src/com/android/settings/CredentialInstaller.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.security.Credentials;
+import android.security.KeyStore;
+import android.util.Log;
+
+/**
+ * Installs credentials to the system keystore. It reacts to the
+ * {@link Credentials#SYSTEM_INSTALL_ACTION} intent. All the key-value pairs in
+ * the intent are installed to the system keystore. For security reason, the
+ * current implementation limits that only com.android.certinstaller can use
+ * this service.
+ */
+public class CredentialInstaller extends Activity {
+ private static final String TAG = "CredentialInstaller";
+
+ private KeyStore mKeyStore = KeyStore.getInstance();
+ private boolean mUnlocking = false;
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ if (!"com.android.certinstaller".equals(getCallingPackage())) finish();
+
+ if (!isKeyStoreLocked()) {
+ install();
+ finish();
+ } else if (!mUnlocking) {
+ mUnlocking = true;
+ Credentials.getInstance().unlock(this);
+ } else {
+ finish();
+ }
+ }
+
+ private void install() {
+ Intent intent = getIntent();
+ Bundle bundle = (intent == null) ? null : intent.getExtras();
+ if (bundle == null) return;
+ for (String key : bundle.keySet()) {
+ byte[] data = bundle.getByteArray(key);
+ if (data == null) continue;
+ boolean success = mKeyStore.put(key.getBytes(), data);
+ Log.v(TAG, "install " + key + ": " + data.length + " success? " + success);
+ if (!success) return;
+ }
+ setResult(RESULT_OK);
+ }
+
+ private boolean isKeyStoreLocked() {
+ return (mKeyStore.test() != KeyStore.NO_ERROR);
+ }
+}
diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java
index 8eed563..0933d62 100644
--- a/src/com/android/settings/DefaultRingtonePreference.java
+++ b/src/com/android/settings/DefaultRingtonePreference.java
@@ -42,11 +42,6 @@
* doesn't make sense to show a 'Default' item.
*/
ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
-
- /*
- * Similarly, 'Silent' shouldn't be shown here.
- */
- ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
}
@Override
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index c1da18a..753f9b9 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -17,6 +17,7 @@
package com.android.settings;
import android.app.AlertDialog;
+import android.app.Dialog;
import android.content.DialogInterface;
import android.os.BatteryManager;
import android.os.Bundle;
@@ -45,6 +46,8 @@
// To track whether Yes was clicked in the adb warning dialog
private boolean mOkClicked;
+ private Dialog mOkDialog;
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -80,14 +83,15 @@
if (preference == mEnableAdb) {
if (mEnableAdb.isChecked()) {
mOkClicked = false;
- new AlertDialog.Builder(this).setMessage(
+ if (mOkDialog != null) dismissDialog();
+ mOkDialog = new AlertDialog.Builder(this).setMessage(
getResources().getString(R.string.adb_warning_message))
.setTitle(R.string.adb_warning_title)
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, this)
.setNegativeButton(android.R.string.no, this)
- .show()
- .setOnDismissListener(this);
+ .show();
+ mOkDialog.setOnDismissListener(this);
} else {
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0);
}
@@ -99,10 +103,16 @@
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION,
mAllowMockLocation.isChecked() ? 1 : 0);
}
-
+
return false;
}
+ private void dismissDialog() {
+ if (mOkDialog == null) return;
+ mOkDialog.dismiss();
+ mOkDialog = null;
+ }
+
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
mOkClicked = true;
@@ -119,4 +129,10 @@
mEnableAdb.setChecked(false);
}
}
+
+ @Override
+ public void onDestroy() {
+ dismissDialog();
+ super.onDestroy();
+ }
}
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index be01f7d..82b7f28 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -48,6 +48,7 @@
private static final String KEY_LICENSE = "license";
private static final String KEY_COPYRIGHT = "copyright";
private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings";
+ private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal";
@Override
protected void onCreate(Bundle icicle) {
@@ -61,6 +62,10 @@
setStringSummary("build_number", Build.DISPLAY);
findPreference("kernel_version").setSummary(getFormattedKernelVersion());
+ // Remove Safety information preference if PROPERTY_URL_SAFETYLEGAL is not set
+ removePreferenceIfPropertyMissing(getPreferenceScreen(), "safetylegal",
+ PROPERTY_URL_SAFETYLEGAL);
+
/*
* Settings is a generic app and should not contain any device-specific
* info.
@@ -85,7 +90,21 @@
Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference, KEY_CONTRIBUTORS,
Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
}
-
+
+ private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup,
+ String preference, String property ) {
+ if (SystemProperties.get(property).equals(""))
+ {
+ // Property is missing so remove preference from group
+ try {
+ preferenceGroup.removePreference(findPreference(preference));
+ } catch (RuntimeException e) {
+ Log.d(TAG, "Property '" + property + "' missing and no '"
+ + preference + "' preference");
+ }
+ }
+ }
+
private void setStringSummary(String preference, String value) {
try {
findPreference(preference).setSummary(value);
@@ -121,7 +140,7 @@
"\\w+\\s+" + /* ignore: version */
"([^\\s]+)\\s+" + /* group 1: 2.6.22-omap1 */
"\\(([^\\s@]+(?:@[^\\s.]+)?)[^)]*\\)\\s+" + /* group 2: (xxxxxx@xxxxx.constant) */
- "\\([^)]+\\)\\s+" + /* ignore: (gcc ..) */
+ "\\(.*?(?:\\(.*?\\)).*?\\)\\s+" + /* ignore: (gcc ..) */
"([^\\s]+)\\s+" + /* group 3: #26 */
"(?:PREEMPT\\s+)?" + /* ignore: PREEMPT (optional) */
"(.+)"; /* group 4: date */
diff --git a/src/com/android/settings/EditPinPreference.java b/src/com/android/settings/EditPinPreference.java
index ee3143c..362bed1 100644
--- a/src/com/android/settings/EditPinPreference.java
+++ b/src/com/android/settings/EditPinPreference.java
@@ -16,6 +16,7 @@
package com.android.settings;
+import android.app.Dialog;
import android.content.Context;
import android.preference.EditTextPreference;
import android.text.method.DigitsKeyListener;
@@ -24,15 +25,11 @@
import android.view.View;
import android.widget.EditText;
-import java.util.Map;
-
/**
* TODO: Add a soft dialpad for PIN entry.
*/
class EditPinPreference extends EditTextPreference {
- private boolean mDialogOpen;
-
interface OnPinEnteredListener {
void onPinEntered(EditPinPreference preference, boolean positiveResult);
}
@@ -50,13 +47,13 @@
public void setOnPinEnteredListener(OnPinEnteredListener listener) {
mPinListener = listener;
}
-
+
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
-
+
final EditText editText = (EditText) view.findViewById(android.R.id.edit);
-
+
if (editText != null) {
editText.setSingleLine(true);
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
@@ -65,20 +62,22 @@
}
public boolean isDialogOpen() {
- return mDialogOpen;
+ Dialog dialog = getDialog();
+ return dialog != null && dialog.isShowing();
}
-
+
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
- mDialogOpen = false;
if (mPinListener != null) {
mPinListener.onPinEntered(this, positiveResult);
}
}
-
+
public void showPinDialog() {
- mDialogOpen = true;
- showDialog(null);
+ Dialog dialog = getDialog();
+ if (dialog == null || !dialog.isShowing()) {
+ showDialog(null);
+ }
}
}
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 18beb32..3a7a708 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -261,10 +261,13 @@
mPinToggle.setChecked(!mToState);
mDialogState = ICC_LOCK_MODE;
showPinDialog();
+ } else if (preference == mPinDialog) {
+ mDialogState = ICC_OLD_MODE;
+ return false;
}
return true;
}
-
+
private void tryChangeIccLockState() {
// Try to change icc lock. If it succeeds, toggle the lock state and
// reset dialog state. Else inject error message and show dialog again.
@@ -277,7 +280,6 @@
if (success) {
mPinToggle.setChecked(mToState);
} else {
- // TODO: I18N
Toast.makeText(this, mRes.getString(R.string.sim_lock_failed), Toast.LENGTH_SHORT)
.show();
}
@@ -286,7 +288,6 @@
private void iccPinChanged(boolean success) {
if (!success) {
- // TODO: I18N
Toast.makeText(this, mRes.getString(R.string.sim_change_failed),
Toast.LENGTH_SHORT)
.show();
@@ -304,7 +305,7 @@
mPhone.getIccCard().changeIccLockPassword(mOldPin,
mNewPin, callback);
}
-
+
private boolean reasonablePin(String pin) {
if (pin == null || pin.length() < MIN_PIN_LENGTH || pin.length() > MAX_PIN_LENGTH) {
return false;
@@ -312,11 +313,12 @@
return true;
}
}
-
+
private void resetDialogState() {
mError = null;
mDialogState = ICC_OLD_MODE; // Default for when Change PIN is clicked
mPin = "";
setDialogValues();
+ mDialogState = OFF_MODE;
}
}
diff --git a/src/com/android/settings/IconPreferenceScreen.java b/src/com/android/settings/IconPreferenceScreen.java
new file mode 100644
index 0000000..c7c5303
--- /dev/null
+++ b/src/com/android/settings/IconPreferenceScreen.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.preference.Preference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+public class IconPreferenceScreen extends Preference {
+
+ private Drawable mIcon;
+
+ public IconPreferenceScreen(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public IconPreferenceScreen(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ setLayoutResource(R.layout.preference_icon);
+ TypedArray a = context.obtainStyledAttributes(attrs,
+ R.styleable.IconPreferenceScreen, defStyle, 0);
+ mIcon = a.getDrawable(R.styleable.IconPreferenceScreen_icon);
+ }
+
+ @Override
+ public void onBindView(View view) {
+ super.onBindView(view);
+ ImageView imageView = (ImageView) view.findViewById(R.id.icon);
+ if (imageView != null && mIcon != null) {
+ imageView.setImageDrawable(mIcon);
+ }
+ }
+}
diff --git a/src/com/android/settings/LanguageSettings.java b/src/com/android/settings/LanguageSettings.java
index cbab390..4b805ed 100644
--- a/src/com/android/settings/LanguageSettings.java
+++ b/src/com/android/settings/LanguageSettings.java
@@ -54,8 +54,6 @@
private String mLastInputMethodId;
private String mLastTickedInputMethodId;
- private String mRootDirectory;
-
static public String getInputMethodIdFromKey(String key) {
return key;
}
diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java
index 9cb4217..a71d17b 100644
--- a/src/com/android/settings/ManageApplications.java
+++ b/src/com/android/settings/ManageApplications.java
@@ -52,6 +52,8 @@
import android.view.Window;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
@@ -64,7 +66,6 @@
import java.io.IOException;
import java.text.Collator;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
@@ -133,19 +134,19 @@
// sort order that can be changed through the menu can be sorted alphabetically
// or size(descending)
private static final int MENU_OPTIONS_BASE = 0;
- public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 0;
- public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 1;
// Filter options used for displayed list of applications
- public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 2;
- public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 3;
- public static final int FILTER_APPS_RUNNING = MENU_OPTIONS_BASE + 4;
- public static final int FILTER_OPTIONS = MENU_OPTIONS_BASE + 5;
+ public static final int FILTER_APPS_ALL = MENU_OPTIONS_BASE + 0;
+ public static final int FILTER_APPS_RUNNING = MENU_OPTIONS_BASE + 1;
+ public static final int FILTER_APPS_THIRD_PARTY = MENU_OPTIONS_BASE + 2;
+ public static final int FILTER_OPTIONS = MENU_OPTIONS_BASE + 3;
+ public static final int SORT_ORDER_ALPHA = MENU_OPTIONS_BASE + 4;
+ public static final int SORT_ORDER_SIZE = MENU_OPTIONS_BASE + 5;
// Alert Dialog presented to user to find out the filter option
- AlertDialog mAlertDlg;
+ private AlertDialog mAlertDlg;
// sort order
private int mSortOrder = SORT_ORDER_ALPHA;
// Filter value
- int mFilterApps = FILTER_APPS_ALL;
+ private int mFilterApps = FILTER_APPS_THIRD_PARTY;
// Custom Adapter used for managing items in the list
private AppInfoAdapter mAppInfoAdapter;
@@ -176,7 +177,7 @@
private boolean mComputeSizes = false;
// default icon thats used when displaying applications initially before resource info is
// retrieved
- private Drawable mDefaultAppIcon;
+ private static Drawable mDefaultAppIcon;
// temporary dialog displayed while the application info loads
private static final int DLG_BASE = 0;
@@ -211,9 +212,6 @@
// Cache application attributes
private AppInfoCache mCache = new AppInfoCache();
- // empty message displayed when list is empty
- private TextView mEmptyView;
-
// Boolean variables indicating state
private boolean mLoadLabels = false;
private boolean mSizesFirst = false;
@@ -275,6 +273,7 @@
if(localLOGV) Log.i(TAG, "Message INIT_PKG_INFO, justCreated = " + mJustCreated);
List<ApplicationInfo> newList = null;
if (!mJustCreated) {
+ if (localLOGV) Log.i(TAG, "List already created");
// Add or delete newly created packages by comparing lists
newList = getInstalledApps(FILTER_APPS_ALL);
updateAppList(newList);
@@ -370,8 +369,7 @@
if (status) {
size = data.getLong(ATTR_PKG_STATS);
formattedSize = data.getString(ATTR_PKG_SIZE_STR);
- int idx = mAppInfoAdapter.getIndex(pkgName);
- if (idx == -1) {
+ if (!mAppInfoAdapter.isInstalled(pkgName)) {
mAppInfoAdapter.addToList(pkgName, size, formattedSize);
} else {
mAppInfoAdapter.updatePackage(pkgName, size, formattedSize);
@@ -565,7 +563,9 @@
Set<String> existingList = new HashSet<String>();
boolean ret = false;
// Loop over new list and find out common elements between old and new lists
- for (ApplicationInfo info : newList) {
+ int N = newList.size();
+ for (int i = (N-1); i >= 0; i--) {
+ ApplicationInfo info = newList.get(i);
String pkgName = info.packageName;
AppInfo aInfo = mCache.getEntry(pkgName);
if (aInfo != null) {
@@ -574,10 +574,14 @@
// New package. update info by refreshing
if (localLOGV) Log.i(TAG, "New pkg :"+pkgName+" installed when paused");
updatePackageList(Intent.ACTION_PACKAGE_ADDED, pkgName);
+ // Remove from current list so that the newly added package can
+ // be handled later
+ newList.remove(i);
ret = true;
}
}
- // Loop over old list and figure out state entries
+
+ // Loop over old list and figure out stale entries
List<String> deletedList = null;
Set<String> staleList = mCache.getPkgList();
for (String pkgName : staleList) {
@@ -592,6 +596,7 @@
}
// Delete right away
if (deletedList != null) {
+ if (localLOGV) Log.i(TAG, "Deleting right away");
mAppInfoAdapter.removeFromList(deletedList);
}
return ret;
@@ -653,19 +658,29 @@
return installedAppList;
}
}
+
+ private static boolean matchFilter(boolean filter, Map<String, String> filterMap, String pkg) {
+ boolean add = true;
+ if (filter) {
+ if (filterMap == null || !filterMap.containsKey(pkg)) {
+ add = false;
+ }
+ }
+ return add;
+ }
/*
* Utility method used to figure out list of apps based on filterOption
* If the framework supports an additional flag to indicate running apps
* we can get away with some code here.
*/
- List<ApplicationInfo> getFilteredApps(List<ApplicationInfo> pAppList, int filterOption) {
+ List<ApplicationInfo> getFilteredApps(List<ApplicationInfo> pAppList, int filterOption, boolean filter,
+ Map<String, String> filterMap) {
List<ApplicationInfo> retList = new ArrayList<ApplicationInfo>();
if(pAppList == null) {
return retList;
}
if (filterOption == FILTER_APPS_THIRD_PARTY) {
- List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
for (ApplicationInfo appInfo : pAppList) {
boolean flag = false;
if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
@@ -676,15 +691,16 @@
flag = true;
}
if (flag) {
- appList.add(appInfo);
+ if (matchFilter(filter, filterMap, appInfo.packageName)) {
+ retList.add(appInfo);
+ }
}
}
- return appList;
+ return retList;
} else if (filterOption == FILTER_APPS_RUNNING) {
- List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
List<ActivityManager.RunningAppProcessInfo> procList = getRunningAppProcessesList();
if ((procList == null) || (procList.size() == 0)) {
- return appList;
+ return retList;
}
// Retrieve running processes from ActivityManager
HashMap<String, ActivityManager.RunningAppProcessInfo> runningMap =
@@ -700,15 +716,22 @@
// Query list to find running processes in current list
for (ApplicationInfo appInfo : pAppList) {
if (runningMap.get(appInfo.packageName) != null) {
- appList.add(appInfo);
+ if (matchFilter(filter, filterMap, appInfo.packageName)) {
+ retList.add(appInfo);
+ }
}
}
- return appList;
+ return retList;
} else {
- return pAppList;
+ for (ApplicationInfo appInfo : pAppList) {
+ if (matchFilter(filter, filterMap, appInfo.packageName)) {
+ retList.add(appInfo);
+ }
+ }
+ return retList;
}
}
-
+
private List<ActivityManager.RunningAppProcessInfo> getRunningAppProcessesList() {
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
return am.getRunningAppProcesses();
@@ -750,20 +773,9 @@
}
}
- private void showEmptyViewIfListEmpty() {
- if (localLOGV) Log.i(TAG, "Checking for empty view");
- if (mAppInfoAdapter.getCount() > 0) {
- mListView.setVisibility(View.VISIBLE);
- mEmptyView.setVisibility(View.GONE);
- } else {
- mListView.setVisibility(View.GONE);
- mEmptyView.setVisibility(View.VISIBLE);
- }
- }
-
// internal structure used to track added and deleted packages when
// the activity has focus
- class AddRemoveInfo {
+ static class AddRemoveInfo {
String pkgName;
boolean add;
public AddRemoveInfo(String pPkgName, boolean pAdd) {
@@ -847,7 +859,7 @@
/* Internal class representing an application or packages displayable attributes
*
*/
- class AppInfo {
+ static private class AppInfo {
public String pkgName;
int index;
public CharSequence appName;
@@ -927,11 +939,63 @@
* the getId methods via the package name into the internal maps and indices.
* The order of applications in the list is mirrored in mAppLocalList
*/
- class AppInfoAdapter extends BaseAdapter {
+ class AppInfoAdapter extends BaseAdapter implements Filterable {
private List<ApplicationInfo> mAppList;
private List<ApplicationInfo> mAppLocalList;
+ private Map<String, String> mFilterMap = new HashMap<String, String>();
AlphaComparator mAlphaComparator = new AlphaComparator();
SizeComparator mSizeComparator = new SizeComparator();
+ private Filter mAppFilter = new AppFilter();
+ final private Object mFilterLock = new Object();
+ private Map<String, String> mCurrentFilterMap = null;
+
+ private void generateFilterListLocked(List<ApplicationInfo> list) {
+ mAppLocalList = new ArrayList<ApplicationInfo>(list);
+ synchronized(mFilterLock) {
+ for (ApplicationInfo info : mAppLocalList) {
+ String label = info.packageName;
+ AppInfo aInfo = mCache.getEntry(info.packageName);
+ if ((aInfo != null) && (aInfo.appName != null)) {
+ label = aInfo.appName.toString();
+ }
+ mFilterMap.put(info.packageName, label.toLowerCase());
+ }
+ }
+ }
+
+ private void addFilterListLocked(int newIdx, ApplicationInfo info, CharSequence pLabel) {
+ mAppLocalList.add(newIdx, info);
+ synchronized (mFilterLock) {
+ String label = info.packageName;
+ if (pLabel != null) {
+ label = pLabel.toString();
+ }
+ mFilterMap.put(info.packageName, label.toLowerCase());
+ }
+ }
+
+ private boolean removeFilterListLocked(String removePkg) {
+ // Remove from filtered list
+ int N = mAppLocalList.size();
+ int i;
+ for (i = (N-1); i >= 0; i--) {
+ ApplicationInfo info = mAppLocalList.get(i);
+ if (info.packageName.equalsIgnoreCase(removePkg)) {
+ if (localLOGV) Log.i(TAG, "Removing " + removePkg + " from local list");
+ mAppLocalList.remove(i);
+ synchronized (mFilterLock) {
+ mFilterMap.remove(removePkg);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void reverseGenerateList() {
+ generateFilterListLocked(getFilteredApps(mAppList, mFilterApps, mCurrentFilterMap!= null, mCurrentFilterMap));
+ sortListInner(mSortOrder);
+ }
// Make sure the cache or map contains entries for all elements
// in appList for a valid sort.
@@ -942,11 +1006,11 @@
// Just refresh the list
appList = mAppList;
} else {
- mAppList = pAppList;
+ mAppList = new ArrayList<ApplicationInfo>(pAppList);
appList = pAppList;
notify = true;
}
- mAppLocalList = getFilteredApps(appList, filterOption);
+ generateFilterListLocked(getFilteredApps(appList, filterOption, mCurrentFilterMap!= null, mCurrentFilterMap));
// This loop verifies and creates new entries for new packages in list
int imax = appList.size();
for (int i = 0; i < imax; i++) {
@@ -977,24 +1041,19 @@
return mAppLocalList.get(position);
}
- /*
- * This method returns the index of the package position in the application list
- */
- public int getIndex(String pkgName) {
+ public boolean isInstalled(String pkgName) {
if(pkgName == null) {
- Log.w(TAG, "Getting index of null package in List Adapter");
+ if (localLOGV) Log.w(TAG, "Null pkg name when checking if installed");
+ return false;
}
- int imax = mAppLocalList.size();
- ApplicationInfo appInfo;
- for(int i = 0; i < imax; i++) {
- appInfo = mAppLocalList.get(i);
- if(appInfo.packageName.equalsIgnoreCase(pkgName)) {
- return i;
+ for (ApplicationInfo info : mAppList) {
+ if (info.packageName.equalsIgnoreCase(pkgName)) {
+ return true;
}
}
- return -1;
+ return false;
}
-
+
public ApplicationInfo getApplicationInfo(int position) {
int imax = mAppLocalList.size();
if( (position < 0) || (position >= imax)) {
@@ -1083,7 +1142,7 @@
public void sortBaseList(int sortOrder) {
if (localLOGV) Log.i(TAG, "Sorting base list based on sortOrder = "+sortOrder);
sortAppList(mAppList, sortOrder);
- mAppLocalList = getFilteredApps(mAppList, mFilterApps);
+ generateFilterListLocked(getFilteredApps(mAppList, mFilterApps, mCurrentFilterMap!= null, mCurrentFilterMap));
adjustIndex();
}
@@ -1106,7 +1165,7 @@
*/
public boolean resetAppList(int filterOption) {
// Change application list based on filter option
- mAppLocalList = getFilteredApps(mAppList, filterOption);
+ generateFilterListLocked(getFilteredApps(mAppList, filterOption, mCurrentFilterMap!= null, mCurrentFilterMap));
// Check for all properties in map before sorting. Populate values from cache
for(ApplicationInfo applicationInfo : mAppLocalList) {
AppInfo appInfo = mCache.getEntry(applicationInfo.packageName);
@@ -1119,7 +1178,6 @@
} else {
notifyDataSetChanged();
}
- showEmptyViewIfListEmpty();
return true;
}
@@ -1202,7 +1260,6 @@
if (pkgName == null) {
return;
}
- boolean notInList = true;
// Get ApplicationInfo
ApplicationInfo info = null;
try {
@@ -1216,29 +1273,38 @@
Log.i(TAG, "Null ApplicationInfo for package:"+pkgName);
return;
}
- // Add entry to local list
+ // Add entry to base list
mAppList.add(info);
// Add entry to map. Note that the index gets adjusted later on based on
// whether the newly added package is part of displayed list
+ CharSequence label = info.loadLabel(mPm);
mCache.addEntry(new AppInfo(pkgName, -1,
- info.loadLabel(mPm), info.loadIcon(mPm), size, formattedSize));
+ label, info.loadIcon(mPm), size, formattedSize));
+ if (addLocalEntry(info, label)) {
+ notifyDataSetChanged();
+ }
+ }
+
+ private boolean addLocalEntry(ApplicationInfo info, CharSequence label) {
+ String pkgName = info.packageName;
// Add to list
- if (notInList && (shouldBeInList(mFilterApps, info))) {
+ if (shouldBeInList(mFilterApps, info)) {
// Binary search returns a negative index (ie -index) of the position where
// this might be inserted.
int newIdx = Collections.binarySearch(mAppLocalList, info,
getAppComparator(mSortOrder));
if(newIdx >= 0) {
- Log.i(TAG, "Strange. Package:"+pkgName+" is not new");
- return;
+ if (localLOGV) Log.i(TAG, "Strange. Package:" + pkgName + " is not new");
+ return false;
}
// New entry
newIdx = -newIdx-1;
- mAppLocalList.add(newIdx, info);
+ addFilterListLocked(newIdx, info, label);
// Adjust index
adjustIndex();
- notifyDataSetChanged();
+ return true;
}
+ return false;
}
public void updatePackage(String pkgName,
@@ -1252,9 +1318,13 @@
}
AppInfo aInfo = mCache.getEntry(pkgName);
if (aInfo != null) {
- aInfo.refreshLabel(info.loadLabel(mPm));
+ CharSequence label = info.loadLabel(mPm);
+ aInfo.refreshLabel(label);
aInfo.refreshIcon(info.loadIcon(mPm));
aInfo.setSize(size, formattedSize);
+ // Check if the entry has to be added to the displayed list
+ addLocalEntry(info, label);
+ // Refresh list since size might have changed
notifyDataSetChanged();
}
}
@@ -1286,15 +1356,8 @@
if (localLOGV) Log.i(TAG, "Removing " + pkg + " from cache");
mCache.removeEntry(pkg);
// Remove from filtered list
- int i = 0;
- for (ApplicationInfo info : mAppLocalList) {
- if (info.packageName.equalsIgnoreCase(pkg)) {
- mAppLocalList.remove(i);
- if (localLOGV) Log.i(TAG, "Removing " + pkg + " from local list");
- found = true;
- break;
- }
- i++;
+ if (removeFilterListLocked(pkg)) {
+ found = true;
}
}
// Adjust indices of list entries
@@ -1324,6 +1387,50 @@
notifyDataSetChanged();
}
}
+
+ public Filter getFilter() {
+ return mAppFilter;
+ }
+
+ private class AppFilter extends Filter {
+ @Override
+ protected FilterResults performFiltering(CharSequence prefix) {
+ FilterResults results = new FilterResults();
+ if (prefix == null || prefix.length() == 0) {
+ synchronized (mFilterLock) {
+ results.values = new HashMap<String, String>(mFilterMap);
+ results.count = mFilterMap.size();
+ }
+ } else {
+ final String prefixString = prefix.toString().toLowerCase();
+ Map<String, String> newMap = new HashMap<String, String>();
+ synchronized (mFilterLock) {
+ Map<String, String> localMap = mFilterMap;
+ Set<String> keys = mFilterMap.keySet();
+ for (String key : keys) {
+ String label = localMap.get(key);
+ if (label.indexOf(prefixString) != -1) {
+ newMap.put(key, label);
+ }
+ }
+ }
+ results.values = newMap;
+ results.count = newMap.size();
+ }
+ return results;
+ }
+
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ mCurrentFilterMap = (Map<String, String>) results.values;
+ reverseGenerateList();
+ if (results.count > 0) {
+ notifyDataSetChanged();
+ } else {
+ notifyDataSetInvalidated();
+ }
+ }
+ }
}
/*
@@ -1455,6 +1562,7 @@
String action = intent.getAction();
if (action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
mSortOrder = SORT_ORDER_SIZE;
+ mFilterApps = FILTER_APPS_ALL;
mSizesFirst = true;
}
mPm = getPackageManager();
@@ -1471,7 +1579,6 @@
// initialize the inflater
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mReceiver = new PackageIntentReceiver();
- mEmptyView = (TextView) findViewById(R.id.empty_view);
mObserver = new PkgSizeObserver();
// Create adapter and list view here
List<ApplicationInfo> appList = getInstalledApps(mSortOrder);
@@ -1481,6 +1588,7 @@
lv.setSaveEnabled(true);
lv.setItemsCanFocus(true);
lv.setOnItemClickListener(this);
+ lv.setTextFilterEnabled(true);
mListView = lv;
if (DEBUG_TIME) {
Log.i(TAG, "Total time in Activity.create:: " +
@@ -1829,6 +1937,8 @@
if ((menuId == SORT_ORDER_ALPHA) || (menuId == SORT_ORDER_SIZE)) {
sendMessageToHandler(REORDER_LIST, menuId);
} else if (menuId == FILTER_OPTIONS) {
+ // Pick up the selection value from the list of added choice items.
+ int selection = mFilterApps - MENU_OPTIONS_BASE;
if (mAlertDlg == null) {
mAlertDlg = new AlertDialog.Builder(this).
setTitle(R.string.filter_dlg_title).
@@ -1836,7 +1946,7 @@
setSingleChoiceItems(new CharSequence[] {getText(R.string.filter_apps_all),
getText(R.string.filter_apps_running),
getText(R.string.filter_apps_third_party)},
- -1, this).
+ selection, this).
create();
}
mAlertDlg.show();
@@ -1861,18 +1971,16 @@
switch (which) {
// Make sure that values of 0, 1, 2 match options all, running, third_party when
// created via the AlertDialog.Builder
- case 0:
- newOption = FILTER_APPS_ALL;
+ case FILTER_APPS_ALL:
break;
- case 1:
- newOption = FILTER_APPS_RUNNING;
+ case FILTER_APPS_RUNNING:
break;
- case 2:
- newOption = FILTER_APPS_THIRD_PARTY;
+ case FILTER_APPS_THIRD_PARTY:
break;
default:
return;
}
+ newOption = which;
mAlertDlg.dismiss();
sendMessageToHandler(REORDER_LIST, newOption);
}
diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java
new file mode 100644
index 0000000..2edb328
--- /dev/null
+++ b/src/com/android/settings/PrivacySettings.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.backup.IBackupManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.text.method.LinkMovementMethod;
+import android.widget.TextView;
+
+/**
+ * Gesture lock pattern settings.
+ */
+public class PrivacySettings extends PreferenceActivity implements
+ DialogInterface.OnDismissListener, DialogInterface.OnClickListener {
+
+ private static final String PREFS_NAME = "location_prefs";
+ private static final String PREFS_USE_LOCATION = "use_location";
+
+ // Vendor specific
+ private static final String GSETTINGS_PROVIDER = "com.google.android.providers.settings";
+ private static final String LOCATION_CATEGORY = "location_category";
+ private static final String SETTINGS_CATEGORY = "settings_category";
+ private static final String USE_LOCATION = "use_location";
+ private static final String BACKUP_SETTINGS = "backup_settings";
+ private static final String KEY_DONE_USE_LOCATION = "doneLocation";
+ private CheckBoxPreference mUseLocation;
+ private CheckBoxPreference mBackup;
+ private boolean mOkClicked;
+ private Dialog mConfirmDialog;
+
+ private static final int DIALOG_USE_LOCATION = 1;
+ private static final int DIALOG_ERASE_BACKUP = 2;
+ private int mDialogType;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.privacy_settings);
+
+ mUseLocation = (CheckBoxPreference) getPreferenceScreen().findPreference(USE_LOCATION);
+ mBackup = (CheckBoxPreference) getPreferenceScreen().findPreference(BACKUP_SETTINGS);
+
+ // Vendor specific
+ try {
+ if (mUseLocation != null) {
+ getPackageManager().getPackageInfo(GSETTINGS_PROVIDER, 0);
+ }
+ } catch (NameNotFoundException nnfe) {
+ getPreferenceScreen().removePreference(findPreference(LOCATION_CATEGORY));
+ getPreferenceScreen().removePreference(findPreference(SETTINGS_CATEGORY));
+ }
+ updateToggles();
+
+ boolean doneUseLocation = savedInstanceState == null
+ ? false : savedInstanceState.getBoolean(KEY_DONE_USE_LOCATION, true);
+ if (!doneUseLocation && (getIntent().getBooleanExtra("SHOW_USE_LOCATION", false)
+ || savedInstanceState != null)) {
+ showUseLocationDialog(true);
+ }
+ }
+
+ @Override
+ public void onStop() {
+ if (mConfirmDialog != null && mConfirmDialog.isShowing()) {
+ mConfirmDialog.dismiss();
+ }
+ mConfirmDialog = null;
+ mDialogType = 0;
+ super.onStop();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle icicle) {
+ if (mConfirmDialog != null && mConfirmDialog.isShowing()
+ && mDialogType == DIALOG_USE_LOCATION) {
+ icicle.putBoolean(KEY_DONE_USE_LOCATION, false);
+ }
+ super.onSaveInstanceState(icicle);
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+ Preference preference) {
+ if (preference == mUseLocation) {
+ //normally called on the toggle click
+ if (mUseLocation.isChecked()) {
+ showUseLocationDialog(false);
+ } else {
+ updateUseLocation();
+ }
+ } else if (preference == mBackup) {
+ if (!mBackup.isChecked()) {
+ showEraseBackupDialog();
+ } else {
+ setBackupEnabled(true);
+ }
+ }
+
+ return false;
+ }
+
+ private void showUseLocationDialog(boolean force) {
+ // Show a warning to the user that location data will be shared
+ mOkClicked = false;
+ if (force) {
+ mUseLocation.setChecked(true);
+ }
+
+ if (hasAgreedToUseLocation()) {
+ updateUseLocation();
+ return;
+ }
+
+ mDialogType = DIALOG_USE_LOCATION;
+ CharSequence msg = getResources().getText(R.string.use_location_warning_message);
+ mConfirmDialog = new AlertDialog.Builder(this).setMessage(msg)
+ .setTitle(R.string.use_location_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setPositiveButton(R.string.agree, this)
+ .setNegativeButton(R.string.disagree, this)
+ .show();
+ ((TextView)mConfirmDialog.findViewById(android.R.id.message))
+ .setMovementMethod(LinkMovementMethod.getInstance());
+ mConfirmDialog.setOnDismissListener(this);
+ }
+
+ private void showEraseBackupDialog() {
+ // Show a warning to the user that location data will be shared
+ mOkClicked = false;
+ mBackup.setChecked(true);
+
+ mDialogType = DIALOG_ERASE_BACKUP;
+ CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message);
+ mConfirmDialog = new AlertDialog.Builder(this).setMessage(msg)
+ .setTitle(R.string.backup_erase_dialog_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setPositiveButton(android.R.string.ok, this)
+ .setNegativeButton(android.R.string.cancel, this)
+ .show();
+ mConfirmDialog.setOnDismissListener(this);
+ }
+
+ /*
+ * Creates toggles for each available location provider
+ */
+ private void updateToggles() {
+ ContentResolver res = getContentResolver();
+ mUseLocation.setChecked(Settings.Secure.getInt(res,
+ Settings.Secure.USE_LOCATION_FOR_SERVICES, 2) == 1);
+ mBackup.setChecked(Settings.Secure.getInt(res,
+ Settings.Secure.BACKUP_ENABLED, 0) == 1);
+ }
+
+ private void updateUseLocation() {
+ boolean use = mUseLocation.isChecked();
+ Settings.Secure.putInt(getContentResolver(),
+ Settings.Secure.USE_LOCATION_FOR_SERVICES, use ? 1 : 0);
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ //updateProviders();
+ mOkClicked = true;
+ if (mDialogType == DIALOG_USE_LOCATION) {
+ setAgreedToUseLocation(true);
+ } else if (mDialogType == DIALOG_ERASE_BACKUP) {
+ setBackupEnabled(false);
+ }
+ } else {
+ if (mDialogType == DIALOG_USE_LOCATION) {
+ // Reset the toggle
+ mUseLocation.setChecked(false);
+ } else if (mDialogType == DIALOG_ERASE_BACKUP) {
+ mBackup.setChecked(true);
+ }
+ }
+ updateUseLocation();
+ mDialogType = 0;
+ }
+
+ public void onDismiss(DialogInterface dialog) {
+ // Assuming that onClick gets called first
+ if (!mOkClicked) {
+ if (mDialogType == DIALOG_USE_LOCATION) {
+ mUseLocation.setChecked(false);
+ }
+ }
+ }
+
+ /**
+ * Checks if the user has agreed to the dialog in the past.
+ */
+ private boolean hasAgreedToUseLocation() {
+ SharedPreferences sp = getSharedPreferences(PREFS_NAME, 0);
+ if (sp == null) {
+ return false;
+ }
+ return sp.getBoolean(PREFS_USE_LOCATION, false);
+ }
+
+ /**
+ * Notes that the user has agreed to the dialog and won't need to be prompted in the
+ * future.
+ */
+ private void setAgreedToUseLocation(boolean agreed) {
+ if (agreed) {
+ SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putBoolean(PREFS_USE_LOCATION, true);
+ editor.commit();
+ }
+ }
+
+ /**
+ * Informs the BackupManager of a change in backup state - if backup is disabled,
+ * the data on the server will be erased.
+ * @param enable whether to enable backup
+ */
+ private void setBackupEnabled(boolean enable) {
+ IBackupManager bm = IBackupManager.Stub.asInterface(
+ ServiceManager.getService(Context.BACKUP_SERVICE));
+ if (bm != null) {
+ try {
+ bm.setBackupEnabled(enable);
+ } catch (RemoteException e) {
+ mBackup.setChecked(!enable);
+ return;
+ }
+ }
+ mBackup.setChecked(enable);
+ }
+}
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index 257122b..ce236fd 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -37,6 +37,7 @@
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.telephony.NeighboringCellInfo;
+import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.text.format.DateUtils;
import android.util.Log;
@@ -51,6 +52,7 @@
import android.widget.TextView;
import android.widget.EditText;
+import com.android.internal.telephony.DataConnection;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.PhoneStateIntentReceiver;
@@ -72,7 +74,7 @@
public class RadioInfo extends Activity {
private final String TAG = "phone";
-
+
private static final int EVENT_PHONE_STATE_CHANGED = 100;
private static final int EVENT_SIGNAL_STRENGTH_CHANGED = 200;
private static final int EVENT_SERVICE_STATE_CHANGED = 300;
@@ -200,7 +202,7 @@
int type = ((int[])ar.result)[0];
preferredNetworkType.setSelection(type, true);
} else {
- preferredNetworkType.setSelection(3, true);
+ preferredNetworkType.setSelection(8, true);
}
break;
case EVENT_SET_PREFERRED_TYPE_DONE:
@@ -222,7 +224,7 @@
ar= (AsyncResult) msg.obj;
if (ar.exception == null) {
mQxdmLogEnabled = !mQxdmLogEnabled;
-
+
updateQxdmState(mQxdmLogEnabled);
displayQxdmEnableResult();
}
@@ -256,22 +258,22 @@
}
};
- private class OemCommands {
+ static private class OemCommands {
- public final int OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE = 32;
- public final int OEM_QXDM_SDLOG_DEFAULT_MASK = 0;
- public final int OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX = 8;
+ public static final int OEM_QXDM_SDLOG_DEFAULT_FILE_SIZE = 32;
+ public static final int OEM_QXDM_SDLOG_DEFAULT_MASK = 0;
+ public static final int OEM_QXDM_SDLOG_DEFAULT_MAX_INDEX = 8;
- final int SIZE_OF_INT = 4;
- final int OEM_FEATURE_ENABLE = 1;
- final int OEM_FEATURE_DISABLE = 0;
- final int OEM_SIMPE_FEAUTURE_LEN = 1;
+ static final int SIZE_OF_INT = 4;
+ static final int OEM_FEATURE_ENABLE = 1;
+ static final int OEM_FEATURE_DISABLE = 0;
+ static final int OEM_SIMPE_FEAUTURE_LEN = 1;
- final int OEM_QXDM_SDLOG_FUNCTAG = 0x00010000;
- final int OEM_QXDM_SDLOG_LEN = 4;
- final int OEM_PS_AUTO_ATTACH_FUNCTAG = 0x00020000;
- final int OEM_CIPHERING_FUNCTAG = 0x00020001;
-
+ static final int OEM_QXDM_SDLOG_FUNCTAG = 0x00010000;
+ static final int OEM_QXDM_SDLOG_LEN = 4;
+ static final int OEM_PS_AUTO_ATTACH_FUNCTAG = 0x00020000;
+ static final int OEM_CIPHERING_FUNCTAG = 0x00020001;
+
/**
* The OEM interface to store QXDM to SD.
*
@@ -342,7 +344,7 @@
byte[] getCipheringData(boolean enable) {
return getSimpleFeatureData(OEM_CIPHERING_FUNCTAG, enable);
}
-
+
private byte[] getSimpleFeatureData(int tag, boolean enable) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
@@ -407,7 +409,7 @@
preferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,
android.R.layout.simple_spinner_item, mPreferredNetworkLabels);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
preferredNetworkType.setAdapter(adapter);
preferredNetworkType.setOnItemSelectedListener(mPreferredNetworkHandler);
@@ -427,12 +429,12 @@
refreshSmscButton.setOnClickListener(mRefreshSmscButtonHandler);
dnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle);
dnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler);
-
+
mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);
mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED);
mPhoneStateReceiver.notifyPhoneCallState(EVENT_PHONE_STATE_CHANGED);
-
+
updateQxdmState(null);
mOem = new OemCommands();
@@ -544,7 +546,7 @@
private boolean isRadioOn() {
return phone.getServiceState().getState() != ServiceState.STATE_POWER_OFF;
}
-
+
private void updatePowerState() {
String buttonText = isRadioOn() ?
getString(R.string.turn_off_radio) :
@@ -553,18 +555,18 @@
}
private void updateQxdmState(Boolean newQxdmStatus) {
- SharedPreferences sp =
+ SharedPreferences sp =
PreferenceManager.getDefaultSharedPreferences(phone.getContext());
mQxdmLogEnabled = sp.getBoolean("qxdmstatus", false);
// This is called from onCreate, onResume, and the handler when the status
- // is updated.
+ // is updated.
if (newQxdmStatus != null) {
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("qxdmstatus", newQxdmStatus);
editor.commit();
mQxdmLogEnabled = newQxdmStatus;
}
-
+
String buttonText = mQxdmLogEnabled ?
getString(R.string.turn_off_qxdm) :
getString(R.string.turn_on_qxdm);
@@ -620,38 +622,59 @@
}
private final void updateLocation(CellLocation location) {
- int lac = -1;
- int cid = -1;
+ Resources r = getResources();
if (location instanceof GsmCellLocation) {
GsmCellLocation loc = (GsmCellLocation)location;
- lac = loc.getLac();
- cid = loc.getCid();
+ int lac = loc.getLac();
+ int cid = loc.getCid();
+ mLocation.setText(r.getString(R.string.radioInfo_lac) + " = "
+ + ((lac == -1) ? "unknown" : Integer.toHexString(lac))
+ + " "
+ + r.getString(R.string.radioInfo_cid) + " = "
+ + ((cid == -1) ? "unknown" : Integer.toHexString(cid)));
+ } else if (location instanceof CdmaCellLocation) {
+ CdmaCellLocation loc = (CdmaCellLocation)location;
+ int bid = loc.getBaseStationId();
+ int sid = loc.getSystemId();
+ int nid = loc.getNetworkId();
+ int lat = loc.getBaseStationLatitude();
+ int lon = loc.getBaseStationLongitude();
+ mLocation.setText("BID = "
+ + ((bid == -1) ? "unknown" : Integer.toHexString(bid))
+ + " "
+ + "SID = "
+ + ((sid == -1) ? "unknown" : Integer.toHexString(sid))
+ + " "
+ + "NID = "
+ + ((nid == -1) ? "unknown" : Integer.toHexString(nid))
+ + "\n"
+ + "LAT = "
+ + ((lat == -1) ? "unknown" : Integer.toHexString(lat))
+ + " "
+ + "LONG = "
+ + ((lon == -1) ? "unknown" : Integer.toHexString(lon)));
+ } else {
+ mLocation.setText("unknown");
}
- Resources r = getResources();
- mLocation.setText(r.getString(R.string.radioInfo_lac) + " = "
- + ((lac == -1) ? "unknown" : Integer.toHexString(lac))
- + " "
- + r.getString(R.string.radioInfo_cid) + " = "
- + ((cid == -1) ? "unknown" : Integer.toHexString(cid)));
}
private final void updateNeighboringCids(ArrayList<NeighboringCellInfo> cids) {
- String neighborings = "";
+ StringBuilder sb = new StringBuilder();
+
if (cids != null) {
if ( cids.isEmpty() ) {
- neighborings = "no neighboring cells";
+ sb.append("no neighboring cells");
} else {
for (NeighboringCellInfo cell : cids) {
- neighborings += "{" + Integer.toHexString(cell.getCid())
- + "@" + cell.getRssi() + "} ";
+ sb.append(cell.toString()).append(" ");
}
}
} else {
- neighborings = "unknown";
+ sb.append("unknown");
}
- mNeighboringCids.setText(neighborings);
+ mNeighboringCids.setText(sb.toString());
}
private final void
@@ -671,7 +694,7 @@
int state = serviceState.getState();
Resources r = getResources();
String display = r.getString(R.string.radioInfo_unknown);
-
+
switch (state) {
case ServiceState.STATE_IN_SERVICE:
display = r.getString(R.string.radioInfo_service_in);
@@ -684,9 +707,9 @@
display = r.getString(R.string.radioInfo_service_off);
break;
}
-
+
gsmState.setText(display);
-
+
if (serviceState.getRoaming()) {
roamingState.setText(R.string.radioInfo_roaming_in);
} else {
@@ -737,7 +760,7 @@
display = r.getString(R.string.radioInfo_data_suspended);
break;
}
-
+
gprsState.setText(display);
}
@@ -755,12 +778,12 @@
Resources r = getResources();
s = phone.getDeviceId();
- if (s == null) s = r.getString(R.string.radioInfo_unknown);
+ if (s == null) s = r.getString(R.string.radioInfo_unknown);
mDeviceId.setText(s);
-
+
s = phone.getLine1Number();
- if (s == null) s = r.getString(R.string.radioInfo_unknown);
+ if (s == null) s = r.getString(R.string.radioInfo_unknown);
number.setText(s);
}
@@ -791,10 +814,10 @@
long rxPackets = netstat.getMobileRxPackets();
long txBytes = netstat.getMobileTxBytes();
long rxBytes = netstat.getMobileRxBytes();
-
+
String packets = r.getString(R.string.radioInfo_display_packets);
String bytes = r.getString(R.string.radioInfo_display_bytes);
-
+
sent.setText(txPackets + " " + packets + ", " + txBytes + " " + bytes);
received.setText(rxPackets + " " + packets + ", " + rxBytes + " " + bytes);
} catch (RemoteException e) {
@@ -828,7 +851,7 @@
*/
private final void pingHostname() {
try {
- Process p = Runtime.getRuntime().exec("ping -c 1 www.google.com");
+ Process p = Runtime.getRuntime().exec("ping -c 1 www.google.com");
int status = p.waitFor();
if (status == 0) {
mPingHostnameResult = "Pass";
@@ -916,20 +939,24 @@
private final void updatePdpList() {
StringBuilder sb = new StringBuilder("========DATA=======\n");
- List<PdpConnection> pdps = phone.getCurrentPdpList();
+ List<DataConnection> dcs = phone.getCurrentDataConnectionList();
- for (PdpConnection pdp : pdps) {
- sb.append(" State: ").append(pdp.getState().toString()).append("\n");
- if (pdp.getState().isActive()) {
+ for (DataConnection dc : dcs) {
+ sb.append(" State: ").append(dc.getState().toString()).append("\n");
+ if (dc.getState().isActive()) {
long timeElapsed =
- (System.currentTimeMillis() - pdp.getConnectionTime())/1000;
+ (System.currentTimeMillis() - dc.getConnectionTime())/1000;
sb.append(" connected at ")
- .append(DateUtils.timeString(pdp.getConnectionTime()))
+ .append(DateUtils.timeString(dc.getConnectionTime()))
.append(" and elapsed ")
- .append(DateUtils.formatElapsedTime(timeElapsed))
- .append("\n to ")
- .append(pdp.getApn().toString())
- .append("\ninterface: ")
+ .append(DateUtils.formatElapsedTime(timeElapsed));
+
+ if (dc instanceof PdpConnection) {
+ PdpConnection pdp = (PdpConnection)dc;
+ sb.append("\n to ")
+ .append(pdp.getApn().toString());
+ }
+ sb.append("\ninterface: ")
.append(phone.getInterfaceName(phone.getActiveApnTypes()[0]))
.append("\naddress: ")
.append(phone.getIpAddress(phone.getActiveApnTypes()[0]))
@@ -939,14 +966,19 @@
if (dns != null) {
sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]);
}
- } else if (pdp.getState().isInactive()) {
+ } else if (dc.getState().isInactive()) {
sb.append(" disconnected with last try at ")
- .append(DateUtils.timeString(pdp.getLastFailTime()))
+ .append(DateUtils.timeString(dc.getLastFailTime()))
.append("\n fail because ")
- .append(pdp.getLastFailCause().toString());
+ .append(dc.getLastFailCause().toString());
} else {
- sb.append(" is connecting to ")
- .append(pdp.getApn().toString());
+ if (dc instanceof PdpConnection) {
+ PdpConnection pdp = (PdpConnection)dc;
+ sb.append(" is connecting to ")
+ .append(pdp.getApn().toString());
+ } else {
+ sb.append(" is connecting");
+ }
}
sb.append("\n===================");
}
@@ -958,8 +990,7 @@
private void displayQxdmEnableResult() {
String status = mQxdmLogEnabled ? "Start QXDM Log" : "Stop QXDM Log";
- DialogInterface mProgressPanel = new AlertDialog.
- Builder(this).setMessage(status).show();
+ new AlertDialog.Builder(this).setMessage(status).show();
mHandler.postDelayed(
new Runnable() {
@@ -1036,7 +1067,7 @@
return true;
}
};
-
+
private MenuItem.OnMenuItemClickListener mToggleData = new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
int state = mTelephonyManager.getDataState();
@@ -1082,7 +1113,7 @@
public void onClick(View v) {
mCipherOn = !getCiphPref();
byte[] data = mOem.getCipheringData(mCipherOn);
-
+
if (data == null)
return;
@@ -1091,14 +1122,14 @@
mHandler.obtainMessage(EVENT_SET_CIPHER_DONE));
}
};
-
+
OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
public void onClick(View v) {
phone.disableDnsCheck(!phone.isDnsCheckDisabled());
updateDnsCheckState();
}
};
-
+
OnClickListener mPingButtonHandler = new OnClickListener() {
public void onClick(View v) {
updatePingState();
@@ -1149,5 +1180,13 @@
};
private String[] mPreferredNetworkLabels = {
- "WCDMA preferred", "GSM only", "WCDMA only", "Unknown"};
+ "WCDMA preferred",
+ "GSM only",
+ "WCDMA only",
+ "GSM auto (PRL)",
+ "CDMA auto (PRL)",
+ "CDMA only",
+ "EvDo only",
+ "GSM/CDMA auto (PRL)",
+ "Unknown"};
}
diff --git a/src/com/android/settings/RingerVolumePreference.java b/src/com/android/settings/RingerVolumePreference.java
index 2d21ec6..0d01965 100644
--- a/src/com/android/settings/RingerVolumePreference.java
+++ b/src/com/android/settings/RingerVolumePreference.java
@@ -16,10 +16,12 @@
package com.android.settings;
+import android.app.Dialog;
import android.content.Context;
import android.media.AudioManager;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.preference.VolumePreference;
-import android.preference.VolumePreference.SeekBarVolumizer;
import android.provider.Settings;
import android.util.AttributeSet;
import android.view.View;
@@ -121,9 +123,79 @@
private void cleanup() {
if (mNotificationSeekBarVolumizer != null) {
+ Dialog dialog = getDialog();
+ if (dialog != null && dialog.isShowing()) {
+ // Stopped while dialog was showing, revert changes
+ mNotificationSeekBarVolumizer.revertVolume();
+ }
mNotificationSeekBarVolumizer.stop();
mNotificationSeekBarVolumizer = null;
}
}
-
+
+ @Override
+ protected Parcelable onSaveInstanceState() {
+ final Parcelable superState = super.onSaveInstanceState();
+ if (isPersistent()) {
+ // No need to save instance state since it's persistent
+ return superState;
+ }
+
+ final SavedState myState = new SavedState(superState);
+ if (mNotificationSeekBarVolumizer != null) {
+ mNotificationSeekBarVolumizer.onSaveInstanceState(myState.getVolumeStore());
+ }
+ return myState;
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Parcelable state) {
+ if (state == null || !state.getClass().equals(SavedState.class)) {
+ // Didn't save state for us in onSaveInstanceState
+ super.onRestoreInstanceState(state);
+ return;
+ }
+
+ SavedState myState = (SavedState) state;
+ super.onRestoreInstanceState(myState.getSuperState());
+ if (mNotificationSeekBarVolumizer != null) {
+ mNotificationSeekBarVolumizer.onRestoreInstanceState(myState.getVolumeStore());
+ }
+ }
+
+ private static class SavedState extends BaseSavedState {
+ VolumeStore mVolumeStore = new VolumeStore();
+
+ public SavedState(Parcel source) {
+ super(source);
+ mVolumeStore.volume = source.readInt();
+ mVolumeStore.originalVolume = source.readInt();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ super.writeToParcel(dest, flags);
+ dest.writeInt(mVolumeStore.volume);
+ dest.writeInt(mVolumeStore.originalVolume);
+ }
+
+ VolumeStore getVolumeStore() {
+ return mVolumeStore;
+ }
+
+ public SavedState(Parcelable superState) {
+ super(superState);
+ }
+
+ public static final Parcelable.Creator<SavedState> CREATOR =
+ new Parcelable.Creator<SavedState>() {
+ public SavedState createFromParcel(Parcel in) {
+ return new SavedState(in);
+ }
+
+ public SavedState[] newArray(int size) {
+ return new SavedState[size];
+ }
+ };
+ }
}
diff --git a/src/com/android/settings/RunningServices.java b/src/com/android/settings/RunningServices.java
new file mode 100644
index 0000000..6c11ea0
--- /dev/null
+++ b/src/com/android/settings/RunningServices.java
@@ -0,0 +1,953 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.settings.R;
+import android.app.ActivityManager;
+import android.app.ActivityManagerNative;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.ListActivity;
+import android.app.PendingIntent;
+import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.Debug;
+import android.os.Handler;
+import android.os.Message;
+import android.os.RemoteException;
+import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.text.format.DateUtils;
+import android.text.format.Formatter;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class RunningServices extends ListActivity
+ implements AbsListView.RecyclerListener,
+ DialogInterface.OnClickListener {
+ static final String TAG = "RunningServices";
+
+ /** Maximum number of services to retrieve */
+ static final int MAX_SERVICES = 100;
+
+ static final int MSG_UPDATE_TIMES = 1;
+ static final int MSG_UPDATE_CONTENTS = 2;
+
+ static final long TIME_UPDATE_DELAY = 1000;
+ static final long CONTENTS_UPDATE_DELAY = 2000;
+
+ // Memory pages are 4K.
+ static final long PAGE_SIZE = 4*1024;
+
+ long SECONDARY_SERVER_MEM;
+
+ final HashMap<View, ActiveItem> mActiveItems = new HashMap<View, ActiveItem>();
+
+ ActivityManager mAm;
+
+ State mState;
+
+ StringBuilder mBuilder = new StringBuilder(128);
+
+ BaseItem mCurSelected;
+
+ int mProcessBgColor;
+
+ TextView mBackgroundProcessText;
+ TextView mForegroundProcessText;
+
+ int mLastNumBackgroundProcesses = -1;
+ int mLastNumForegroundProcesses = -1;
+ long mLastBackgroundProcessMemory = -1;
+ long mLastForegroundProcessMemory = -1;
+ long mLastAvailMemory = -1;
+
+ Dialog mCurDialog;
+
+ byte[] mBuffer = new byte[1024];
+
+ class ActiveItem {
+ View mRootView;
+ BaseItem mItem;
+ ActivityManager.RunningServiceInfo mService;
+ ViewHolder mHolder;
+ long mFirstRunTime;
+
+ void updateTime(Context context) {
+ if (mItem.mIsProcess) {
+ String size = mItem.mSizeStr != null ? mItem.mSizeStr : "";
+ if (!size.equals(mItem.mCurSizeStr)) {
+ mItem.mCurSizeStr = size;
+ mHolder.size.setText(size);
+ }
+ } else {
+ if (mItem.mActiveSince >= 0) {
+ mHolder.size.setText(DateUtils.formatElapsedTime(mBuilder,
+ (SystemClock.uptimeMillis()-mFirstRunTime)/1000));
+ } else {
+ mHolder.size.setText(context.getResources().getText(
+ R.string.service_restarting));
+ }
+ }
+ }
+ }
+
+ static class BaseItem {
+ final boolean mIsProcess;
+
+ PackageItemInfo mPackageInfo;
+ CharSequence mDisplayLabel;
+ String mLabel;
+ String mDescription;
+
+ int mCurSeq;
+
+ long mActiveSince;
+ long mSize;
+ String mSizeStr;
+ String mCurSizeStr;
+ boolean mNeedDivider;
+
+ public BaseItem(boolean isProcess) {
+ mIsProcess = isProcess;
+ }
+ }
+
+ static class ServiceItem extends BaseItem {
+ ActivityManager.RunningServiceInfo mRunningService;
+ ServiceInfo mServiceInfo;
+ boolean mShownAsStarted;
+
+ public ServiceItem() {
+ super(false);
+ }
+ }
+
+ static class ProcessItem extends BaseItem {
+ final HashMap<ComponentName, ServiceItem> mServices
+ = new HashMap<ComponentName, ServiceItem>();
+ final SparseArray<ProcessItem> mDependentProcesses
+ = new SparseArray<ProcessItem>();
+
+ final int mUid;
+ final String mProcessName;
+ int mPid;
+
+ ProcessItem mClient;
+ int mLastNumDependentProcesses;
+
+ int mRunningSeq;
+ ActivityManager.RunningAppProcessInfo mRunningProcessInfo;
+
+ public ProcessItem(Context context, int uid, String processName) {
+ super(true);
+ mDescription = context.getResources().getString(
+ R.string.service_process_name, processName);
+ mUid = uid;
+ mProcessName = processName;
+ }
+
+ void ensureLabel(PackageManager pm) {
+ if (mLabel != null) {
+ return;
+ }
+
+ try {
+ ApplicationInfo ai = pm.getApplicationInfo(mProcessName, 0);
+ if (ai.uid == mUid) {
+ mDisplayLabel = ai.loadLabel(pm);
+ mLabel = mDisplayLabel.toString();
+ mPackageInfo = ai;
+ return;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+
+ // If we couldn't get information about the overall
+ // process, try to find something about the uid.
+ String[] pkgs = pm.getPackagesForUid(mUid);
+
+ // If there is one package with this uid, that is what we want.
+ if (pkgs.length == 1) {
+ try {
+ ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
+ mDisplayLabel = ai.loadLabel(pm);
+ mLabel = mDisplayLabel.toString();
+ mPackageInfo = ai;
+ return;
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ }
+
+ // If there are multiple, see if one gives us the official name
+ // for this uid.
+ for (String name : pkgs) {
+ try {
+ PackageInfo pi = pm.getPackageInfo(name, 0);
+ if (pi.sharedUserLabel != 0) {
+ CharSequence nm = pm.getText(name,
+ pi.sharedUserLabel, pi.applicationInfo);
+ if (nm != null) {
+ mDisplayLabel = nm;
+ mLabel = nm.toString();
+ mPackageInfo = pi.applicationInfo;
+ return;
+ }
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ }
+
+ // If still don't have anything to display, just use the
+ // service info.
+ if (mServices.size() > 0) {
+ mPackageInfo = mServices.values().iterator().next()
+ .mServiceInfo.applicationInfo;
+ mDisplayLabel = mPackageInfo.loadLabel(pm);
+ mLabel = mDisplayLabel.toString();
+ return;
+ }
+
+ // Finally... whatever, just pick the first package's name.
+ try {
+ ApplicationInfo ai = pm.getApplicationInfo(pkgs[0], 0);
+ mDisplayLabel = ai.loadLabel(pm);
+ mLabel = mDisplayLabel.toString();
+ mPackageInfo = ai;
+ return;
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ }
+
+ boolean updateService(Context context,
+ ActivityManager.RunningServiceInfo service) {
+ final PackageManager pm = context.getPackageManager();
+
+ boolean changed = false;
+ ServiceItem si = mServices.get(service.service);
+ if (si == null) {
+ changed = true;
+ si = new ServiceItem();
+ si.mRunningService = service;
+ try {
+ si.mServiceInfo = pm.getServiceInfo(service.service, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ if (si.mServiceInfo != null && (si.mServiceInfo.labelRes != 0
+ || si.mServiceInfo.nonLocalizedLabel != null)) {
+ si.mDisplayLabel = si.mServiceInfo.loadLabel(pm);
+ si.mLabel = si.mDisplayLabel.toString();
+ } else {
+ si.mLabel = si.mRunningService.service.getClassName();
+ int tail = si.mLabel.lastIndexOf('.');
+ if (tail >= 0) {
+ si.mLabel = si.mLabel.substring(tail+1, si.mLabel.length());
+ }
+ si.mDisplayLabel = si.mLabel;
+ }
+ si.mPackageInfo = si.mServiceInfo.applicationInfo;
+ mServices.put(service.service, si);
+ }
+ si.mCurSeq = mCurSeq;
+ si.mRunningService = service;
+ long activeSince = service.restarting == 0 ? service.activeSince : -1;
+ if (si.mActiveSince != activeSince) {
+ si.mActiveSince = activeSince;
+ changed = true;
+ }
+ if (service.clientPackage != null && service.clientLabel != 0) {
+ if (si.mShownAsStarted) {
+ si.mShownAsStarted = false;
+ changed = true;
+ }
+ try {
+ Resources clientr = pm.getResourcesForApplication(service.clientPackage);
+ String label = clientr.getString(service.clientLabel);
+ si.mDescription = context.getResources().getString(
+ R.string.service_client_name, label);
+ } catch (PackageManager.NameNotFoundException e) {
+ si.mDescription = null;
+ }
+ } else {
+ if (!si.mShownAsStarted) {
+ si.mShownAsStarted = true;
+ changed = true;
+ }
+ si.mDescription = context.getResources().getString(
+ R.string.service_started_by_app);
+ }
+
+ return changed;
+ }
+
+ boolean updateSize(Context context, Debug.MemoryInfo mem, int curSeq) {
+ mSize = ((long)mem.getTotalPss()) * 1024;
+ if (mCurSeq == curSeq) {
+ String sizeStr = Formatter.formatShortFileSize(
+ context, mSize);
+ if (!sizeStr.equals(mSizeStr)){
+ mSizeStr = sizeStr;
+ // We update this on the second tick where we update just
+ // the text in the current items, so no need to say we
+ // changed here.
+ return false;
+ }
+ }
+ return false;
+ }
+
+ boolean buildDependencyChain(Context context, PackageManager pm, int curSeq) {
+ final int NP = mDependentProcesses.size();
+ boolean changed = false;
+ for (int i=0; i<NP; i++) {
+ ProcessItem proc = mDependentProcesses.valueAt(i);
+ if (proc.mClient != this) {
+ changed = true;
+ proc.mClient = this;
+ }
+ proc.mCurSeq = curSeq;
+ proc.ensureLabel(pm);
+ changed |= proc.buildDependencyChain(context, pm, curSeq);
+ }
+
+ if (mLastNumDependentProcesses != mDependentProcesses.size()) {
+ changed = true;
+ mLastNumDependentProcesses = mDependentProcesses.size();
+ }
+
+ return changed;
+ }
+
+ void addDependentProcesses(ArrayList<BaseItem> dest,
+ ArrayList<ProcessItem> destProc) {
+ final int NP = mDependentProcesses.size();
+ for (int i=0; i<NP; i++) {
+ ProcessItem proc = mDependentProcesses.valueAt(i);
+ proc.addDependentProcesses(dest, destProc);
+ dest.add(proc);
+ if (proc.mPid > 0) {
+ destProc.add(proc);
+ }
+ }
+ }
+ }
+
+ static class State {
+ final SparseArray<HashMap<String, ProcessItem>> mProcesses
+ = new SparseArray<HashMap<String, ProcessItem>>();
+ final SparseArray<ProcessItem> mActiveProcesses
+ = new SparseArray<ProcessItem>();
+
+ // Temporary for finding process dependencies.
+ final SparseArray<ProcessItem> mRunningProcesses
+ = new SparseArray<ProcessItem>();
+
+ final ArrayList<BaseItem> mItems = new ArrayList<BaseItem>();
+ final ArrayList<ProcessItem> mProcessItems = new ArrayList<ProcessItem>();
+ final ArrayList<ProcessItem> mAllProcessItems = new ArrayList<ProcessItem>();
+
+ int mSequence = 0;
+
+ int mNumBackgroundProcesses;
+ long mBackgroundProcessMemory;
+ int mNumForegroundProcesses;
+ long mForegroundProcessMemory;
+
+ boolean update(Context context, ActivityManager am) {
+ final PackageManager pm = context.getPackageManager();
+
+ mSequence++;
+
+ boolean changed = false;
+
+ List<ActivityManager.RunningServiceInfo> services
+ = am.getRunningServices(MAX_SERVICES);
+ final int NS = services != null ? services.size() : 0;
+ for (int i=0; i<NS; i++) {
+ ActivityManager.RunningServiceInfo si = services.get(i);
+ // We are not interested in services that have not been started
+ // and don't have a known client, because
+ // there is nothing the user can do about them.
+ if (!si.started && si.clientLabel == 0) {
+ continue;
+ }
+ // We likewise don't care about services running in a
+ // persistent process like the system or phone.
+ if ((si.flags&ActivityManager.RunningServiceInfo.FLAG_PERSISTENT_PROCESS)
+ != 0) {
+ continue;
+ }
+
+ HashMap<String, ProcessItem> procs = mProcesses.get(si.uid);
+ if (procs == null) {
+ procs = new HashMap<String, ProcessItem>();
+ mProcesses.put(si.uid, procs);
+ }
+ ProcessItem proc = procs.get(si.process);
+ if (proc == null) {
+ changed = true;
+ proc = new ProcessItem(context, si.uid, si.process);
+ procs.put(si.process, proc);
+ }
+
+ if (proc.mCurSeq != mSequence) {
+ int pid = si.restarting == 0 ? si.pid : 0;
+ if (pid != proc.mPid) {
+ changed = true;
+ if (proc.mPid != pid) {
+ if (proc.mPid != 0) {
+ mActiveProcesses.remove(proc.mPid);
+ }
+ if (pid != 0) {
+ mActiveProcesses.put(pid, proc);
+ }
+ proc.mPid = pid;
+ }
+ }
+ proc.mDependentProcesses.clear();
+ proc.mCurSeq = mSequence;
+ }
+ changed |= proc.updateService(context, si);
+ }
+
+ // Now update the map of other processes that are running (but
+ // don't have services actively running inside them).
+ List<ActivityManager.RunningAppProcessInfo> processes
+ = am.getRunningAppProcesses();
+ final int NP = processes != null ? processes.size() : 0;
+ for (int i=0; i<NP; i++) {
+ ActivityManager.RunningAppProcessInfo pi = processes.get(i);
+ ProcessItem proc = mActiveProcesses.get(pi.pid);
+ if (proc == null) {
+ // This process is not one that is a direct container
+ // of a service, so look for it in the secondary
+ // running list.
+ proc = mRunningProcesses.get(pi.pid);
+ if (proc == null) {
+ proc = new ProcessItem(context, pi.uid, pi.processName);
+ proc.mPid = pi.pid;
+ mRunningProcesses.put(pi.pid, proc);
+ }
+ proc.mDependentProcesses.clear();
+ }
+ proc.mRunningSeq = mSequence;
+ proc.mRunningProcessInfo = pi;
+ }
+
+ // Build the chains from client processes to the process they are
+ // dependent on; also remove any old running processes.
+ int NRP = mRunningProcesses.size();
+ for (int i=0; i<NRP; i++) {
+ ProcessItem proc = mRunningProcesses.valueAt(i);
+ if (proc.mRunningSeq == mSequence) {
+ int clientPid = proc.mRunningProcessInfo.importanceReasonPid;
+ if (clientPid != 0) {
+ ProcessItem client = mActiveProcesses.get(clientPid);
+ if (client == null) {
+ client = mRunningProcesses.get(clientPid);
+ }
+ if (client != null) {
+ client.mDependentProcesses.put(proc.mPid, proc);
+ }
+ } else {
+ // In this pass the process doesn't have a client.
+ // Clear to make sure if it later gets the same one
+ // that we will detect the change.
+ proc.mClient = null;
+ }
+ } else {
+ mRunningProcesses.remove(mRunningProcesses.keyAt(i));
+ }
+ }
+
+ // Follow the tree from all primary service processes to all
+ // processes they are dependent on, marking these processes as
+ // still being active and determining if anything has changed.
+ final int NAP = mActiveProcesses.size();
+ for (int i=0; i<NAP; i++) {
+ ProcessItem proc = mActiveProcesses.valueAt(i);
+ if (proc.mCurSeq == mSequence) {
+ changed |= proc.buildDependencyChain(context, pm, mSequence);
+ }
+ }
+
+ // Look for services and their primary processes that no longer exist...
+ for (int i=0; i<mProcesses.size(); i++) {
+ HashMap<String, ProcessItem> procs = mProcesses.valueAt(i);
+ Iterator<ProcessItem> pit = procs.values().iterator();
+ while (pit.hasNext()) {
+ ProcessItem pi = pit.next();
+ if (pi.mCurSeq == mSequence) {
+ pi.ensureLabel(pm);
+ if (pi.mPid == 0) {
+ // Sanity: a non-process can't be dependent on
+ // anything.
+ pi.mDependentProcesses.clear();
+ }
+ } else {
+ changed = true;
+ pit.remove();
+ if (procs.size() == 0) {
+ mProcesses.remove(mProcesses.keyAt(i));
+ }
+ if (pi.mPid != 0) {
+ mActiveProcesses.remove(pi.mPid);
+ }
+ continue;
+ }
+ Iterator<ServiceItem> sit = pi.mServices.values().iterator();
+ while (sit.hasNext()) {
+ ServiceItem si = sit.next();
+ if (si.mCurSeq != mSequence) {
+ changed = true;
+ sit.remove();
+ }
+ }
+ }
+ }
+
+ if (changed) {
+ mItems.clear();
+ mProcessItems.clear();
+ for (int i=0; i<mProcesses.size(); i++) {
+ for (ProcessItem pi : mProcesses.valueAt(i).values()) {
+ pi.mNeedDivider = false;
+ // First add processes we are dependent on.
+ pi.addDependentProcesses(mItems, mProcessItems);
+ // And add the process itself.
+ mItems.add(pi);
+ if (pi.mPid > 0) {
+ mProcessItems.add(pi);
+ }
+ // And finally the services running in it.
+ boolean needDivider = false;
+ for (ServiceItem si : pi.mServices.values()) {
+ si.mNeedDivider = needDivider;
+ needDivider = true;
+ mItems.add(si);
+ }
+ }
+ }
+ }
+
+ // Count number of interesting other (non-active) processes, and
+ // build a list of all processes we will retrieve memory for.
+ mAllProcessItems.clear();
+ mAllProcessItems.addAll(mProcessItems);
+ mNumBackgroundProcesses = 0;
+ mNumForegroundProcesses = 0;
+ NRP = mRunningProcesses.size();
+ for (int i=0; i<NRP; i++) {
+ ProcessItem proc = mRunningProcesses.valueAt(i);
+ if (proc.mCurSeq != mSequence) {
+ // We didn't hit this process as a dependency on one
+ // of our active ones, so add it up if needed.
+ if (proc.mRunningProcessInfo.importance >=
+ ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
+ mNumBackgroundProcesses++;
+ mAllProcessItems.add(proc);
+ } else if (proc.mRunningProcessInfo.importance <=
+ ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+ mNumForegroundProcesses++;
+ mAllProcessItems.add(proc);
+ }
+ }
+ }
+
+ try {
+ mBackgroundProcessMemory = 0;
+ mForegroundProcessMemory = 0;
+ final int numProc = mAllProcessItems.size();
+ int[] pids = new int[numProc];
+ for (int i=0; i<numProc; i++) {
+ pids[i] = mAllProcessItems.get(i).mPid;
+ }
+ Debug.MemoryInfo[] mem = ActivityManagerNative.getDefault()
+ .getProcessMemoryInfo(pids);
+ for (int i=pids.length-1; i>=0; i--) {
+ ProcessItem proc = mAllProcessItems.get(i);
+ changed |= proc.updateSize(context, mem[i], mSequence);
+ if (proc.mCurSeq == mSequence) {
+ continue;
+ }
+ if (proc.mRunningProcessInfo.importance >=
+ ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
+ mBackgroundProcessMemory += proc.mSize;
+ } else if (proc.mRunningProcessInfo.importance <=
+ ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
+ mForegroundProcessMemory += proc.mSize;
+ }
+ }
+ } catch (RemoteException e) {
+ }
+
+ return changed;
+ }
+ }
+
+ static class TimeTicker extends TextView {
+ public TimeTicker(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+ }
+
+ static class ViewHolder {
+ ImageView separator;
+ ImageView icon;
+ TextView name;
+ TextView description;
+ TextView size;
+ }
+
+ class ServiceListAdapter extends BaseAdapter {
+ final State mState;
+ final LayoutInflater mInflater;
+
+ ServiceListAdapter(State state) {
+ mState = state;
+ mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ }
+
+ public boolean hasStableIds() {
+ return true;
+ }
+
+ public int getCount() {
+ return mState.mItems.size();
+ }
+
+ public Object getItem(int position) {
+ return mState.mItems.get(position);
+ }
+
+ public long getItemId(int position) {
+ return position;
+ }
+
+ public boolean areAllItemsEnabled() {
+ return false;
+ }
+
+ public boolean isEnabled(int position) {
+ return !mState.mItems.get(position).mIsProcess;
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View v;
+ if (convertView == null) {
+ v = newView(parent);
+ } else {
+ v = convertView;
+ }
+ bindView(v, position);
+ return v;
+ }
+
+ public View newView(ViewGroup parent) {
+ View v = mInflater.inflate(R.layout.running_services_item, parent, false);
+ ViewHolder h = new ViewHolder();
+ h.separator = (ImageView)v.findViewById(R.id.separator);
+ h.icon = (ImageView)v.findViewById(R.id.icon);
+ h.name = (TextView)v.findViewById(R.id.name);
+ h.description = (TextView)v.findViewById(R.id.description);
+ h.size = (TextView)v.findViewById(R.id.size);
+ v.setTag(h);
+ return v;
+ }
+
+ public void bindView(View view, int position) {
+ ViewHolder vh = (ViewHolder) view.getTag();
+ BaseItem item = mState.mItems.get(position);
+ vh.name.setText(item.mDisplayLabel);
+ vh.separator.setVisibility(item.mNeedDivider
+ ? View.VISIBLE : View.INVISIBLE);
+ ActiveItem ai = new ActiveItem();
+ ai.mRootView = view;
+ ai.mItem = item;
+ ai.mHolder = vh;
+ ai.mFirstRunTime = item.mActiveSince;
+ vh.description.setText(item.mDescription);
+ if (item.mIsProcess) {
+ view.setBackgroundColor(mProcessBgColor);
+ vh.icon.setImageDrawable(null);
+ vh.icon.setVisibility(View.GONE);
+ vh.description.setText(item.mDescription);
+ item.mCurSizeStr = null;
+ } else {
+ view.setBackgroundDrawable(null);
+ vh.icon.setImageDrawable(item.mPackageInfo.loadIcon(getPackageManager()));
+ vh.icon.setVisibility(View.VISIBLE);
+ vh.description.setText(item.mDescription);
+ ai.mFirstRunTime = item.mActiveSince;
+ }
+ ai.updateTime(RunningServices.this);
+ mActiveItems.put(view, ai);
+ }
+ }
+
+ final Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_UPDATE_TIMES:
+ Iterator<ActiveItem> it = mActiveItems.values().iterator();
+ while (it.hasNext()) {
+ ActiveItem ai = it.next();
+ if (ai.mRootView.getWindowToken() == null) {
+ // Clean out any dead views, just in case.
+ it.remove();
+ continue;
+ }
+ ai.updateTime(RunningServices.this);
+ }
+ removeMessages(MSG_UPDATE_TIMES);
+ msg = obtainMessage(MSG_UPDATE_TIMES);
+ sendMessageDelayed(msg, TIME_UPDATE_DELAY);
+ break;
+ case MSG_UPDATE_CONTENTS:
+ updateList();
+ removeMessages(MSG_UPDATE_CONTENTS);
+ msg = obtainMessage(MSG_UPDATE_CONTENTS);
+ sendMessageDelayed(msg, CONTENTS_UPDATE_DELAY);
+ break;
+ }
+ }
+ };
+
+ private boolean matchText(byte[] buffer, int index, String text) {
+ int N = text.length();
+ if ((index+N) >= buffer.length) {
+ return false;
+ }
+ for (int i=0; i<N; i++) {
+ if (buffer[index+i] != text.charAt(i)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private long extractMemValue(byte[] buffer, int index) {
+ while (index < buffer.length && buffer[index] != '\n') {
+ if (buffer[index] >= '0' && buffer[index] <= '9') {
+ int start = index;
+ index++;
+ while (index < buffer.length && buffer[index] >= '0'
+ && buffer[index] <= '9') {
+ index++;
+ }
+ String str = new String(buffer, 0, start, index-start);
+ return ((long)Integer.parseInt(str)) * 1024;
+ }
+ index++;
+ }
+ return 0;
+ }
+
+ private long readAvailMem() {
+ try {
+ long memFree = 0;
+ long memCached = 0;
+ FileInputStream is = new FileInputStream("/proc/meminfo");
+ int len = is.read(mBuffer);
+ is.close();
+ final int BUFLEN = mBuffer.length;
+ for (int i=0; i<len && (memFree == 0 || memCached == 0); i++) {
+ if (matchText(mBuffer, i, "MemFree")) {
+ i += 7;
+ memFree = extractMemValue(mBuffer, i);
+ } else if (matchText(mBuffer, i, "Cached")) {
+ i += 6;
+ memCached = extractMemValue(mBuffer, i);
+ }
+ while (i < BUFLEN && mBuffer[i] != '\n') {
+ i++;
+ }
+ }
+ return memFree + memCached;
+ } catch (java.io.FileNotFoundException e) {
+ } catch (java.io.IOException e) {
+ }
+ return 0;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mAm = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
+ mState = (State)getLastNonConfigurationInstance();
+ if (mState == null) {
+ mState = new State();
+ }
+ mProcessBgColor = 0xff505050;
+ setContentView(R.layout.running_services);
+ getListView().setDivider(null);
+ getListView().setAdapter(new ServiceListAdapter(mState));
+ mBackgroundProcessText = (TextView)findViewById(R.id.backgroundText);
+ mForegroundProcessText = (TextView)findViewById(R.id.foregroundText);
+
+ // Magic! Implementation detail! Don't count on this!
+ SECONDARY_SERVER_MEM =
+ Integer.valueOf(SystemProperties.get("ro.SECONDARY_SERVER_MEM"))*PAGE_SIZE;
+ }
+
+ void updateList() {
+ if (mState.update(this, mAm)) {
+ ((ServiceListAdapter)(getListView().getAdapter())).notifyDataSetChanged();
+ }
+
+ // This is the amount of available memory until we start killing
+ // background services.
+ long availMem = readAvailMem() - SECONDARY_SERVER_MEM;
+ if (availMem < 0) {
+ availMem = 0;
+ }
+
+ if (mLastNumBackgroundProcesses != mState.mNumBackgroundProcesses
+ || mLastBackgroundProcessMemory != mState.mBackgroundProcessMemory
+ || mLastAvailMemory != availMem) {
+ mLastNumBackgroundProcesses = mState.mNumBackgroundProcesses;
+ mLastBackgroundProcessMemory = mState.mBackgroundProcessMemory;
+ mLastAvailMemory = availMem;
+ String availStr = availMem != 0
+ ? Formatter.formatShortFileSize(this, availMem) : "0";
+ String sizeStr = Formatter.formatShortFileSize(this, mLastBackgroundProcessMemory);
+ mBackgroundProcessText.setText(getResources().getString(
+ R.string.service_background_processes,
+ mLastNumBackgroundProcesses, availStr, sizeStr));
+ }
+ if (mLastNumForegroundProcesses != mState.mNumForegroundProcesses
+ || mLastForegroundProcessMemory != mState.mForegroundProcessMemory) {
+ mLastNumForegroundProcesses = mState.mNumForegroundProcesses;
+ mLastForegroundProcessMemory = mState.mForegroundProcessMemory;
+ String sizeStr = Formatter.formatShortFileSize(this, mLastForegroundProcessMemory);
+ mForegroundProcessText.setText(getResources().getString(
+ R.string.service_foreground_processes, mLastNumForegroundProcesses, sizeStr));
+ }
+ }
+
+ @Override
+ protected void onListItemClick(ListView l, View v, int position, long id) {
+ BaseItem bi = (BaseItem)l.getAdapter().getItem(position);
+ if (!bi.mIsProcess) {
+ ServiceItem si = (ServiceItem)bi;
+ if (si.mRunningService.clientLabel != 0) {
+ mCurSelected = null;
+ PendingIntent pi = mAm.getRunningServiceControlPanel(
+ si.mRunningService.service);
+ if (pi != null) {
+ try {
+ this.startIntentSender(pi.getIntentSender(), null,
+ Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,
+ Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET, 0);
+ } catch (IntentSender.SendIntentException e) {
+ Log.w(TAG, e);
+ } catch (IllegalArgumentException e) {
+ Log.w(TAG, e);
+ } catch (ActivityNotFoundException e) {
+ Log.w(TAG, e);
+ }
+ }
+ } else {
+ mCurSelected = bi;
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.confirm_stop_service);
+ String msg = getResources().getString(
+ R.string.confirm_stop_service_msg,
+ si.mPackageInfo.loadLabel(getPackageManager()));
+ builder.setMessage(msg);
+ builder.setPositiveButton(R.string.confirm_stop_stop, this);
+ builder.setNegativeButton(R.string.confirm_stop_cancel, null);
+ builder.setCancelable(true);
+ mCurDialog = builder.show();
+ }
+ } else {
+ mCurSelected = null;
+ }
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ if (mCurSelected != null) {
+ stopService(new Intent().setComponent(
+ ((ServiceItem)mCurSelected).mRunningService.service));
+ updateList();
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mHandler.removeMessages(MSG_UPDATE_TIMES);
+ mHandler.removeMessages(MSG_UPDATE_CONTENTS);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ updateList();
+ mHandler.removeMessages(MSG_UPDATE_TIMES);
+ Message msg = mHandler.obtainMessage(MSG_UPDATE_TIMES);
+ mHandler.sendMessageDelayed(msg, TIME_UPDATE_DELAY);
+ mHandler.removeMessages(MSG_UPDATE_CONTENTS);
+ msg = mHandler.obtainMessage(MSG_UPDATE_CONTENTS);
+ mHandler.sendMessageDelayed(msg, CONTENTS_UPDATE_DELAY);
+ }
+
+ @Override
+ public Object onRetainNonConfigurationInstance() {
+ return mState;
+ }
+
+ public void onMovedToScrapHeap(View view) {
+ mActiveItems.remove(view);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (mCurDialog != null) {
+ mCurDialog.dismiss();
+ }
+ }
+}
diff --git a/src/com/android/settings/SdCardSettings.java b/src/com/android/settings/SdCardSettings.java
index 637babe..67f3550 100644
--- a/src/com/android/settings/SdCardSettings.java
+++ b/src/com/android/settings/SdCardSettings.java
@@ -108,48 +108,41 @@
} catch (RemoteException ex) {
}
- String scanVolume = null; // this no longer exists: SystemProperties.get(MediaScanner.CURRENT_VOLUME_PROPERTY, "");
- boolean scanning = "external".equals(scanVolume);
+ String status = Environment.getExternalStorageState();
+ boolean readOnly = false;
- if (scanning) {
- setLayout(mScanningLayout);
- } else {
- String status = Environment.getExternalStorageState();
- boolean readOnly = false;
+ if (status.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
+ status = Environment.MEDIA_MOUNTED;
+ readOnly = true;
+ }
- if (status.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
- status = Environment.MEDIA_MOUNTED;
- readOnly = true;
+ if (status.equals(Environment.MEDIA_MOUNTED)) {
+ try {
+ File path = Environment.getExternalStorageDirectory();
+ StatFs stat = new StatFs(path.getPath());
+ long blockSize = stat.getBlockSize();
+ long totalBlocks = stat.getBlockCount();
+ long availableBlocks = stat.getAvailableBlocks();
+
+ mTotalSize.setText(formatSize(totalBlocks * blockSize));
+ mUsedSize.setText(formatSize((totalBlocks - availableBlocks) * blockSize));
+ mAvailableSize.setText(formatSize(availableBlocks * blockSize));
+ } catch (IllegalArgumentException e) {
+ // this can occur if the SD card is removed, but we haven't received the
+ // ACTION_MEDIA_REMOVED Intent yet.
+ status = Environment.MEDIA_REMOVED;
}
- if (status.equals(Environment.MEDIA_MOUNTED)) {
- try {
- File path = Environment.getExternalStorageDirectory();
- StatFs stat = new StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long totalBlocks = stat.getBlockCount();
- long availableBlocks = stat.getAvailableBlocks();
-
- mTotalSize.setText(formatSize(totalBlocks * blockSize));
- mUsedSize.setText(formatSize((totalBlocks - availableBlocks) * blockSize));
- mAvailableSize.setText(formatSize(availableBlocks * blockSize));
- } catch (IllegalArgumentException e) {
- // this can occur if the SD card is removed, but we haven't received the
- // ACTION_MEDIA_REMOVED Intent yet.
- status = Environment.MEDIA_REMOVED;
- }
-
- mReadOnlyStatus.setVisibility(readOnly ? View.VISIBLE : View.GONE);
- setLayout(mMountedLayout);
- } else if (status.equals(Environment.MEDIA_UNMOUNTED)) {
- setLayout(mUnmountedLayout);
- } else if (status.equals(Environment.MEDIA_REMOVED)) {
- setLayout(mRemovedLayout);
- } else if (status.equals(Environment.MEDIA_SHARED)) {
- setLayout(mSharedLayout);
- } else if (status.equals(Environment.MEDIA_BAD_REMOVAL)) {
- setLayout(mBadRemovalLayout);
- }
+ mReadOnlyStatus.setVisibility(readOnly ? View.VISIBLE : View.GONE);
+ setLayout(mMountedLayout);
+ } else if (status.equals(Environment.MEDIA_UNMOUNTED)) {
+ setLayout(mUnmountedLayout);
+ } else if (status.equals(Environment.MEDIA_REMOVED)) {
+ setLayout(mRemovedLayout);
+ } else if (status.equals(Environment.MEDIA_SHARED)) {
+ setLayout(mSharedLayout);
+ } else if (status.equals(Environment.MEDIA_BAD_REMOVAL)) {
+ setLayout(mBadRemovalLayout);
}
}
@@ -191,8 +184,6 @@
}
};
-
- private int mStatus;
private IMountService mMountService;
private CheckBox mMassStorage;
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index d9f4952..fcacccc 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -25,6 +25,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor;
import android.location.LocationManager;
@@ -37,8 +38,8 @@
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.provider.Settings;
-import android.security.CertTool;
-import android.security.Keystore;
+import android.security.Credentials;
+import android.security.KeyStore;
import android.text.Html;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
@@ -58,8 +59,7 @@
/**
* Gesture lock pattern settings.
*/
-public class SecuritySettings extends PreferenceActivity implements
- DialogInterface.OnDismissListener, DialogInterface.OnClickListener {
+public class SecuritySettings extends PreferenceActivity {
// Lock Settings
@@ -68,6 +68,9 @@
private static final String KEY_TACTILE_FEEDBACK_ENABLED = "tactilefeedback";
private static final int CONFIRM_PATTERN_THEN_DISABLE_AND_CLEAR_REQUEST_CODE = 55;
+ private static final String PREFS_NAME = "location_prefs";
+ private static final String PREFS_USE_LOCATION = "use_location";
+
private LockPatternUtils mLockPatternUtils;
private CheckBoxPreference mLockEnabled;
private CheckBoxPreference mVisiblePattern;
@@ -80,36 +83,21 @@
private static final String LOCATION_CATEGORY = "location_category";
private static final String LOCATION_NETWORK = "location_network";
private static final String LOCATION_GPS = "location_gps";
+ private static final String ASSISTED_GPS = "assisted_gps";
// Credential storage
- public static final String ACTION_ADD_CREDENTIAL =
- "android.security.ADD_CREDENTIAL";
- public static final String ACTION_UNLOCK_CREDENTIAL_STORAGE =
- "android.security.UNLOCK_CREDENTIAL_STORAGE";
- private static final String KEY_CSTOR_TYPE_NAME = "typeName";
- private static final String KEY_CSTOR_ITEM = "item";
- private static final String KEY_CSTOR_NAMESPACE = "namespace";
- private static final String KEY_CSTOR_DESCRIPTION = "description";
private static final int CSTOR_MIN_PASSWORD_LENGTH = 8;
private static final int CSTOR_INIT_DIALOG = 1;
private static final int CSTOR_CHANGE_PASSWORD_DIALOG = 2;
private static final int CSTOR_UNLOCK_DIALOG = 3;
private static final int CSTOR_RESET_DIALOG = 4;
- private static final int CSTOR_NAME_CREDENTIAL_DIALOG = 5;
- private CstorHelper mCstorHelper = new CstorHelper();
-
- // Vendor specific
- private static final String GSETTINGS_PROVIDER = "com.google.android.providers.settings";
- private static final String USE_LOCATION = "use_location";
- private static final String KEY_DONE_USE_LOCATION = "doneLocation";
- private CheckBoxPreference mUseLocation;
- private boolean mOkClicked;
- private Dialog mUseLocationDialog;
+ private CredentialStorage mCredentialStorage = new CredentialStorage();
private CheckBoxPreference mNetwork;
private CheckBoxPreference mGps;
+ private CheckBoxPreference mAssistedGps;
// These provide support for receiving notification when Location Manager settings change.
// This is necessary because the Network Location Provider can change settings
@@ -132,17 +120,8 @@
mNetwork = (CheckBoxPreference) getPreferenceScreen().findPreference(LOCATION_NETWORK);
mGps = (CheckBoxPreference) getPreferenceScreen().findPreference(LOCATION_GPS);
- mUseLocation = (CheckBoxPreference) getPreferenceScreen().findPreference(USE_LOCATION);
+ mAssistedGps = (CheckBoxPreference) getPreferenceScreen().findPreference(ASSISTED_GPS);
- // Vendor specific
- try {
- if (mUseLocation != null
- && getPackageManager().getPackageInfo(GSETTINGS_PROVIDER, 0) == null) {
- ((PreferenceGroup)findPreference(LOCATION_CATEGORY))
- .removePreference(mUseLocation);
- }
- } catch (NameNotFoundException nnfe) {
- }
updateToggles();
// listen for Location Manager settings changes
@@ -152,14 +131,8 @@
null);
mContentQueryMap = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, null);
mContentQueryMap.addObserver(new SettingsObserver());
- boolean doneUseLocation = savedInstanceState == null
- ? false : savedInstanceState.getBoolean(KEY_DONE_USE_LOCATION, true);
- if (!doneUseLocation && (getIntent().getBooleanExtra("SHOW_USE_LOCATION", false)
- || savedInstanceState != null)) {
- showUseLocationDialog(true);
- }
- mCstorHelper.handleCstorIntents(getIntent());
+ mCredentialStorage.handleIntent(getIntent());
}
private PreferenceScreen createPreferenceHierarchy() {
@@ -171,6 +144,14 @@
inlinePrefCat.setTitle(R.string.lock_settings_title);
root.addPreference(inlinePrefCat);
+ // change pattern lock
+ Intent intent = new Intent();
+ intent.setClassName("com.android.settings",
+ "com.android.settings.ChooseLockPatternTutorial");
+ mChoosePattern = getPreferenceManager().createPreferenceScreen(this);
+ mChoosePattern.setIntent(intent);
+ inlinePrefCat.addPreference(mChoosePattern);
+
// autolock toggle
mLockEnabled = new LockEnabledPref(this);
mLockEnabled.setTitle(R.string.lockpattern_settings_enable_title);
@@ -190,14 +171,6 @@
mTactileFeedback.setTitle(R.string.lockpattern_settings_enable_tactile_feedback_title);
inlinePrefCat.addPreference(mTactileFeedback);
- // change pattern lock
- Intent intent = new Intent();
- intent.setClassName("com.android.settings",
- "com.android.settings.ChooseLockPatternTutorial");
- mChoosePattern = getPreferenceManager().createPreferenceScreen(this);
- mChoosePattern.setIntent(intent);
- inlinePrefCat.addPreference(mChoosePattern);
-
int activePhoneType = TelephonyManager.getDefault().getPhoneType();
// do not display SIM lock for CDMA phone
@@ -230,13 +203,10 @@
passwordsCat.addPreference(showPassword);
// Credential storage
- PreferenceCategory credStoreCat = new PreferenceCategory(this);
- credStoreCat.setTitle(R.string.cstor_settings_category);
- root.addPreference(credStoreCat);
- int s = mCstorHelper.getCstorState();
- credStoreCat.addPreference(mCstorHelper.createAccessCheckBox(s));
- credStoreCat.addPreference(mCstorHelper.createSetPasswordPreference());
- credStoreCat.addPreference(mCstorHelper.createResetPreference(s));
+ PreferenceCategory credentialsCat = new PreferenceCategory(this);
+ credentialsCat.setTitle(R.string.credentials_category);
+ root.addPreference(credentialsCat);
+ mCredentialStorage.createPreferences(credentialsCat);
return root;
}
@@ -259,26 +229,10 @@
R.string.lockpattern_settings_choose_lock_pattern;
mChoosePattern.setTitle(chooseStringRes);
- mShowPassword
- .setChecked(Settings.System.getInt(getContentResolver(),
+ mShowPassword.setChecked(Settings.System.getInt(getContentResolver(),
Settings.System.TEXT_SHOW_PASSWORD, 1) != 0);
- }
- @Override
- public void onStop() {
- if (mUseLocationDialog != null && mUseLocationDialog.isShowing()) {
- mUseLocationDialog.dismiss();
- }
- mUseLocationDialog = null;
- super.onStop();
- }
-
- @Override
- public void onSaveInstanceState(Bundle icicle) {
- if (mUseLocationDialog != null && mUseLocationDialog.isShowing()) {
- icicle.putBoolean(KEY_DONE_USE_LOCATION, false);
- }
- super.onSaveInstanceState(icicle);
+ mCredentialStorage.resume();
}
@Override
@@ -299,15 +253,15 @@
Settings.Secure.setLocationProviderEnabled(getContentResolver(),
LocationManager.NETWORK_PROVIDER, mNetwork.isChecked());
} else if (preference == mGps) {
+ boolean enabled = mGps.isChecked();
Settings.Secure.setLocationProviderEnabled(getContentResolver(),
- LocationManager.GPS_PROVIDER, mGps.isChecked());
- } else if (preference == mUseLocation) {
- //normally called on the toggle click
- if (mUseLocation.isChecked()) {
- showUseLocationDialog(false);
- } else {
- updateUseLocation();
+ LocationManager.GPS_PROVIDER, enabled);
+ if (mAssistedGps != null) {
+ mAssistedGps.setEnabled(enabled);
}
+ } else if (preference == mAssistedGps) {
+ Settings.Secure.putInt(getContentResolver(), Settings.Secure.ASSISTED_GPS_ENABLED,
+ mAssistedGps.isChecked() ? 1 : 0);
}
return false;
@@ -318,49 +272,27 @@
startActivity(intent);
}
- private void showUseLocationDialog(boolean force) {
- // Show a warning to the user that location data will be shared
- mOkClicked = false;
- if (force) {
- mUseLocation.setChecked(true);
- }
-
- CharSequence msg = getResources().getText(R.string.use_location_warning_message);
- mUseLocationDialog = new AlertDialog.Builder(this).setMessage(msg)
- .setTitle(R.string.use_location_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setPositiveButton(R.string.agree, this)
- .setNegativeButton(R.string.disagree, this)
- .show();
- ((TextView)mUseLocationDialog.findViewById(android.R.id.message))
- .setMovementMethod(LinkMovementMethod.getInstance());
- mUseLocationDialog.setOnDismissListener(this);
- }
-
/*
* Creates toggles for each available location provider
*/
private void updateToggles() {
ContentResolver res = getContentResolver();
+ boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(
+ res, LocationManager.GPS_PROVIDER);
mNetwork.setChecked(Settings.Secure.isLocationProviderEnabled(
res, LocationManager.NETWORK_PROVIDER));
- mGps.setChecked(Settings.Secure.isLocationProviderEnabled(
- res, LocationManager.GPS_PROVIDER));
- mUseLocation.setChecked(Settings.Secure.getInt(res,
- Settings.Secure.USE_LOCATION_FOR_SERVICES, 2) == 1);
+ mGps.setChecked(gpsEnabled);
+ if (mAssistedGps != null) {
+ mAssistedGps.setChecked(Settings.Secure.getInt(res,
+ Settings.Secure.ASSISTED_GPS_ENABLED, 2) == 1);
+ mAssistedGps.setEnabled(gpsEnabled);
+ }
}
private boolean isToggled(Preference pref) {
return ((CheckBoxPreference) pref).isChecked();
}
- private void updateUseLocation() {
- boolean use = mUseLocation.isChecked();
- Settings.Secure.putInt(getContentResolver(),
- Settings.Secure.USE_LOCATION_FOR_SERVICES, use ? 1 : 0);
- }
-
-
/**
* For the user to disable keyguard, we first make them verify their
* existing pattern.
@@ -407,631 +339,296 @@
}
}
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- //updateProviders();
- mOkClicked = true;
- } else {
- // Reset the toggle
- mUseLocation.setChecked(false);
- }
- updateUseLocation();
- }
-
- public void onDismiss(DialogInterface dialog) {
- // Assuming that onClick gets called first
- if (!mOkClicked) {
- mUseLocation.setChecked(false);
- }
- }
-
@Override
- protected Dialog onCreateDialog (int id) {
- switch (id) {
- case CSTOR_INIT_DIALOG:
- case CSTOR_CHANGE_PASSWORD_DIALOG:
- return mCstorHelper.createSetPasswordDialog(id);
-
- case CSTOR_UNLOCK_DIALOG:
- return mCstorHelper.createUnlockDialog();
-
- case CSTOR_RESET_DIALOG:
- return mCstorHelper.createResetDialog();
-
- case CSTOR_NAME_CREDENTIAL_DIALOG:
- return mCstorHelper.createNameCredentialDialog();
-
- default:
- return null;
- }
+ protected Dialog onCreateDialog(int id) {
+ return mCredentialStorage.createDialog(id);
}
- private class CstorHelper implements DialogInterface.OnClickListener,
- DialogInterface.OnDismissListener,
- DialogInterface.OnCancelListener {
- private Keystore mKeystore = Keystore.getInstance();
- private View mView;
+ private class CredentialStorage implements DialogInterface.OnClickListener,
+ DialogInterface.OnDismissListener, Preference.OnPreferenceChangeListener,
+ Preference.OnPreferenceClickListener {
+ private static final int MINIMUM_PASSWORD_LENGTH = 8;
+ private static final int UNLOCK_DIALOG = 1;
+ private static final int PASSWORD_DIALOG = 2;
+ private static final int RESET_DIALOG = 3;
+
+ private KeyStore mKeyStore = KeyStore.getInstance();
+ private int mState = mKeyStore.test();
private int mDialogId;
- private boolean mConfirm = true;
+ private boolean mSubmit;
private CheckBoxPreference mAccessCheckBox;
+ private Preference mInstallButton;
+ private Preference mPasswordButton;
private Preference mResetButton;
- private Intent mSpecialIntent;
- private CstorAddCredentialHelper mCstorAddCredentialHelper;
+ private Intent mExternalIntent;
- void handleCstorIntents(Intent intent) {
- if (intent == null) return;
- String action = intent.getAction();
-
- if (ACTION_ADD_CREDENTIAL.equals(action)) {
- mCstorAddCredentialHelper = new CstorAddCredentialHelper(intent);
- showCstorDialog(CSTOR_NAME_CREDENTIAL_DIALOG);
- } else if (ACTION_UNLOCK_CREDENTIAL_STORAGE.equals(action)) {
- mSpecialIntent = intent;
- showCstorDialog(mCstorHelper.isCstorInitialized()
- ? CSTOR_UNLOCK_DIALOG
- : CSTOR_INIT_DIALOG);
- }
- }
-
- private void showCstorDialog(int dialogId) {
- mDialogId = dialogId;
- showDialog(dialogId);
-
- if (dialogId == CSTOR_NAME_CREDENTIAL_DIALOG) {
- // set mView back as mView may be replaced by CSTOR_INIT_DIALOG
- // or CSTOR_UNLOCK_DIALOG
- mView = mCstorAddCredentialHelper.mView;
- }
- }
-
- private int getCstorState() {
- return mKeystore.getState();
- }
-
- private boolean isCstorUnlocked() {
- return (mKeystore.getState() == Keystore.UNLOCKED);
- }
-
- private boolean isCstorInitialized() {
- return (mKeystore.getState() != Keystore.UNINITIALIZED);
- }
-
- private void lockCstor() {
- mKeystore.lock();
- mAccessCheckBox.setChecked(false);
- }
-
- private int unlockCstor(String passwd) {
- int ret = mKeystore.unlock(passwd);
- if (ret == -1) resetCstor();
- if (ret == 0) {
- Toast.makeText(SecuritySettings.this, R.string.cstor_is_enabled,
- Toast.LENGTH_SHORT).show();
- }
- return ret;
- }
-
- private int changeCstorPassword(String oldPasswd, String newPasswd) {
- int ret = mKeystore.changePassword(oldPasswd, newPasswd);
- if (ret == -1) resetCstor();
- return ret;
- }
-
- private void initCstor(String passwd) {
- mKeystore.setPassword(passwd);
- enablePreferences(true);
- mAccessCheckBox.setChecked(true);
- Toast.makeText(SecuritySettings.this, R.string.cstor_is_enabled,
- Toast.LENGTH_SHORT).show();
- }
-
- private void resetCstor() {
- mKeystore.reset();
- enablePreferences(false);
- mAccessCheckBox.setChecked(false);
- Toast.makeText(SecuritySettings.this, R.string.cstor_is_reset,
- Toast.LENGTH_LONG).show();
- }
-
- private boolean addCredential() {
- if (mCstorAddCredentialHelper.saveToStorage() != 0) {
- // set mView back as mView may be replaced by CSTOR_INIT_DIALOG
- // or CSTOR_UNLOCK_DIALOG
- mView = mCstorAddCredentialHelper.mView;
- if (mCstorAddCredentialHelper.isPkcs12Keystore()) {
- showError(R.string.cstor_password_error);
- } else {
- showError(R.string.cstor_storage_error);
+ void handleIntent(Intent intent) {
+ if (intent != null) {
+ if (Credentials.UNLOCK_ACTION.equals(intent.getAction())) {
+ mExternalIntent = intent;
+ showDialog((mState == KeyStore.UNINITIALIZED) ?
+ PASSWORD_DIALOG : UNLOCK_DIALOG);
}
- Log.d("CSTOR", "failed to add credential");
+ }
+ }
+
+ void resume() {
+ mState = mKeyStore.test();
+ updatePreferences(mState);
+ }
+
+ Dialog createDialog(int id) {
+ mDialogId = id;
+ switch (id) {
+ case UNLOCK_DIALOG:
+ return createUnlockDialog();
+ case PASSWORD_DIALOG:
+ return createPasswordDialog();
+ case RESET_DIALOG:
+ return createResetDialog();
+ }
+ return null;
+ }
+
+ private void initialize(String password) {
+ mKeyStore.password(password);
+ updatePreferences(KeyStore.NO_ERROR);
+ }
+
+ private void reset() {
+ mKeyStore.reset();
+ updatePreferences(KeyStore.UNINITIALIZED);
+ }
+
+ private void lock() {
+ mKeyStore.lock();
+ updatePreferences(KeyStore.LOCKED);
+ }
+
+ private int unlock(String password) {
+ mKeyStore.unlock(password);
+ return mKeyStore.getLastError();
+ }
+
+ private int changePassword(String oldPassword, String newPassword) {
+ mKeyStore.password(oldPassword, newPassword);
+ return mKeyStore.getLastError();
+ }
+
+ public boolean onPreferenceChange(Preference preference, Object value) {
+ if (preference == mAccessCheckBox) {
+ if ((Boolean) value) {
+ showDialog((mState == KeyStore.UNINITIALIZED) ?
+ PASSWORD_DIALOG : UNLOCK_DIALOG);
+ } else {
+ lock();
+ }
+ return true;
+ }
+ return false;
+ }
+
+ public boolean onPreferenceClick(Preference preference) {
+ if (preference == mInstallButton) {
+ Credentials.getInstance().installFromSdCard(SecuritySettings.this);
+ } else if (preference == mPasswordButton) {
+ showDialog(PASSWORD_DIALOG);
+ } else if (preference == mResetButton) {
+ showDialog(RESET_DIALOG);
+ } else {
return false;
}
- Log.d("CSTOR", "credential is added: "
- + mCstorAddCredentialHelper.getName());
- String formatString =
- getString(R.string.cstor_is_added);
- String message = String.format(formatString,
- mCstorAddCredentialHelper.getName());
- Toast.makeText(SecuritySettings.this, message,
- Toast.LENGTH_LONG).show();
return true;
}
- public void onCancel(DialogInterface dialog) {
- if (mCstorAddCredentialHelper == null) return;
-
- switch (mDialogId) {
- case CSTOR_INIT_DIALOG:
- case CSTOR_UNLOCK_DIALOG:
- Toast.makeText(SecuritySettings.this,
- R.string.cstor_unable_to_save_cert,
- Toast.LENGTH_LONG).show();
- break;
-
- case CSTOR_NAME_CREDENTIAL_DIALOG:
- Toast.makeText(SecuritySettings.this,
- R.string.cstor_cert_not_saved,
- Toast.LENGTH_LONG).show();
- break;
- }
- mCstorAddCredentialHelper = null;
- finish();
- }
-
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_NEGATIVE) {
- onCancel(dialog);
- return;
- }
-
- switch (mDialogId) {
- case CSTOR_INIT_DIALOG:
- case CSTOR_CHANGE_PASSWORD_DIALOG:
- mConfirm = checkPasswords((Dialog) dialog);
- break;
-
- case CSTOR_UNLOCK_DIALOG:
- mConfirm = checkUnlockPassword((Dialog) dialog);
- break;
-
- case CSTOR_RESET_DIALOG:
- resetCstor();
- break;
-
- case CSTOR_NAME_CREDENTIAL_DIALOG:
- mConfirm = checkAddCredential();
- break;
+ public void onClick(DialogInterface dialog, int button) {
+ mSubmit = (button == DialogInterface.BUTTON_POSITIVE);
+ if (button == DialogInterface.BUTTON_NEUTRAL) {
+ reset();
}
}
public void onDismiss(DialogInterface dialog) {
- if (!mConfirm) {
- mConfirm = true;
- showCstorDialog(mDialogId);
- } else {
- if (mDialogId == CSTOR_UNLOCK_DIALOG) {
- mAccessCheckBox.setChecked(isCstorUnlocked());
- }
-
- if (mCstorAddCredentialHelper != null) {
- if (!isCstorInitialized()) {
- showCstorDialog(CSTOR_INIT_DIALOG);
- } else if (!isCstorUnlocked()) {
- showCstorDialog(CSTOR_UNLOCK_DIALOG);
- } else {
- if (addCredential()) {
- // succeeded
- finish();
- } else {
- // failed
- if (mDialogId != CSTOR_NAME_CREDENTIAL_DIALOG) {
- removeDialog(mDialogId);
- }
- showCstorDialog(CSTOR_NAME_CREDENTIAL_DIALOG);
- }
- }
+ if (mSubmit && !isFinishing()) {
+ mSubmit = false;
+ if (!checkPassword((Dialog) dialog)) {
+ showDialog(mDialogId);
return;
- } else if (mSpecialIntent != null) {
- finish();
}
- removeDialog(mDialogId);
+ }
+ removeDialog(mDialogId);
+ updatePreferences(mState);
+ if (mExternalIntent != null) {
+ mExternalIntent = null;
+ finish();
}
}
- private void showResetWarning(int count) {
- TextView v = showError(count <= 3
- ? R.string.cstor_password_error_reset_warning
- : R.string.cstor_password_error);
- if (count <= 3) {
- if (count == 1) {
- v.setText(R.string.cstor_password_error_reset_warning);
- } else {
- String format = getString(
- R.string.cstor_password_error_reset_warning_plural);
- v.setText(String.format(format, count));
- }
+ // Return true if there is no error.
+ private boolean checkPassword(Dialog dialog) {
+ String oldPassword = getText(dialog, R.id.old_password);
+ String newPassword = getText(dialog, R.id.new_password);
+ String confirmPassword = getText(dialog, R.id.confirm_password);
+
+ if (oldPassword != null && oldPassword.length() == 0) {
+ showError(dialog, R.string.credentials_password_empty);
+ return false;
+ } else if (newPassword == null) {
+ return !checkError(dialog, unlock(oldPassword));
+ } else if (newPassword.length() == 0 || confirmPassword.length() == 0) {
+ showError(dialog, R.string.credentials_passwords_empty);
+ } else if (newPassword.length() < MINIMUM_PASSWORD_LENGTH) {
+ showError(dialog, R.string.credentials_password_too_short);
+ } else if (!newPassword.equals(confirmPassword)) {
+ showError(dialog, R.string.credentials_passwords_mismatch);
+ } else if (oldPassword == null) {
+ initialize(newPassword);
+ return true;
+ } else {
+ return !checkError(dialog, changePassword(oldPassword, newPassword));
}
+ return false;
}
- private boolean checkAddCredential() {
- hideError();
-
- String name = getText(R.id.cstor_credential_name);
- if (TextUtils.isEmpty(name)) {
- showError(R.string.cstor_name_empty_error);
+ // Return false if there is no error.
+ private boolean checkError(Dialog dialog, int error) {
+ if (error == KeyStore.NO_ERROR) {
+ updatePreferences(KeyStore.NO_ERROR);
return false;
}
-
- for (int i = 0, len = name.length(); i < len; i++) {
- if (!Character.isLetterOrDigit(name.charAt(i))) {
- showError(R.string.cstor_name_char_error);
- return false;
- }
+ if (error == KeyStore.UNINITIALIZED) {
+ updatePreferences(KeyStore.UNINITIALIZED);
+ return false;
}
-
- mCstorAddCredentialHelper.setName(name);
-
- if (mCstorAddCredentialHelper.isPkcs12Keystore()) {
- String password = getText(R.id.cstor_credential_password);
- if (TextUtils.isEmpty(password)) {
- showError(R.string.cstor_password_empty_error);
- return false;
- }
-
- mCstorAddCredentialHelper.setPassword(password);
+ if (error < KeyStore.WRONG_PASSWORD) {
+ return false;
}
-
+ int count = error - KeyStore.WRONG_PASSWORD + 1;
+ if (count > 3) {
+ showError(dialog, R.string.credentials_wrong_password);
+ } else if (count == 1) {
+ showError(dialog, R.string.credentials_reset_warning);
+ } else {
+ showError(dialog, R.string.credentials_reset_warning_plural, count);
+ }
return true;
}
- // returns true if the password is long enough and does not contain
- // characters that we don't like
- private boolean verifyPassword(String passwd) {
- if (passwd == null) {
- showError(R.string.cstor_passwords_empty_error);
- return false;
- } else if ((passwd.length() < CSTOR_MIN_PASSWORD_LENGTH)
- || passwd.contains(" ")) {
- showError(R.string.cstor_password_verification_error);
- return false;
- } else {
- return true;
- }
+ private String getText(Dialog dialog, int viewId) {
+ TextView view = (TextView) dialog.findViewById(viewId);
+ return (view == null || view.getVisibility() == View.GONE) ? null :
+ view.getText().toString();
}
- // returns true if the password is ok
- private boolean checkUnlockPassword(Dialog d) {
- hideError();
-
- String passwd = getText(R.id.cstor_password);
- if (TextUtils.isEmpty(passwd)) {
- showError(R.string.cstor_password_empty_error);
- return false;
- }
-
- int count = unlockCstor(passwd);
- if (count > 0) {
- showResetWarning(count);
- return false;
- } else {
- // done or reset
- return true;
- }
- }
-
- // returns true if the passwords are ok
- private boolean checkPasswords(Dialog d) {
- hideError();
-
- String oldPasswd = getText(R.id.cstor_old_password);
- String newPasswd = getText(R.id.cstor_new_password);
- String confirmPasswd = getText(R.id.cstor_confirm_password);
-
- if ((mDialogId == CSTOR_CHANGE_PASSWORD_DIALOG)
- && TextUtils.isEmpty(oldPasswd)) {
- showError(R.string.cstor_password_empty_error);
- return false;
- }
-
- if (TextUtils.isEmpty(newPasswd)
- && TextUtils.isEmpty(confirmPasswd)) {
- showError(R.string.cstor_passwords_empty_error);
- return false;
- }
-
- if (!verifyPassword(newPasswd)) {
- return false;
- } else if (!newPasswd.equals(confirmPasswd)) {
- showError(R.string.cstor_passwords_error);
- return false;
- }
-
- if (mDialogId == CSTOR_CHANGE_PASSWORD_DIALOG) {
- int count = changeCstorPassword(oldPasswd, newPasswd);
- if (count > 0) {
- showResetWarning(count);
- return false;
+ private void showError(Dialog dialog, int stringId, Object... formatArgs) {
+ TextView view = (TextView) dialog.findViewById(R.id.error);
+ if (view != null) {
+ if (formatArgs == null || formatArgs.length == 0) {
+ view.setText(stringId);
} else {
- // done or reset
- return true;
+ view.setText(dialog.getContext().getString(stringId, formatArgs));
}
- } else {
- initCstor(newPasswd);
- return true;
+ view.setVisibility(View.VISIBLE);
}
}
- private TextView showError(int messageId) {
- TextView v = (TextView) mView.findViewById(R.id.cstor_error);
- v.setText(messageId);
- if (v != null) v.setVisibility(View.VISIBLE);
- return v;
+ private void createPreferences(PreferenceCategory category) {
+ mAccessCheckBox = new CheckBoxPreference(SecuritySettings.this);
+ mAccessCheckBox.setTitle(R.string.credentials_access);
+ mAccessCheckBox.setSummary(R.string.credentials_access_summary);
+ mAccessCheckBox.setOnPreferenceChangeListener(this);
+ category.addPreference(mAccessCheckBox);
+
+ mInstallButton = new Preference(SecuritySettings.this);
+ mInstallButton.setTitle(R.string.credentials_install_certificates);
+ mInstallButton.setSummary(R.string.credentials_install_certificates_summary);
+ mInstallButton.setOnPreferenceClickListener(this);
+ category.addPreference(mInstallButton);
+
+ mPasswordButton = new Preference(SecuritySettings.this);
+ mPasswordButton.setTitle(R.string.credentials_set_password);
+ mPasswordButton.setSummary(R.string.credentials_set_password_summary);
+ mPasswordButton.setOnPreferenceClickListener(this);
+ category.addPreference(mPasswordButton);
+
+ mResetButton = new Preference(SecuritySettings.this);
+ mResetButton.setTitle(R.string.credentials_reset);
+ mResetButton.setSummary(R.string.credentials_reset_summary);
+ mResetButton.setOnPreferenceClickListener(this);
+ category.addPreference(mResetButton);
}
- private void hide(int viewId) {
- View v = mView.findViewById(viewId);
- if (v != null) v.setVisibility(View.GONE);
- }
+ private void updatePreferences(int state) {
+ mAccessCheckBox.setEnabled(state != KeyStore.UNINITIALIZED);
+ mAccessCheckBox.setChecked(state == KeyStore.NO_ERROR);
+ mResetButton.setEnabled(state != KeyStore.UNINITIALIZED);
- private void hideError() {
- hide(R.id.cstor_error);
- }
-
- private String getText(int viewId) {
- return ((TextView) mView.findViewById(viewId)).getText().toString();
- }
-
- private void setText(int viewId, String text) {
- TextView v = (TextView) mView.findViewById(viewId);
- if (v != null) v.setText(text);
- }
-
- private void setText(int viewId, int textId) {
- TextView v = (TextView) mView.findViewById(viewId);
- if (v != null) v.setText(textId);
- }
-
- private void enablePreferences(boolean enabled) {
- mAccessCheckBox.setEnabled(enabled);
- mResetButton.setEnabled(enabled);
- }
-
- private Preference createAccessCheckBox(int state) {
- CheckBoxPreference pref = new CheckBoxPreference(
- SecuritySettings.this);
- pref.setTitle(R.string.cstor_access_title);
- pref.setSummary(R.string.cstor_access_summary);
- pref.setEnabled(state != Keystore.UNINITIALIZED);
- pref.setChecked(state == Keystore.UNLOCKED);
- pref.setOnPreferenceChangeListener(
- new Preference.OnPreferenceChangeListener() {
- public boolean onPreferenceChange(
- Preference pref, Object value) {
- if (((Boolean) value)) {
- showCstorDialog(CSTOR_UNLOCK_DIALOG);
- } else {
- lockCstor();
- }
- return true;
- }
- });
- mAccessCheckBox = pref;
- return pref;
- }
-
- private Preference createSetPasswordPreference() {
- Preference pref = new Preference(SecuritySettings.this);
- pref.setTitle(R.string.cstor_set_passwd_title);
- pref.setSummary(R.string.cstor_set_passwd_summary);
- pref.setOnPreferenceClickListener(
- new Preference.OnPreferenceClickListener() {
- public boolean onPreferenceClick(Preference pref) {
- showCstorDialog(isCstorInitialized()
- ? CSTOR_CHANGE_PASSWORD_DIALOG
- : CSTOR_INIT_DIALOG);
- return true;
- }
- });
- return pref;
- }
-
- private Preference createResetPreference(int state) {
- Preference pref = new Preference(SecuritySettings.this);
- pref.setTitle(R.string.cstor_reset_title);
- pref.setSummary(R.string.cstor_reset_summary);
- pref.setOnPreferenceClickListener(
- new Preference.OnPreferenceClickListener() {
- public boolean onPreferenceClick(Preference pref) {
- showCstorDialog(CSTOR_RESET_DIALOG);
- return true;
- }
- });
- pref.setEnabled(state != Keystore.UNINITIALIZED);
- mResetButton = pref;
- return pref;
+ // Show a toast message if the state is changed.
+ if (mState == state) {
+ return;
+ } else if (state == KeyStore.NO_ERROR) {
+ Toast.makeText(SecuritySettings.this, R.string.credentials_enabled,
+ Toast.LENGTH_SHORT).show();
+ } else if (state == KeyStore.UNINITIALIZED) {
+ Toast.makeText(SecuritySettings.this, R.string.credentials_erased,
+ Toast.LENGTH_SHORT).show();
+ } else if (state == KeyStore.LOCKED) {
+ Toast.makeText(SecuritySettings.this, R.string.credentials_disabled,
+ Toast.LENGTH_SHORT).show();
+ }
+ mState = state;
}
private Dialog createUnlockDialog() {
- mView = View.inflate(SecuritySettings.this,
- R.layout.cstor_unlock_dialog_view, null);
- hideError();
+ View view = View.inflate(SecuritySettings.this,
+ R.layout.credentials_unlock_dialog, null);
// show extra hint only when the action comes from outside
- if ((mSpecialIntent == null)
- && (mCstorAddCredentialHelper == null)) {
- hide(R.id.cstor_access_dialog_hint_from_action);
+ if (mExternalIntent != null) {
+ view.findViewById(R.id.hint).setVisibility(View.VISIBLE);
}
- Dialog d = new AlertDialog.Builder(SecuritySettings.this)
- .setView(mView)
- .setTitle(R.string.cstor_access_dialog_title)
+ Dialog dialog = new AlertDialog.Builder(SecuritySettings.this)
+ .setView(view)
+ .setTitle(R.string.credentials_unlock)
.setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, this)
- .setOnCancelListener(this)
.create();
- d.setOnDismissListener(this);
- return d;
+ dialog.setOnDismissListener(this);
+ return dialog;
}
- private Dialog createSetPasswordDialog(int id) {
- mView = View.inflate(SecuritySettings.this,
- R.layout.cstor_set_password_dialog_view, null);
- hideError();
+ private Dialog createPasswordDialog() {
+ View view = View.inflate(SecuritySettings.this,
+ R.layout.credentials_password_dialog, null);
- // show extra hint only when the action comes from outside
- if ((mSpecialIntent != null)
- || (mCstorAddCredentialHelper != null)) {
- setText(R.id.cstor_first_time_hint,
- R.string.cstor_first_time_hint_from_action);
+ if (mState == KeyStore.UNINITIALIZED) {
+ view.findViewById(R.id.hint).setVisibility(View.VISIBLE);
+ } else {
+ view.findViewById(R.id.old_password_prompt).setVisibility(View.VISIBLE);
+ view.findViewById(R.id.old_password).setVisibility(View.VISIBLE);
}
- switch (id) {
- case CSTOR_INIT_DIALOG:
- mView.findViewById(R.id.cstor_old_password_block)
- .setVisibility(View.GONE);
- break;
-
- case CSTOR_CHANGE_PASSWORD_DIALOG:
- mView.findViewById(R.id.cstor_first_time_hint)
- .setVisibility(View.GONE);
- break;
-
- default:
- throw new RuntimeException(
- "Unknown dialog id: " + mDialogId);
- }
-
- Dialog d = new AlertDialog.Builder(SecuritySettings.this)
- .setView(mView)
- .setTitle(R.string.cstor_set_passwd_dialog_title)
+ Dialog dialog = new AlertDialog.Builder(SecuritySettings.this)
+ .setView(view)
+ .setTitle(R.string.credentials_set_password)
.setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, this)
- .setOnCancelListener(this)
.create();
- d.setOnDismissListener(this);
- return d;
+ dialog.setOnDismissListener(this);
+ return dialog;
}
private Dialog createResetDialog() {
return new AlertDialog.Builder(SecuritySettings.this)
.setTitle(android.R.string.dialog_alert_title)
.setIcon(android.R.drawable.ic_dialog_alert)
- .setMessage(R.string.cstor_reset_hint)
- .setPositiveButton(getString(android.R.string.ok), this)
+ .setMessage(R.string.credentials_reset_hint)
+ .setNeutralButton(getString(android.R.string.ok), this)
.setNegativeButton(getString(android.R.string.cancel), this)
.create();
}
-
- private Dialog createNameCredentialDialog() {
- mView = View.inflate(SecuritySettings.this,
- R.layout.cstor_name_credential_dialog_view, null);
- if (mCstorAddCredentialHelper != null) {
- mCstorAddCredentialHelper.mView = mView;
- }
-
- hideError();
- if (!mCstorAddCredentialHelper.isPkcs12Keystore()) {
- hide(R.id.cstor_credential_password_container);
- }
-
- setText(R.id.cstor_credential_name_title,
- R.string.cstor_credential_name);
- setText(R.id.cstor_credential_info_title,
- R.string.cstor_credential_info);
- setText(R.id.cstor_credential_info,
- mCstorAddCredentialHelper.getDescription().toString());
-
- Dialog d = new AlertDialog.Builder(SecuritySettings.this)
- .setView(mView)
- .setTitle(R.string.cstor_name_credential_dialog_title)
- .setPositiveButton(android.R.string.ok, this)
- .setNegativeButton(android.R.string.cancel, this)
- .setOnCancelListener(this)
- .create();
- d.setOnDismissListener(this);
- return d;
- }
- }
-
- private class CstorAddCredentialHelper {
- private String mTypeName;
- private List<byte[]> mItemList;
- private List<String> mNamespaceList;
- private String mDescription;
- private String mName;
- private String mPassword;
- private View mView;
-
- CstorAddCredentialHelper(Intent intent) {
- parse(intent);
- }
-
- String getTypeName() {
- return mTypeName;
- }
-
- boolean isPkcs12Keystore() {
- return CertTool.TITLE_PKCS12_KEYSTORE.equals(mTypeName);
- }
-
- CharSequence getDescription() {
- return Html.fromHtml(mDescription);
- }
-
- void setName(String name) {
- mName = name;
- }
-
- String getName() {
- return mName;
- }
-
- void setPassword(String password) {
- mPassword = password;
- }
-
- String getPassword() {
- return mPassword;
- }
-
- int saveToStorage() {
- if (isPkcs12Keystore()) {
- return CertTool.getInstance().addPkcs12Keystore(
- mItemList.get(0), mPassword, mName);
- } else {
- Keystore ks = Keystore.getInstance();
- for (int i = 0, count = mItemList.size(); i < count; i++) {
- byte[] blob = mItemList.get(i);
- int ret = ks.put(mNamespaceList.get(i), mName,
- new String(blob));
- if (ret != 0) return ret;
- }
- }
- return 0;
- }
-
- private void parse(Intent intent) {
- mTypeName = intent.getStringExtra(KEY_CSTOR_TYPE_NAME);
- mItemList = new ArrayList<byte[]>();
- mNamespaceList = new ArrayList<String>();
- for (int i = 0; ; i++) {
- byte[] blob = intent.getByteArrayExtra(KEY_CSTOR_ITEM + i);
- if (blob == null) break;
- mItemList.add(blob);
- mNamespaceList.add(intent.getStringExtra(
- KEY_CSTOR_NAMESPACE + i));
- }
-
- // build description string
- StringBuilder sb = new StringBuilder();
- for (int i = 0; ; i++) {
- String s = intent.getStringExtra(KEY_CSTOR_DESCRIPTION + i);
- if (s == null) break;
- sb.append(s).append("<br>");
- }
- mDescription = sb.toString();
- }
}
}
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 4f888ff..c0a8613 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -20,6 +20,7 @@
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import android.provider.Settings.System;
+import android.telephony.TelephonyManager;
public class Settings extends PreferenceActivity {
@@ -34,6 +35,8 @@
addPreferencesFromResource(R.xml.settings);
+ int activePhoneType = TelephonyManager.getDefault().getPhoneType();
+
PreferenceGroup parent = (PreferenceGroup) findPreference(KEY_PARENT);
Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SYNC_SETTINGS, 0);
Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SEARCH_SETTINGS, 0);
diff --git a/src/com/android/settings/SettingsSafetyLegalActivity.java b/src/com/android/settings/SettingsSafetyLegalActivity.java
new file mode 100644
index 0000000..619dc94
--- /dev/null
+++ b/src/com/android/settings/SettingsSafetyLegalActivity.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.SystemProperties;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import com.android.internal.app.AlertActivity;
+import com.android.internal.app.AlertController;
+import android.content.DialogInterface;
+
+/**
+ * The "dialog" that shows from "Safety information" in the Settings app.
+ */
+public class SettingsSafetyLegalActivity extends AlertActivity
+ implements DialogInterface.OnCancelListener, DialogInterface.OnClickListener {
+ private static final String PROPERTY_LSAFETYLEGAL_URL = "ro.url.safetylegal";
+
+ private WebView mWebView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ String userSafetylegalUrl = SystemProperties.get(PROPERTY_LSAFETYLEGAL_URL);
+
+ final Configuration configuration = getResources().getConfiguration();
+ final String language = configuration.locale.getLanguage();
+ final String country = configuration.locale.getCountry();
+
+ String loc = String.format("locale=%s-%s", language, country);
+
+ userSafetylegalUrl = String.format("%s&%s", userSafetylegalUrl, loc);
+
+ mWebView = new WebView(this);
+
+ // Begin accessing
+ mWebView.getSettings().setJavaScriptEnabled(true);
+ mWebView.loadUrl(userSafetylegalUrl);
+ mWebView.setWebViewClient(new WebViewClient() {
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ // Change from 'Loading...' to the real title
+ mAlert.setTitle(getString(R.string.settings_safetylegal_activity_title));
+ }
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode,
+ String description, String failingUrl) {
+ showErrorAndFinish(failingUrl);
+ }
+ });
+
+ final AlertController.AlertParams p = mAlertParams;
+ p.mTitle = getString(R.string.settings_safetylegal_activity_loading);
+ p.mView = mWebView;
+ p.mForceInverseBackground = true;
+ setupAlert();
+ }
+
+ private void showErrorAndFinish(String url) {
+ new AlertDialog.Builder(this)
+ .setMessage(getResources()
+ .getString(R.string.settings_safetylegal_activity_unreachable, url))
+ .setTitle(R.string.settings_safetylegal_activity_title)
+ .setPositiveButton(android.R.string.ok, this)
+ .setOnCancelListener(this)
+ .setCancelable(true)
+ .show();
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
+ && event.getAction() == KeyEvent.ACTION_DOWN) {
+ if (mWebView.canGoBack()) {
+ mWebView.goBack();
+ return true;
+ }
+ }
+ return super.dispatchKeyEvent(event);
+ }
+
+ public void onClick(DialogInterface dialog, int whichButton) {
+ finish();
+ }
+
+ public void onCancel(DialogInterface dialog) {
+ finish();
+ }
+}
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index 4417f24..92297de 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -52,6 +52,7 @@
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
private static final String KEY_DTMF_TONE = "dtmf_tone";
private static final String KEY_SOUND_EFFECTS = "sound_effects";
+ private static final String KEY_HAPTIC_FEEDBACK = "haptic_feedback";
private static final String KEY_ANIMATIONS = "animations";
private static final String KEY_ACCELEROMETER = "accelerometer";
private static final String KEY_PLAY_MEDIA_NOTIFICATION_SOUNDS = "play_media_notification_sounds";
@@ -73,7 +74,8 @@
private CheckBoxPreference mVibrate;
private CheckBoxPreference mDtmfTone;
private CheckBoxPreference mSoundEffects;
- private CheckBoxPreference mAnimations;
+ private CheckBoxPreference mHapticFeedback;
+ private ListPreference mAnimations;
private CheckBoxPreference mAccelerometer;
private float[] mAnimationScales;
@@ -118,8 +120,12 @@
mSoundEffects.setPersistent(false);
mSoundEffects.setChecked(Settings.System.getInt(resolver,
Settings.System.SOUND_EFFECTS_ENABLED, 0) != 0);
- mAnimations = (CheckBoxPreference) findPreference(KEY_ANIMATIONS);
- mAnimations.setPersistent(false);
+ mHapticFeedback = (CheckBoxPreference) findPreference(KEY_HAPTIC_FEEDBACK);
+ mHapticFeedback.setPersistent(false);
+ mHapticFeedback.setChecked(Settings.System.getInt(resolver,
+ Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) != 0);
+ mAnimations = (ListPreference) findPreference(KEY_ANIMATIONS);
+ mAnimations.setOnPreferenceChangeListener(this);
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
@@ -187,29 +193,49 @@
R.string.silent_mode_incl_alarm_summary :
R.string.silent_mode_summary);
- boolean animations = true;
+ int animations = 0;
try {
mAnimationScales = mWindowManager.getAnimationScales();
} catch (RemoteException e) {
}
if (mAnimationScales != null) {
- // We will leave the window animations alone (always set),
- // and only use this to change the transition animations.
- for (int i=1; i<mAnimationScales.length; i++) {
- if (mAnimationScales[i] == 0) {
- animations = false;
- break;
- }
+ if (mAnimationScales.length >= 1) {
+ animations = ((int)(mAnimationScales[0]+.5f)) % 10;
+ }
+ if (mAnimationScales.length >= 2) {
+ animations += (((int)(mAnimationScales[1]+.5f)) & 0x7) * 10;
}
}
- if (animations != mAnimations.isChecked() || force) {
- mAnimations.setChecked(animations);
+ int idx = 0;
+ int best = 0;
+ CharSequence[] aents = mAnimations.getEntryValues();
+ for (int i=0; i<aents.length; i++) {
+ int val = Integer.parseInt(aents[i].toString());
+ if (val <= animations && val > best) {
+ best = val;
+ idx = i;
+ }
}
+ mAnimations.setValueIndex(idx);
+ updateAnimationsSummary(mAnimations.getValue());
mAccelerometer.setChecked(Settings.System.getInt(
getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
}
+ private void updateAnimationsSummary(Object value) {
+ CharSequence[] summaries = getResources().getTextArray(R.array.animations_summaries);
+ CharSequence[] values = mAnimations.getEntryValues();
+ for (int i=0; i<values.length; i++) {
+ //Log.i("foo", "Comparing entry "+ values[i] + " to current "
+ // + mAnimations.getValue());
+ if (values[i].equals(value)) {
+ mAnimations.setSummary(summaries[i]);
+ break;
+ }
+ }
+ }
+
private void setRingerMode(boolean silent, boolean vibrate) {
if (silent) {
mAudioManager.setRingerMode(vibrate ? AudioManager.RINGER_MODE_VIBRATE :
@@ -224,7 +250,6 @@
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-
if (preference == mSilent || preference == mVibrate) {
setRingerMode(mSilent.isChecked(), mVibrate.isChecked());
if (preference == mSilent) updateState(false);
@@ -245,19 +270,10 @@
}
Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED,
mSoundEffects.isChecked() ? 1 : 0);
-
- } else if (preference == mAnimations) {
- if (mAnimationScales.length > 0) {
- // Window animations are always on.
- mAnimationScales[0] = 1;
- }
- for (int i=1; i<mAnimationScales.length; i++) {
- mAnimationScales[i] = mAnimations.isChecked() ? 1 : 0;
- }
- try {
- mWindowManager.setAnimationScales(mAnimationScales);
- } catch (RemoteException e) {
- }
+
+ } else if (preference == mHapticFeedback) {
+ Settings.System.putInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED,
+ mHapticFeedback.isChecked() ? 1 : 0);
} else if (preference == mAccelerometer) {
Settings.System.putInt(getContentResolver(),
@@ -268,6 +284,25 @@
}
public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (KEY_ANIMATIONS.equals(preference.getKey())) {
+ try {
+ int value = Integer.parseInt((String) objValue);
+ if (mAnimationScales.length >= 1) {
+ mAnimationScales[0] = value%10;
+ }
+ if (mAnimationScales.length >= 2) {
+ mAnimationScales[1] = (value/10)%10;
+ }
+ try {
+ mWindowManager.setAnimationScales(mAnimationScales);
+ } catch (RemoteException e) {
+ }
+ updateAnimationsSummary(objValue);
+ } catch (NumberFormatException e) {
+ Log.e(TAG, "could not persist animation setting", e);
+ }
+
+ }
if (KEY_SCREEN_TIMEOUT.equals(preference.getKey())) {
int value = Integer.parseInt((String) objValue);
try {
diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index d3d59fa..f60d0f2 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -55,6 +55,10 @@
private static final String KEY_TTS_DEFAULT_LANG = "tts_default_lang";
private static final String KEY_TTS_DEFAULT_COUNTRY = "tts_default_country";
private static final String KEY_TTS_DEFAULT_VARIANT = "tts_default_variant";
+ // TODO move default Locale values to TextToSpeech.Engine
+ private static final String DEFAULT_LANG_VAL = "eng";
+ private static final String DEFAULT_COUNTRY_VAL = "USA";
+ private static final String DEFAULT_VARIANT_VAL = "";
private static final String LOCALE_DELIMITER = "-";
@@ -70,6 +74,12 @@
private String mDefaultCountry = null;
private String mDefaultLocVariant = null;
private String mDefaultEng = "";
+ private int mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;
+
+ // Array of strings used to demonstrate TTS in the different languages.
+ private String[] mDemoStrings;
+ // Index of the current string to use for the demo.
+ private int mDemoStringIndex = 0;
private boolean mEnableDemo = false;
@@ -80,11 +90,6 @@
* startActivityForResult.
*/
private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
- /**
- * Request code (arbitrary value) for voice data installation through
- * startActivityForResult.
- */
- private static final int VOICE_DATA_INSTALLATION = 1980;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -92,6 +97,8 @@
addPreferencesFromResource(R.xml.tts_settings);
+ mDemoStrings = getResources().getStringArray(R.array.tts_demo_strings);
+
setVolumeControlStream(TextToSpeech.Engine.DEFAULT_STREAM);
mEnableDemo = false;
@@ -132,21 +139,21 @@
private void initDefaultSettings() {
ContentResolver resolver = getContentResolver();
- int intVal = 0;
// Find the default TTS values in the settings, initialize and store the
// settings if they are not found.
// "Use Defaults"
+ int useDefault = 0;
mUseDefaultPref = (CheckBoxPreference) findPreference(KEY_TTS_USE_DEFAULT);
try {
- intVal = Settings.Secure.getInt(resolver, TTS_USE_DEFAULTS);
+ useDefault = Settings.Secure.getInt(resolver, TTS_USE_DEFAULTS);
} catch (SettingNotFoundException e) {
// "use default" setting not found, initialize it
- intVal = TextToSpeech.Engine.USE_DEFAULTS;
- Settings.Secure.putInt(resolver, TTS_USE_DEFAULTS, intVal);
+ useDefault = TextToSpeech.Engine.USE_DEFAULTS;
+ Settings.Secure.putInt(resolver, TTS_USE_DEFAULTS, useDefault);
}
- mUseDefaultPref.setChecked(intVal == 1);
+ mUseDefaultPref.setChecked(useDefault == 1);
mUseDefaultPref.setOnPreferenceChangeListener(this);
// Default engine
@@ -161,59 +168,19 @@
// Default rate
mDefaultRatePref = (ListPreference) findPreference(KEY_TTS_DEFAULT_RATE);
try {
- intVal = Settings.Secure.getInt(resolver, TTS_DEFAULT_RATE);
+ mDefaultRate = Settings.Secure.getInt(resolver, TTS_DEFAULT_RATE);
} catch (SettingNotFoundException e) {
// default rate setting not found, initialize it
- intVal = TextToSpeech.Engine.DEFAULT_RATE;
- Settings.Secure.putInt(resolver, TTS_DEFAULT_RATE, intVal);
+ mDefaultRate = TextToSpeech.Engine.DEFAULT_RATE;
+ Settings.Secure.putInt(resolver, TTS_DEFAULT_RATE, mDefaultRate);
}
- mDefaultRatePref.setValue(String.valueOf(intVal));
+ mDefaultRatePref.setValue(String.valueOf(mDefaultRate));
mDefaultRatePref.setOnPreferenceChangeListener(this);
// Default language / country / variant : these three values map to a single ListPref
// representing the matching Locale
- String language = null;
- String country = null;
- String variant = null;
mDefaultLocPref = (ListPreference) findPreference(KEY_TTS_DEFAULT_LANG);
- language = Settings.Secure.getString(resolver, TTS_DEFAULT_LANG);
- if (language == null) {
- // the default language property isn't set, use that of the current locale
- Locale currentLocale = Locale.getDefault();
- language = currentLocale.getISO3Language();
- country = currentLocale.getISO3Country();
- variant = currentLocale.getVariant();
- Settings.Secure.putString(resolver, TTS_DEFAULT_LANG, language);
- Settings.Secure.putString(resolver, TTS_DEFAULT_COUNTRY, country);
- Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, variant);
- }
- mDefaultLanguage = language;
- if (country == null) {
- // country wasn't initialized yet because a default language was found
- country = Settings.Secure.getString(resolver, KEY_TTS_DEFAULT_COUNTRY);
- if (country == null) {
- // default country setting not found, initialize it, as well as the variant;
- Locale currentLocale = Locale.getDefault();
- country = currentLocale.getISO3Country();
- variant = currentLocale.getVariant();
- Settings.Secure.putString(resolver, TTS_DEFAULT_COUNTRY, country);
- Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, variant);
- }
- }
- mDefaultCountry = country;
- if (variant == null) {
- // variant wasn't initialized yet because a default country was found
- variant = Settings.Secure.getString(resolver, KEY_TTS_DEFAULT_VARIANT);
- if (variant == null) {
- // default variant setting not found, initialize it
- Locale currentLocale = Locale.getDefault();
- variant = currentLocale.getVariant();
- Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, variant);
- }
- }
- mDefaultLocVariant = variant;
-
- setDefaultLocalePref(language, country, variant);
+ initDefaultLang();
mDefaultLocPref.setOnPreferenceChangeListener(this);
}
@@ -246,13 +213,14 @@
PackageManager pm = getPackageManager();
Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
// query only the package that matches that of the default engine
for (int i = 0; i < resolveInfos.size(); i++) {
ActivityInfo currentActivityInfo = resolveInfos.get(i).activityInfo;
if (mDefaultEng.equals(currentActivityInfo.packageName)) {
intent.setClassName(mDefaultEng, currentActivityInfo.name);
- this.startActivityForResult(intent, VOICE_DATA_INSTALLATION);
+ this.startActivity(intent);
}
}
}
@@ -265,6 +233,8 @@
if (status == TextToSpeech.SUCCESS) {
Log.v(TAG, "TTS engine for settings screen initialized.");
mEnableDemo = true;
+ mTts.setLanguage(new Locale(mDefaultLanguage, mDefaultCountry));
+ mTts.setSpeechRate((float)(mDefaultRate/100.0f));
} else {
Log.v(TAG, "TTS engine for settings screen failed to initialize successfully.");
mEnableDemo = false;
@@ -282,7 +252,6 @@
Log.v(TAG, "Voice data check passed");
if (mTts == null) {
mTts = new TextToSpeech(this, this);
- mTts.setLanguage(Locale.getDefault());
}
} else {
Log.v(TAG, "Voice data check failed");
@@ -302,14 +271,14 @@
Log.i(TAG, "TTS use default settings is "+objValue.toString());
} else if (KEY_TTS_DEFAULT_RATE.equals(preference.getKey())) {
// Default rate
- int value = Integer.parseInt((String) objValue);
+ mDefaultRate = Integer.parseInt((String) objValue);
try {
Settings.Secure.putInt(getContentResolver(),
- TTS_DEFAULT_RATE, value);
+ TTS_DEFAULT_RATE, mDefaultRate);
if (mTts != null) {
- mTts.setSpeechRate((float)(value/100.0f));
+ mTts.setSpeechRate((float)(mDefaultRate/100.0f));
}
- Log.i(TAG, "TTS default rate is "+value);
+ Log.i(TAG, "TTS default rate is " + mDefaultRate);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist default TTS rate setting", e);
}
@@ -325,6 +294,9 @@
if (mTts != null) {
mTts.setLanguage(new Locale(mDefaultLanguage, mDefaultCountry));
}
+ int newIndex = mDefaultLocPref.findIndexOfValue((String)objValue);
+ Log.v("Settings", " selected is " + newIndex);
+ mDemoStringIndex = newIndex > -1 ? newIndex : 0;
}
return true;
@@ -338,8 +310,7 @@
if (preference == mPlayExample) {
// Play example
if (mTts != null) {
- mTts.speak(getResources().getString(R.string.tts_demo),
- TextToSpeech.QUEUE_FLUSH, null);
+ mTts.speak(mDemoStrings[mDemoStringIndex], TextToSpeech.QUEUE_FLUSH, null);
}
return true;
}
@@ -380,25 +351,77 @@
}
- private void setDefaultLocalePref(String language, String country, String variant) {
- // build a string from the default lang/country/variant trio,
- String localeString = new String(language);
- if (country.compareTo("") != 0) {
- localeString += LOCALE_DELIMITER + country;
- } else {
- localeString += LOCALE_DELIMITER + " ";
- }
- if (variant.compareTo("") != 0) {
- localeString += LOCALE_DELIMITER + variant;
+ /**
+ * Initialize the default language in the UI and in the preferences.
+ * After this method has been invoked, the default language is a supported Locale.
+ */
+ private void initDefaultLang() {
+ // if there isn't already a default language preference
+ if (!hasLangPref()) {
+ // if the current Locale is supported
+ if (isCurrentLocSupported()) {
+ // then use the current Locale as the default language
+ useCurrentLocAsDefault();
+ } else {
+ // otherwise use a default supported Locale as the default language
+ useSupportedLocAsDefault();
+ }
}
- if (mDefaultLocPref.findIndexOfValue(localeString) > -1) {
- mDefaultLocPref.setValue(localeString);
- } else {
- mDefaultLocPref.setValueIndex(0);
- }
+ // Update the language preference list with the default language and the matching
+ // demo string (at this stage there is a default language pref)
+ ContentResolver resolver = getContentResolver();
+ mDefaultLanguage = Settings.Secure.getString(resolver, TTS_DEFAULT_LANG);
+ mDefaultCountry = Settings.Secure.getString(resolver, KEY_TTS_DEFAULT_COUNTRY);
+ mDefaultLocVariant = Settings.Secure.getString(resolver, KEY_TTS_DEFAULT_VARIANT);
- Log.v(TAG, "In initDefaultSettings: localeString=" + localeString);
+ // update the demo string
+ mDemoStringIndex = mDefaultLocPref.findIndexOfValue(mDefaultLanguage + LOCALE_DELIMITER
+ + mDefaultCountry);
+ mDefaultLocPref.setValueIndex(mDemoStringIndex);
+ }
+
+ /**
+ * (helper function for initDefaultLang() )
+ * Returns whether there is a default language in the TTS settings.
+ */
+ private boolean hasLangPref() {
+ String language = Settings.Secure.getString(getContentResolver(), TTS_DEFAULT_LANG);
+ return (language != null);
+ }
+
+ /**
+ * (helper function for initDefaultLang() )
+ * Returns whether the current Locale is supported by this Settings screen
+ */
+ private boolean isCurrentLocSupported() {
+ String currentLocID = Locale.getDefault().getISO3Language() + LOCALE_DELIMITER
+ + Locale.getDefault().getISO3Country();
+ return (mDefaultLocPref.findIndexOfValue(currentLocID) > -1);
+ }
+
+ /**
+ * (helper function for initDefaultLang() )
+ * Sets the default language in TTS settings to be the current Locale.
+ * This should only be used after checking that the current Locale is supported.
+ */
+ private void useCurrentLocAsDefault() {
+ Locale currentLocale = Locale.getDefault();
+ ContentResolver resolver = getContentResolver();
+ Settings.Secure.putString(resolver, TTS_DEFAULT_LANG, currentLocale.getISO3Language());
+ Settings.Secure.putString(resolver, TTS_DEFAULT_COUNTRY, currentLocale.getISO3Country());
+ Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, currentLocale.getVariant());
+ }
+
+ /**
+ * (helper function for initDefaultLang() )
+ * Sets the default language in TTS settings to be one known to be supported
+ */
+ private void useSupportedLocAsDefault() {
+ ContentResolver resolver = getContentResolver();
+ Settings.Secure.putString(resolver, TTS_DEFAULT_LANG, DEFAULT_LANG_VAL);
+ Settings.Secure.putString(resolver, TTS_DEFAULT_COUNTRY, DEFAULT_COUNTRY_VAL);
+ Settings.Secure.putString(resolver, TTS_DEFAULT_VARIANT, DEFAULT_VARIANT_VAL);
}
}
diff --git a/src/com/android/settings/UsageStats.java b/src/com/android/settings/UsageStats.java
index 89caa54..fcb6990 100755
--- a/src/com/android/settings/UsageStats.java
+++ b/src/com/android/settings/UsageStats.java
@@ -187,7 +187,7 @@
holder.launchCount.setText(String.valueOf(pkgStats.launchCount));
holder.usageTime.setText(String.valueOf(pkgStats.usageTime)+" ms");
} else {
- Log.w(TAG, "No usage stats info for package:"+pkgStats.packageName);
+ Log.w(TAG, "No usage stats info for package:" + position);
}
return convertView;
}
diff --git a/src/com/android/settings/UserDictionarySettings.java b/src/com/android/settings/UserDictionarySettings.java
index ef22ee1..4b30b53 100644
--- a/src/com/android/settings/UserDictionarySettings.java
+++ b/src/com/android/settings/UserDictionarySettings.java
@@ -29,6 +29,7 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AlphabetIndexer;
import android.widget.EditText;
@@ -195,7 +196,7 @@
return mCursor.getString(
mCursor.getColumnIndexOrThrow(UserDictionary.Words.WORD));
}
-
+
@Override
protected Dialog onCreateDialog(int id) {
View content = getLayoutInflater().inflate(R.layout.dialog_edittext, null);
@@ -204,7 +205,7 @@
editText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
- return new AlertDialog.Builder(this)
+ AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(mDialogEditingWord != null
? R.string.user_dict_settings_edit_dialog_title
: R.string.user_dict_settings_add_dialog_title)
@@ -219,7 +220,11 @@
if (mAutoReturn) finish();
}})
.create();
+ dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
+ WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
+ return dialog;
}
+
@Override
protected void onPrepareDialog(int id, Dialog d) {
AlertDialog dialog = (AlertDialog) d;
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index d112915..68ec653 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -19,20 +19,56 @@
import com.android.settings.bluetooth.BluetoothEnabler;
import com.android.settings.wifi.WifiEnabler;
+import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Bundle;
-import android.preference.PreferenceActivity;
+import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.preference.PreferenceActivity;
+import android.provider.Settings;
+
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.telephony.TelephonyProperties;
public class WirelessSettings extends PreferenceActivity {
private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
private static final String KEY_TOGGLE_BLUETOOTH = "toggle_bluetooth";
private static final String KEY_TOGGLE_WIFI = "toggle_wifi";
+ private static final String KEY_WIFI_SETTINGS = "wifi_settings";
+ private static final String KEY_VPN_SETTINGS = "vpn_settings";
+ public static final String EXIT_ECM_RESULT = "exit_ecm_result";
+ public static final int REQUEST_CODE_EXIT_ECM = 1;
private WifiEnabler mWifiEnabler;
private AirplaneModeEnabler mAirplaneModeEnabler;
private BluetoothEnabler mBtEnabler;
+ private CheckBoxPreference mAirplaneModePreference;
+
+ /**
+ * Invoked on each preference click in this hierarchy, overrides
+ * PreferenceActivity's implementation. Used to make sure we track the
+ * preference click events.
+ */
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ if ( (preference == mAirplaneModePreference) &&
+ (Boolean.parseBoolean(
+ SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) ) {
+ // In ECM mode launch ECM app dialog
+ startActivityForResult(
+ new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
+ REQUEST_CODE_EXIT_ECM);
+
+ return true;
+ }
+ else {
+ // Let the intents be launched by the Preference manager
+ return false;
+ }
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -41,6 +77,7 @@
addPreferencesFromResource(R.xml.wireless_settings);
initToggles();
+ mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
}
@Override
@@ -48,8 +85,8 @@
super.onResume();
mWifiEnabler.resume();
- mAirplaneModeEnabler.resume();
mBtEnabler.resume();
+ mAirplaneModeEnabler.resume();
}
@Override
@@ -63,18 +100,43 @@
private void initToggles() {
+ Preference airplanePreference = findPreference(KEY_TOGGLE_AIRPLANE);
+ Preference wifiPreference = findPreference(KEY_TOGGLE_WIFI);
+ Preference btPreference = findPreference(KEY_TOGGLE_BLUETOOTH);
+ Preference wifiSettings = findPreference(KEY_WIFI_SETTINGS);
+ Preference vpnSettings = findPreference(KEY_VPN_SETTINGS);
+
mWifiEnabler = new WifiEnabler(
- this,
- (WifiManager) getSystemService(WIFI_SERVICE),
- (CheckBoxPreference) findPreference(KEY_TOGGLE_WIFI));
-
+ this, (WifiManager) getSystemService(WIFI_SERVICE),
+ (CheckBoxPreference) wifiPreference);
mAirplaneModeEnabler = new AirplaneModeEnabler(
- this,
- (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE));
-
- mBtEnabler = new BluetoothEnabler(
- this,
- (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH));
+ this, (CheckBoxPreference) airplanePreference);
+ mBtEnabler = new BluetoothEnabler(this, (CheckBoxPreference) btPreference);
+
+ // manually set up dependencies for Wifi if its radio is not toggleable in airplane mode
+ String toggleableRadios = Settings.System.getString(getContentResolver(),
+ Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+ if (toggleableRadios == null || !toggleableRadios.contains(Settings.System.RADIO_WIFI)) {
+ wifiPreference.setDependency(airplanePreference.getKey());
+ wifiSettings.setDependency(airplanePreference.getKey());
+ vpnSettings.setDependency(airplanePreference.getKey());
+ }
}
-
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch(requestCode) {
+ case REQUEST_CODE_EXIT_ECM:
+ Boolean isChoiceYes =
+ data.getBooleanExtra(EXIT_ECM_RESULT, false);
+ // Set Airplane mode based on the return value and checkbox state
+ mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes,
+ mAirplaneModePreference.isChecked());
+ break;
+
+ default:
+ break;
+ }
+ }
+
}
diff --git a/src/com/android/settings/ZoneList.java b/src/com/android/settings/ZoneList.java
index 2877f00..aaaf989 100644
--- a/src/com/android/settings/ZoneList.java
+++ b/src/com/android/settings/ZoneList.java
@@ -160,7 +160,7 @@
try {
XmlResourceParser xrp = getResources().getXml(R.xml.timezones);
while (xrp.next() != XmlResourceParser.START_TAG)
- ;
+ continue;
xrp.next();
while (xrp.getEventType() != XmlResourceParser.END_TAG) {
while (xrp.getEventType() != XmlResourceParser.START_TAG) {
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
index 7053ff5..5b0218f 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
@@ -28,20 +28,20 @@
* BluetoothDevicePreference is the preference type used to display each remote
* Bluetooth device in the Bluetooth Settings screen.
*/
-public class BluetoothDevicePreference extends Preference implements LocalBluetoothDevice.Callback {
+public class BluetoothDevicePreference extends Preference implements CachedBluetoothDevice.Callback {
private static final String TAG = "BluetoothDevicePreference";
private static int sDimAlpha = Integer.MIN_VALUE;
-
- private LocalBluetoothDevice mLocalDevice;
-
+
+ private CachedBluetoothDevice mCachedDevice;
+
/**
* Cached local copy of whether the device is busy. This is only updated
- * from {@link #onDeviceAttributesChanged(LocalBluetoothDevice)}.
- */
+ * from {@link #onDeviceAttributesChanged(CachedBluetoothDevice)}.
+ */
private boolean mIsBusy;
-
- public BluetoothDevicePreference(Context context, LocalBluetoothDevice localDevice) {
+
+ public BluetoothDevicePreference(Context context, CachedBluetoothDevice cachedDevice) {
super(context);
if (sDimAlpha == Integer.MIN_VALUE) {
@@ -49,67 +49,71 @@
context.getTheme().resolveAttribute(android.R.attr.disabledAlpha, outValue, true);
sDimAlpha = (int) (outValue.getFloat() * 255);
}
-
- mLocalDevice = localDevice;
-
+
+ mCachedDevice = cachedDevice;
+
setLayoutResource(R.layout.preference_bluetooth);
-
- localDevice.registerCallback(this);
-
- onDeviceAttributesChanged(localDevice);
+
+ cachedDevice.registerCallback(this);
+
+ onDeviceAttributesChanged(cachedDevice);
}
-
- public LocalBluetoothDevice getDevice() {
- return mLocalDevice;
+
+ public CachedBluetoothDevice getCachedDevice() {
+ return mCachedDevice;
}
@Override
protected void onPrepareForRemoval() {
super.onPrepareForRemoval();
- mLocalDevice.unregisterCallback(this);
+ mCachedDevice.unregisterCallback(this);
}
- public void onDeviceAttributesChanged(LocalBluetoothDevice device) {
+ public void onDeviceAttributesChanged(CachedBluetoothDevice cachedDevice) {
/*
* The preference framework takes care of making sure the value has
* changed before proceeding.
*/
-
- setTitle(mLocalDevice.getName());
-
+
+ setTitle(mCachedDevice.getName());
+
/*
* TODO: Showed "Paired" even though it was "Connected". This may be
* related to BluetoothHeadset not bound to the actual
* BluetoothHeadsetService when we got here.
*/
- setSummary(mLocalDevice.getSummary());
+ setSummary(mCachedDevice.getSummary());
// Used to gray out the item
- mIsBusy = mLocalDevice.isBusy();
-
+ mIsBusy = mCachedDevice.isBusy();
+
// Data has changed
notifyChanged();
-
+
// This could affect ordering, so notify that also
notifyHierarchyChanged();
}
@Override
public boolean isEnabled() {
+ // Temp fix until we have 2053751 fixed in the framework
+ setEnabled(true);
return super.isEnabled() && !mIsBusy;
}
@Override
protected void onBindView(View view) {
+ // Disable this view if the bluetooth enable/disable preference view is off
+ if (null != findPreferenceInHierarchy("bt_checkbox")){
+ setDependency("bt_checkbox");
+ }
+
super.onBindView(view);
- // Disable this view if the bluetooth enable/disable preference view is off
- setDependency("bt_checkbox");
-
ImageView btClass = (ImageView) view.findViewById(R.id.btClass);
- btClass.setImageResource(mLocalDevice.getBtClassDrawable());
- btClass.setAlpha(isEnabled() ? 255 : sDimAlpha);
+ btClass.setImageResource(mCachedDevice.getBtClassDrawable());
+ btClass.setAlpha(isEnabled() ? 255 : sDimAlpha);
}
@Override
@@ -118,8 +122,8 @@
// Put other preference types above us
return 1;
}
-
- return mLocalDevice.compareTo(((BluetoothDevicePreference) another).mLocalDevice);
+
+ return mCachedDevice.compareTo(((BluetoothDevicePreference) another).mCachedDevice);
}
-
+
}
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index 58fb569..eec0ad8 100644
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -18,9 +18,7 @@
import com.android.settings.R;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothError;
-import android.bluetooth.BluetoothIntent;
+import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -38,26 +36,27 @@
*/
public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChangeListener {
private static final String TAG = "BluetoothDiscoverableEnabler";
-
+
private static final String SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT =
"debug.bt.discoverable_time";
- private static final int DISCOVERABLE_TIMEOUT = 120;
+ /* package */ static final int DEFAULT_DISCOVERABLE_TIMEOUT = 120;
- private static final String SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP =
+ /* package */ static final String SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP =
"discoverable_end_timestamp";
-
+
private final Context mContext;
private final Handler mUiHandler;
private final CheckBoxPreference mCheckBoxPreference;
-
+
private final LocalBluetoothManager mLocalManager;
-
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (BluetoothIntent.SCAN_MODE_CHANGED_ACTION.equals(intent.getAction())) {
- int mode = intent.getIntExtra(BluetoothIntent.SCAN_MODE, BluetoothError.ERROR);
- if (mode != BluetoothError.ERROR) {
+ if (BluetoothAdapter.ACTION_SCAN_MODE_CHANGED.equals(intent.getAction())) {
+ int mode = intent.getIntExtra(BluetoothAdapter.EXTRA_SCAN_MODE,
+ BluetoothAdapter.ERROR);
+ if (mode != BluetoothAdapter.ERROR) {
handleModeChanged(mode);
}
}
@@ -66,17 +65,17 @@
private final Runnable mUpdateCountdownSummaryRunnable = new Runnable() {
public void run() {
- updateCountdownSummary();
- }
+ updateCountdownSummary();
+ }
};
public BluetoothDiscoverableEnabler(Context context, CheckBoxPreference checkBoxPreference) {
mContext = context;
mUiHandler = new Handler();
mCheckBoxPreference = checkBoxPreference;
-
+
checkBoxPreference.setPersistent(false);
-
+
mLocalManager = LocalBluetoothManager.getInstance(context);
if (mLocalManager == null) {
// Bluetooth not supported
@@ -89,33 +88,33 @@
return;
}
- IntentFilter filter = new IntentFilter(BluetoothIntent.SCAN_MODE_CHANGED_ACTION);
+ IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
mContext.registerReceiver(mReceiver, filter);
mCheckBoxPreference.setOnPreferenceChangeListener(this);
-
- handleModeChanged(mLocalManager.getBluetoothManager().getScanMode());
+
+ handleModeChanged(mLocalManager.getBluetoothAdapter().getScanMode());
}
-
+
public void pause() {
if (mLocalManager == null) {
return;
}
-
+
mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
mCheckBoxPreference.setOnPreferenceChangeListener(null);
mContext.unregisterReceiver(mReceiver);
}
-
+
public boolean onPreferenceChange(Preference preference, Object value) {
// Turn on/off BT discoverability
setEnabled((Boolean) value);
-
+
return true;
}
-
+
private void setEnabled(final boolean enable) {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
-
+ BluetoothAdapter manager = mLocalManager.getBluetoothAdapter();
+
if (enable) {
int timeout = getDiscoverableTimeout();
@@ -126,19 +125,19 @@
long endTimestamp = System.currentTimeMillis() + timeout * 1000;
persistDiscoverableEndTimestamp(endTimestamp);
-
- manager.setScanMode(BluetoothDevice.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+
+ manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
} else {
- manager.setScanMode(BluetoothDevice.SCAN_MODE_CONNECTABLE);
+ manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
}
}
private int getDiscoverableTimeout() {
int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1);
if (timeout <= 0) {
- timeout = DISCOVERABLE_TIMEOUT;
+ timeout = DEFAULT_DISCOVERABLE_TIMEOUT;
}
-
+
return timeout;
}
@@ -147,44 +146,44 @@
editor.putLong(SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, endTimestamp);
editor.commit();
}
-
+
private void handleModeChanged(int mode) {
- if (mode == BluetoothDevice.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
+ if (mode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
mCheckBoxPreference.setChecked(true);
updateCountdownSummary();
-
+
} else {
mCheckBoxPreference.setChecked(false);
}
}
-
+
private void updateCountdownSummary() {
- int mode = mLocalManager.getBluetoothManager().getScanMode();
- if (mode != BluetoothDevice.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
+ int mode = mLocalManager.getBluetoothAdapter().getScanMode();
+ if (mode != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
return;
}
-
+
long currentTimestamp = System.currentTimeMillis();
long endTimestamp = mLocalManager.getSharedPreferences().getLong(
SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, 0);
-
+
if (currentTimestamp > endTimestamp) {
// We're still in discoverable mode, but maybe there isn't a timeout.
mCheckBoxPreference.setSummaryOn(null);
return;
}
-
+
String formattedTimeLeft = String.valueOf((endTimestamp - currentTimestamp) / 1000);
-
+
mCheckBoxPreference.setSummaryOn(
mContext.getResources().getString(R.string.bluetooth_is_discoverable,
formattedTimeLeft));
-
+
synchronized (this) {
mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
mUiHandler.postDelayed(mUpdateCountdownSummaryRunnable, 1000);
}
}
-
-
+
+
}
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index af2722f..b872916 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -18,9 +18,7 @@
import com.android.settings.R;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothError;
-import android.bluetooth.BluetoothIntent;
+import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -36,21 +34,20 @@
* preference reflects the current state.
*/
public class BluetoothEnabler implements Preference.OnPreferenceChangeListener {
-
+
private static final boolean LOCAL_LOGD = Config.LOGD || false;
private static final String TAG = "BluetoothEnabler";
-
- private final Context mContext;
+
+ private final Context mContext;
private final CheckBoxPreference mCheckBoxPreference;
private final CharSequence mOriginalSummary;
-
+
private final LocalBluetoothManager mLocalManager;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- int state = intent.getIntExtra(BluetoothIntent.BLUETOOTH_STATE,
- BluetoothError.ERROR);
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
handleStateChanged(state);
}
};
@@ -58,10 +55,10 @@
public BluetoothEnabler(Context context, CheckBoxPreference checkBoxPreference) {
mContext = context;
mCheckBoxPreference = checkBoxPreference;
-
+
mOriginalSummary = checkBoxPreference.getSummary();
checkBoxPreference.setPersistent(false);
-
+
mLocalManager = LocalBluetoothManager.getInstance(context);
if (mLocalManager == null) {
// Bluetooth not supported
@@ -73,60 +70,68 @@
if (mLocalManager == null) {
return;
}
-
+
int state = mLocalManager.getBluetoothState();
// This is the widget enabled state, not the preference toggled state
- mCheckBoxPreference.setEnabled(state == BluetoothDevice.BLUETOOTH_STATE_ON ||
- state == BluetoothDevice.BLUETOOTH_STATE_OFF);
+ mCheckBoxPreference.setEnabled(state == BluetoothAdapter.STATE_ON ||
+ state == BluetoothAdapter.STATE_OFF);
// BT state is not a sticky broadcast, so set it manually
handleStateChanged(state);
-
- mContext.registerReceiver(mReceiver,
- new IntentFilter(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION));
+
+ mContext.registerReceiver(mReceiver,
+ new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
mCheckBoxPreference.setOnPreferenceChangeListener(this);
}
-
+
public void pause() {
if (mLocalManager == null) {
return;
}
-
+
mContext.unregisterReceiver(mReceiver);
mCheckBoxPreference.setOnPreferenceChangeListener(null);
}
-
+
public boolean onPreferenceChange(Preference preference, Object value) {
// Turn on/off BT
setEnabled((Boolean) value);
-
+
// Don't update UI to opposite state until we're sure
return false;
}
-
+
private void setEnabled(final boolean enable) {
// Disable preference
mCheckBoxPreference.setEnabled(false);
-
+
mLocalManager.setBluetoothEnabled(enable);
}
-
+
private void handleStateChanged(int state) {
- if (state == BluetoothDevice.BLUETOOTH_STATE_OFF ||
- state == BluetoothDevice.BLUETOOTH_STATE_ON) {
- mCheckBoxPreference.setChecked(state == BluetoothDevice.BLUETOOTH_STATE_ON);
- mCheckBoxPreference.setSummary(state == BluetoothDevice.BLUETOOTH_STATE_OFF ?
+ if (state == BluetoothAdapter.STATE_OFF ||
+ state == BluetoothAdapter.STATE_ON) {
+ mCheckBoxPreference.setChecked(state == BluetoothAdapter.STATE_ON);
+ mCheckBoxPreference.setSummary(state == BluetoothAdapter.STATE_OFF ?
mOriginalSummary :
null);
-
- mCheckBoxPreference.setEnabled(isEnabledByDependency());
-
- } else if (state == BluetoothDevice.BLUETOOTH_STATE_TURNING_ON ||
- state == BluetoothDevice.BLUETOOTH_STATE_TURNING_OFF) {
- mCheckBoxPreference.setSummary(state == BluetoothDevice.BLUETOOTH_STATE_TURNING_ON
+
+ /*
+ * Don't ever disable the preference. Only enable here. Disablement
+ * is taken care of by the dependency code. If this is disabled
+ * here, it may not be re-enabled from the framework when dependency
+ * is met. http://b/issue?id=2053751
+ */
+ if (isEnabledByDependency()) {
+ mCheckBoxPreference.setEnabled(true);
+ }
+
+ } else if (state == BluetoothAdapter.STATE_TURNING_ON ||
+ state == BluetoothAdapter.STATE_TURNING_OFF) {
+ mCheckBoxPreference.setSummary(state == BluetoothAdapter.STATE_TURNING_ON
? R.string.wifi_starting
: R.string.wifi_stopping);
-
+
} else {
mCheckBoxPreference.setChecked(false);
mCheckBoxPreference.setSummary(R.string.wifi_error);
@@ -139,17 +144,17 @@
if (dep == null) {
return true;
}
-
+
return !dep.shouldDisableDependents();
}
-
+
private Preference getDependencyPreference() {
String depKey = mCheckBoxPreference.getDependency();
if (TextUtils.isEmpty(depKey)) {
return null;
}
-
+
return mCheckBoxPreference.getPreferenceManager().findPreference(depKey);
}
-
+
}
diff --git a/src/com/android/settings/bluetooth/BluetoothEventRedirector.java b/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
index af64c98..6c40834 100644
--- a/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
+++ b/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
@@ -17,16 +17,17 @@
package com.android.settings.bluetooth;
import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothError;
import android.bluetooth.BluetoothHeadset;
-import android.bluetooth.BluetoothIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
+import com.android.settings.R;
import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
/**
@@ -36,78 +37,81 @@
*/
public class BluetoothEventRedirector {
private static final String TAG = "BluetoothEventRedirector";
- private static final boolean V = LocalBluetoothManager.V;
-
+
private LocalBluetoothManager mManager;
-
+
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- if (V) {
- Log.v(TAG, "Received " + intent.getAction());
- }
-
+ Log.v(TAG, "Received " + intent.getAction());
+
String action = intent.getAction();
- String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
-
- if (action.equals(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION)) {
- int state = intent.getIntExtra(BluetoothIntent.BLUETOOTH_STATE,
- BluetoothError.ERROR);
+ BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+
+ if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
+ BluetoothAdapter.ERROR);
mManager.setBluetoothStateInt(state);
- } else if (action.equals(BluetoothIntent.DISCOVERY_STARTED_ACTION)) {
+ } else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
mManager.onScanningStateChanged(true);
-
- } else if (action.equals(BluetoothIntent.DISCOVERY_COMPLETED_ACTION)) {
+
+ } else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
mManager.onScanningStateChanged(false);
-
- } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_FOUND_ACTION)) {
- short rssi = intent.getShortExtra(BluetoothIntent.RSSI, Short.MIN_VALUE);
- mManager.getLocalDeviceManager().onDeviceAppeared(address, rssi);
-
- } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_DISAPPEARED_ACTION)) {
- mManager.getLocalDeviceManager().onDeviceDisappeared(address);
-
- } else if (action.equals(BluetoothIntent.REMOTE_NAME_UPDATED_ACTION)) {
- mManager.getLocalDeviceManager().onDeviceNameUpdated(address);
-
- } else if (action.equals(BluetoothIntent.BOND_STATE_CHANGED_ACTION)) {
- int bondState = intent.getIntExtra(BluetoothIntent.BOND_STATE,
- BluetoothError.ERROR);
- mManager.getLocalDeviceManager().onBondingStateChanged(address, bondState);
- if (bondState == BluetoothDevice.BOND_NOT_BONDED) {
- int reason = intent.getIntExtra(BluetoothIntent.REASON, BluetoothError.ERROR);
- if (reason == BluetoothDevice.UNBOND_REASON_AUTH_FAILED ||
- reason == BluetoothDevice.UNBOND_REASON_AUTH_REJECTED ||
- reason == BluetoothDevice.UNBOND_REASON_REMOTE_DEVICE_DOWN) {
- mManager.getLocalDeviceManager().onBondingError(address, reason);
- }
+
+ } else if (action.equals(BluetoothDevice.ACTION_FOUND)) {
+ short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE);
+ BluetoothClass btClass = intent.getParcelableExtra(BluetoothDevice.EXTRA_CLASS);
+ String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
+ // TODO Pick up UUID. They should be available for 2.1 devices.
+ // Skip for now, there's a bluez problem and we are not getting uuids even for 2.1.
+ mManager.getCachedDeviceManager().onDeviceAppeared(device, rssi, btClass, name);
+
+ } else if (action.equals(BluetoothDevice.ACTION_DISAPPEARED)) {
+ mManager.getCachedDeviceManager().onDeviceDisappeared(device);
+
+ } else if (action.equals(BluetoothDevice.ACTION_NAME_CHANGED)) {
+ mManager.getCachedDeviceManager().onDeviceNameUpdated(device);
+
+ } else if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) {
+ int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
+ BluetoothDevice.ERROR);
+ mManager.getCachedDeviceManager().onBondingStateChanged(device, bondState);
+ if (bondState == BluetoothDevice.BOND_NONE) {
+ int reason = intent.getIntExtra(BluetoothDevice.EXTRA_REASON, BluetoothDevice.ERROR);
+ mManager.getCachedDeviceManager().showUnbondMessage(device, reason);
}
-
- } else if (action.equals(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION)) {
- int newState = intent.getIntExtra(BluetoothIntent.HEADSET_STATE, 0);
- int oldState = intent.getIntExtra(BluetoothIntent.HEADSET_PREVIOUS_STATE, 0);
+
+ } else if (action.equals(BluetoothHeadset.ACTION_STATE_CHANGED)) {
+ int newState = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, 0);
+ int oldState = intent.getIntExtra(BluetoothHeadset.EXTRA_PREVIOUS_STATE, 0);
if (newState == BluetoothHeadset.STATE_DISCONNECTED &&
oldState == BluetoothHeadset.STATE_CONNECTING) {
Log.i(TAG, "Failed to connect BT headset");
}
- mManager.getLocalDeviceManager().onProfileStateChanged(address,
+ mManager.getCachedDeviceManager().onProfileStateChanged(device,
Profile.HEADSET, newState);
- } else if (action.equals(BluetoothA2dp.SINK_STATE_CHANGED_ACTION)) {
- int newState = intent.getIntExtra(BluetoothA2dp.SINK_STATE, 0);
- int oldState = intent.getIntExtra(BluetoothA2dp.SINK_PREVIOUS_STATE, 0);
+ } else if (action.equals(BluetoothA2dp.ACTION_SINK_STATE_CHANGED)) {
+ int newState = intent.getIntExtra(BluetoothA2dp.EXTRA_SINK_STATE, 0);
+ int oldState = intent.getIntExtra(BluetoothA2dp.EXTRA_PREVIOUS_SINK_STATE, 0);
if (newState == BluetoothA2dp.STATE_DISCONNECTED &&
oldState == BluetoothA2dp.STATE_CONNECTING) {
Log.i(TAG, "Failed to connect BT A2DP");
}
- mManager.getLocalDeviceManager().onProfileStateChanged(address,
+ mManager.getCachedDeviceManager().onProfileStateChanged(device,
Profile.A2DP, newState);
- } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_CLASS_UPDATED_ACTION)) {
- mManager.getLocalDeviceManager().onBtClassChanged(address);
-
+ } else if (action.equals(BluetoothDevice.ACTION_CLASS_CHANGED)) {
+ mManager.getCachedDeviceManager().onBtClassChanged(device);
+
+ } else if (action.equals(BluetoothDevice.ACTION_UUID)) {
+ mManager.getCachedDeviceManager().onUuidChanged(device);
+
+ } else if (action.equals(BluetoothDevice.ACTION_PAIRING_CANCEL)) {
+ int errorMsg = R.string.bluetooth_pairing_error_message;
+ mManager.showError(device, R.string.bluetooth_error_title, errorMsg);
}
}
};
@@ -118,29 +122,31 @@
public void start() {
IntentFilter filter = new IntentFilter();
-
+
// Bluetooth on/off broadcasts
- filter.addAction(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION);
-
+ filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+
// Discovery broadcasts
- filter.addAction(BluetoothIntent.DISCOVERY_STARTED_ACTION);
- filter.addAction(BluetoothIntent.DISCOVERY_COMPLETED_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_DEVICE_DISAPPEARED_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_DEVICE_FOUND_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_NAME_UPDATED_ACTION);
-
+ filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
+ filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
+ filter.addAction(BluetoothDevice.ACTION_DISAPPEARED);
+ filter.addAction(BluetoothDevice.ACTION_FOUND);
+ filter.addAction(BluetoothDevice.ACTION_NAME_CHANGED);
+
// Pairing broadcasts
- filter.addAction(BluetoothIntent.BOND_STATE_CHANGED_ACTION);
-
+ filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
+ filter.addAction(BluetoothDevice.ACTION_PAIRING_CANCEL);
+
// Fine-grained state broadcasts
- filter.addAction(BluetoothA2dp.SINK_STATE_CHANGED_ACTION);
- filter.addAction(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION);
- filter.addAction(BluetoothIntent.REMOTE_DEVICE_CLASS_UPDATED_ACTION);
-
+ filter.addAction(BluetoothA2dp.ACTION_SINK_STATE_CHANGED);
+ filter.addAction(BluetoothHeadset.ACTION_STATE_CHANGED);
+ filter.addAction(BluetoothDevice.ACTION_CLASS_CHANGED);
+ filter.addAction(BluetoothDevice.ACTION_UUID);
+
mManager.getContext().registerReceiver(mBroadcastReceiver, filter);
}
-
+
public void stop() {
- mManager.getContext().unregisterReceiver(mBroadcastReceiver);
+ mManager.getContext().unregisterReceiver(mBroadcastReceiver);
}
}
diff --git a/src/com/android/settings/bluetooth/BluetoothNamePreference.java b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
index 40bab2c..7a9a0c1 100644
--- a/src/com/android/settings/bluetooth/BluetoothNamePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
@@ -16,72 +16,124 @@
package com.android.settings.bluetooth;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothError;
-import android.bluetooth.BluetoothIntent;
+import android.app.AlertDialog;
+import android.app.Dialog;
+
+import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.preference.EditTextPreference;
-import android.preference.PreferenceManager;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.TextWatcher;
+import android.text.InputFilter.LengthFilter;
import android.util.AttributeSet;
+import android.widget.Button;
+import android.widget.EditText;
/**
* BluetoothNamePreference is the preference type for editing the device's
* Bluetooth name. It asks the user for a name, and persists it via the
* Bluetooth API.
*/
-public class BluetoothNamePreference extends EditTextPreference {
+public class BluetoothNamePreference extends EditTextPreference implements TextWatcher {
private static final String TAG = "BluetoothNamePreference";
+ // TODO(): Investigate bluetoothd/dbus crash when length is set to 248, limit as per spec.
+ private static final int BLUETOOTH_NAME_MAX_LENGTH = 200;
private LocalBluetoothManager mLocalManager;
-
+
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (action.equals(BluetoothIntent.NAME_CHANGED_ACTION)) {
+ if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
setSummaryToName();
- } else if (action.equals(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION) &&
- (intent.getIntExtra(BluetoothIntent.BLUETOOTH_STATE,
- BluetoothError.ERROR) == BluetoothDevice.BLUETOOTH_STATE_ON)) {
+ } else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) &&
+ (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR) ==
+ BluetoothAdapter.STATE_ON)) {
setSummaryToName();
}
}
};
-
+
public BluetoothNamePreference(Context context, AttributeSet attrs) {
super(context, attrs);
-
+
mLocalManager = LocalBluetoothManager.getInstance(context);
-
- setSummaryToName();
+
+ setSummaryToName();
}
public void resume() {
IntentFilter filter = new IntentFilter();
- filter.addAction(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION);
- filter.addAction(BluetoothIntent.NAME_CHANGED_ACTION);
+ filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
getContext().registerReceiver(mReceiver, filter);
+
+ // Make sure the OK button is disabled (if necessary) after rotation
+ EditText et = getEditText();
+ et.setFilters(new InputFilter[] {new LengthFilter(BLUETOOTH_NAME_MAX_LENGTH)});
+ if (et != null) {
+ et.addTextChangedListener(this);
+ Dialog d = getDialog();
+ if (d instanceof AlertDialog) {
+ Button b = ((AlertDialog) d).getButton(AlertDialog.BUTTON_POSITIVE);
+ b.setEnabled(et.getText().length() > 0);
+ }
+ }
}
-
+
public void pause() {
+ EditText et = getEditText();
+ if (et != null) {
+ et.removeTextChangedListener(this);
+ }
getContext().unregisterReceiver(mReceiver);
}
-
+
private void setSummaryToName() {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
- if (manager.isEnabled()) {
- setSummary(manager.getName());
+ BluetoothAdapter adapter = mLocalManager.getBluetoothAdapter();
+ if (adapter.isEnabled()) {
+ setSummary(adapter.getName());
}
}
@Override
protected boolean persistString(String value) {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
- manager.setName(value);
- return true;
+ BluetoothAdapter adapter = mLocalManager.getBluetoothAdapter();
+ adapter.setName(value);
+ return true;
}
-
+
+ @Override
+ protected void onClick() {
+ super.onClick();
+
+ // The dialog should be created by now
+ EditText et = getEditText();
+ if (et != null) {
+ et.setText(mLocalManager.getBluetoothAdapter().getName());
+ }
+ }
+
+ // TextWatcher interface
+ public void afterTextChanged(Editable s) {
+ Dialog d = getDialog();
+ if (d instanceof AlertDialog) {
+ ((AlertDialog) d).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(s.length() > 0);
+ }
+ }
+
+ // TextWatcher interface
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ // not used
+ }
+
+ // TextWatcher interface
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ // not used
+ }
}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
new file mode 100644
index 0000000..7004ba0
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
@@ -0,0 +1,279 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.InputType;
+import android.text.TextWatcher;
+import android.text.InputFilter.LengthFilter;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.android.internal.app.AlertActivity;
+import com.android.internal.app.AlertController;
+import com.android.settings.R;
+
+/**
+ * BluetoothPairingDialog asks the user to enter a PIN / Passkey / simple confirmation
+ * for pairing with a remote Bluetooth device. It is an activity that appears as a dialog.
+ */
+public class BluetoothPairingDialog extends AlertActivity implements DialogInterface.OnClickListener,
+ TextWatcher {
+ private static final String TAG = "BluetoothPairingDialog";
+
+ private final int BLUETOOTH_PIN_MAX_LENGTH = 16;
+ private final int BLUETOOTH_PASSKEY_MAX_LENGTH = 6;
+ private LocalBluetoothManager mLocalManager;
+ private BluetoothDevice mDevice;
+ private int mType;
+ private String mPasskey;
+ private EditText mPairingView;
+ private Button mOkButton;
+
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(intent.getAction())) {
+ int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
+ BluetoothDevice.ERROR);
+ if (bondState == BluetoothDevice.BOND_BONDED ||
+ bondState == BluetoothDevice.BOND_NONE) {
+ dismissDialog();
+ }
+ } else if(BluetoothDevice.ACTION_PAIRING_CANCEL.equals(intent.getAction())) {
+ BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ if (device == null || device.equals(mDevice)) {
+ dismissDialog();
+ }
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ if (!intent.getAction().equals(BluetoothDevice.ACTION_PAIRING_REQUEST))
+ {
+ Log.e(TAG,
+ "Error: this activity may be started only with intent " +
+ BluetoothDevice.ACTION_PAIRING_REQUEST);
+ finish();
+ }
+
+ mLocalManager = LocalBluetoothManager.getInstance(this);
+ mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ mType = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
+ if (mType == BluetoothDevice.PAIRING_VARIANT_PIN) {
+ createUserEntryDialog();
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY) {
+ createUserEntryDialog();
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION){
+ int passkey =
+ intent.getIntExtra(BluetoothDevice.EXTRA_PASSKEY, BluetoothDevice.ERROR);
+ if (passkey == BluetoothDevice.ERROR) {
+ Log.e(TAG, "Invalid ConfirmationPasskey received, not showing any dialog");
+ return;
+ }
+ mPasskey = String.format("%06d", passkey);
+ createConfirmationDialog();
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_CONSENT) {
+ createConsentDialog();
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
+ int passkey =
+ intent.getIntExtra(BluetoothDevice.EXTRA_PASSKEY, BluetoothDevice.ERROR);
+ if (passkey == BluetoothDevice.ERROR) {
+ Log.e(TAG, "Invalid ConfirmationPasskey received, not showing any dialog");
+ return;
+ }
+ mPasskey = String.format("%06d", passkey);
+ createDisplayPasskeyDialog();
+ } else {
+ Log.e(TAG, "Incorrect pairing type received, not showing any dialog");
+ }
+
+ /*
+ * Leave this registered through pause/resume since we still want to
+ * finish the activity in the background if pairing is canceled.
+ */
+ registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_PAIRING_CANCEL));
+ registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED));
+ }
+
+ private void createUserEntryDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_pairing_request);
+ p.mView = createView();
+ p.mPositiveButtonText = getString(android.R.string.ok);
+ p.mPositiveButtonListener = this;
+ p.mNegativeButtonText = getString(android.R.string.cancel);
+ p.mNegativeButtonListener = this;
+ setupAlert();
+
+ mOkButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
+ mOkButton.setEnabled(false);
+ }
+
+ private View createView() {
+ View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null);
+
+ String name = mLocalManager.getCachedDeviceManager().getName(mDevice);
+ TextView messageView = (TextView) view.findViewById(R.id.message);
+ mPairingView = (EditText) view.findViewById(R.id.text);
+ mPairingView.addTextChangedListener(this);
+
+ if (mType == BluetoothDevice.PAIRING_VARIANT_PIN) {
+ messageView.setText(getString(R.string.bluetooth_enter_pin_msg, name));
+ // Maximum of 16 characters in a PIN adb sync
+ mPairingView.setFilters(new InputFilter[] {
+ new LengthFilter(BLUETOOTH_PIN_MAX_LENGTH) });
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY){
+ messageView.setText(getString(R.string.bluetooth_enter_passkey_msg, name));
+ // Maximum of 6 digits for passkey
+ mPairingView.setInputType(InputType.TYPE_CLASS_NUMBER |
+ InputType.TYPE_NUMBER_FLAG_SIGNED);
+ mPairingView.setFilters(new InputFilter[] {
+ new LengthFilter(BLUETOOTH_PASSKEY_MAX_LENGTH)});
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION) {
+ mPairingView.setVisibility(View.GONE);
+ messageView.setText(getString(R.string.bluetooth_confirm_passkey_msg, name,
+ mPasskey));
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_CONSENT) {
+ mPairingView.setVisibility(View.GONE);
+ messageView.setText(getString(R.string.bluetooth_incoming_pairing_msg, name));
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
+ mPairingView.setVisibility(View.GONE);
+ messageView.setText(getString(R.string.bluetooth_display_passkey_msg, name, mPasskey));
+ } else {
+ Log.e(TAG, "Incorrect pairing type received, not creating view");
+ }
+ return view;
+ }
+
+ private void createConfirmationDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_pairing_request);
+ p.mView = createView();
+ p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept);
+ p.mPositiveButtonListener = this;
+ p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline);
+ p.mNegativeButtonListener = this;
+ setupAlert();
+ }
+
+ private void createConsentDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_pairing_request);
+ p.mView = createView();
+ p.mPositiveButtonText = getString(R.string.bluetooth_pairing_accept);
+ p.mPositiveButtonListener = this;
+ p.mNegativeButtonText = getString(R.string.bluetooth_pairing_decline);
+ p.mNegativeButtonListener = this;
+ setupAlert();
+ }
+
+ private void createDisplayPasskeyDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_pairing_request);
+ p.mView = createView();
+ p.mPositiveButtonText = getString(android.R.string.ok);
+ p.mPositiveButtonListener = this;
+ setupAlert();
+
+ // Since its only a notification, send an OK to the framework,
+ // indicating that the dialog has been displayed.
+ mDevice.setPairingConfirmation(true);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unregisterReceiver(mReceiver);
+ }
+
+ public void afterTextChanged(Editable s) {
+ if (s.length() > 0) {
+ mOkButton.setEnabled(true);
+ }
+ }
+
+ private void dismissDialog() {
+ this.dismiss();
+ }
+
+ private void onPair(String value) {
+ if (mType == BluetoothDevice.PAIRING_VARIANT_PIN) {
+ byte[] pinBytes = BluetoothDevice.convertPinToBytes(value);
+ if (pinBytes == null) {
+ return;
+ }
+ mDevice.setPin(pinBytes);
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY) {
+ int passkey = Integer.parseInt(value);
+ mDevice.setPasskey(passkey);
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION) {
+ mDevice.setPairingConfirmation(true);
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_CONSENT) {
+ mDevice.setPairingConfirmation(true);
+ } else if (mType == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
+ // Do Nothing.
+ } else {
+ Log.e(TAG, "Incorrect pairing type received");
+ }
+ }
+
+ private void onCancel() {
+ mDevice.cancelPairingUserInput();
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ onPair(mPairingView.getText().toString());
+ break;
+
+ case DialogInterface.BUTTON_NEGATIVE:
+ onCancel();
+ break;
+ }
+ }
+
+ /* Not used */
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ /* Not used */
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
new file mode 100644
index 0000000..2fa1744
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import com.android.settings.R;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+/**
+ * BluetoothPairingRequest is a receiver for any Bluetooth pairing request. It
+ * checks if the Bluetooth Settings is currently visible and brings up the PIN, the passkey or a
+ * confirmation entry dialog. Otherwise it puts a Notification in the status bar, which can
+ * be clicked to bring up the Pairing entry dialog.
+ */
+public class BluetoothPairingRequest extends BroadcastReceiver {
+
+ public static final int NOTIFICATION_ID = android.R.drawable.stat_sys_data_bluetooth;
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
+
+ LocalBluetoothManager localManager = LocalBluetoothManager.getInstance(context);
+
+ BluetoothDevice device =
+ intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
+ BluetoothDevice.ERROR);
+ Intent pairingIntent = new Intent();
+ pairingIntent.setClass(context, BluetoothPairingDialog.class);
+ pairingIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+ pairingIntent.putExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, type);
+ if (type == BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION ||
+ type == BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY) {
+ int passkey = intent.getIntExtra(BluetoothDevice.EXTRA_PASSKEY, BluetoothDevice.ERROR);
+ pairingIntent.putExtra(BluetoothDevice.EXTRA_PASSKEY, passkey);
+ }
+ pairingIntent.setAction(BluetoothDevice.ACTION_PAIRING_REQUEST);
+ pairingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ if (localManager.getForegroundActivity() != null) {
+ // Since the BT-related activity is in the foreground, just open the dialog
+ context.startActivity(pairingIntent);
+
+ } else {
+
+ // Put up a notification that leads to the dialog
+ Resources res = context.getResources();
+ Notification notification = new Notification(
+ android.R.drawable.stat_sys_data_bluetooth,
+ res.getString(R.string.bluetooth_notif_ticker),
+ System.currentTimeMillis());
+
+ PendingIntent pending = PendingIntent.getActivity(context, 0,
+ pairingIntent, PendingIntent.FLAG_ONE_SHOT);
+
+ String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
+ if (TextUtils.isEmpty(name)) {
+ name = device.getName();
+ }
+
+ notification.setLatestEventInfo(context,
+ res.getString(R.string.bluetooth_notif_title),
+ res.getString(R.string.bluetooth_notif_message) + name,
+ pending);
+ notification.flags |= Notification.FLAG_AUTO_CANCEL;
+
+ NotificationManager manager = (NotificationManager)
+ context.getSystemService(Context.NOTIFICATION_SERVICE);
+ manager.notify(NOTIFICATION_ID, notification);
+ }
+
+ } else if (action.equals(BluetoothDevice.ACTION_PAIRING_CANCEL)) {
+
+ // Remove the notification
+ NotificationManager manager = (NotificationManager) context
+ .getSystemService(Context.NOTIFICATION_SERVICE);
+ manager.cancel(NOTIFICATION_ID);
+ }
+ }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPinDialog.java b/src/com/android/settings/bluetooth/BluetoothPinDialog.java
deleted file mode 100644
index 087fbb2..0000000
--- a/src/com/android/settings/bluetooth/BluetoothPinDialog.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.bluetooth;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.InputFilter;
-import android.text.TextWatcher;
-import android.text.InputFilter.LengthFilter;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-
-import com.android.internal.app.AlertActivity;
-import com.android.internal.app.AlertController;
-import com.android.settings.R;
-
-/**
- * BluetoothPinDialog asks the user to enter a PIN for pairing with a remote
- * Bluetooth device. It is an activity that appears as a dialog.
- */
-public class BluetoothPinDialog extends AlertActivity implements DialogInterface.OnClickListener,
- TextWatcher {
- private static final String TAG = "BluetoothPinDialog";
-
- private final int BLUETOOTH_PIN_MAX_LENGTH = 16;
- private LocalBluetoothManager mLocalManager;
- private String mAddress;
- private EditText mPinView;
- private Button mOkButton;
-
- private static final String INSTANCE_KEY_PAIRING_CANCELED = "received_pairing_canceled";
- private boolean mReceivedPairingCanceled;
-
- private BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (!BluetoothIntent.PAIRING_CANCEL_ACTION.equals(intent.getAction())) {
- return;
- }
-
- String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
- if (address == null || address.equals(mAddress)) {
- onReceivedPairingCanceled();
- }
- }
- };
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Intent intent = getIntent();
- if (!intent.getAction().equals(BluetoothIntent.PAIRING_REQUEST_ACTION))
- {
- Log.e(TAG,
- "Error: this activity may be started only with intent " +
- BluetoothIntent.PAIRING_REQUEST_ACTION);
- finish();
- }
-
- mLocalManager = LocalBluetoothManager.getInstance(this);
- mAddress = intent.getStringExtra(BluetoothIntent.ADDRESS);
-
- // Set up the "dialog"
- final AlertController.AlertParams p = mAlertParams;
- p.mIconId = android.R.drawable.ic_dialog_info;
- p.mTitle = getString(R.string.bluetooth_pin_entry);
- p.mView = createView();
- p.mPositiveButtonText = getString(android.R.string.ok);
- p.mPositiveButtonListener = this;
- p.mNegativeButtonText = getString(android.R.string.cancel);
- p.mNegativeButtonListener = this;
- setupAlert();
-
- mOkButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
- mOkButton.setEnabled(false);
-
- /*
- * Leave this registered through pause/resume since we still want to
- * finish the activity in the background if pairing is canceled.
- */
- registerReceiver(mReceiver, new IntentFilter(BluetoothIntent.PAIRING_CANCEL_ACTION));
- }
-
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
-
- mReceivedPairingCanceled = savedInstanceState.getBoolean(INSTANCE_KEY_PAIRING_CANCELED);
- if (mReceivedPairingCanceled) {
- onReceivedPairingCanceled();
- }
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
-
- outState.putBoolean(INSTANCE_KEY_PAIRING_CANCELED, mReceivedPairingCanceled);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
-
- unregisterReceiver(mReceiver);
- }
-
- private View createView() {
- View view = getLayoutInflater().inflate(R.layout.bluetooth_pin_entry, null);
-
- String name = mLocalManager.getLocalDeviceManager().getName(mAddress);
- TextView messageView = (TextView) view.findViewById(R.id.message);
- messageView.setText(getString(R.string.bluetooth_enter_pin_msg, name));
-
- mPinView = (EditText) view.findViewById(R.id.text);
- mPinView.addTextChangedListener(this);
- // Maximum of 16 characters in a PIN
- mPinView.setFilters(new InputFilter[] { new LengthFilter(BLUETOOTH_PIN_MAX_LENGTH) });
-
- return view;
- }
-
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- mOkButton.setEnabled(true);
- }
- }
-
- private void onReceivedPairingCanceled() {
- mReceivedPairingCanceled = true;
-
- TextView messageView = (TextView) findViewById(R.id.message);
- messageView.setText(getString(R.string.bluetooth_pairing_error_message,
- mLocalManager.getLocalDeviceManager().getName(mAddress)));
-
- mPinView.setVisibility(View.GONE);
- mPinView.clearFocus();
- mPinView.removeTextChangedListener(this);
-
- mOkButton.setEnabled(true);
- mAlert.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE);
- }
-
- private void onPair(String pin) {
- byte[] pinBytes = BluetoothDevice.convertPinToBytes(pin);
-
- if (pinBytes == null) {
- return;
- }
-
- mLocalManager.getBluetoothManager().setPin(mAddress, pinBytes);
- }
-
- private void onCancel() {
- mLocalManager.getBluetoothManager().cancelBondProcess(mAddress);
- }
-
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case DialogInterface.BUTTON_POSITIVE:
- onPair(mPinView.getText().toString());
- break;
-
- case DialogInterface.BUTTON_NEGATIVE:
- onCancel();
- break;
- }
- }
-
- /* Not used */
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- /* Not used */
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
-}
diff --git a/src/com/android/settings/bluetooth/BluetoothPinRequest.java b/src/com/android/settings/bluetooth/BluetoothPinRequest.java
deleted file mode 100644
index 619052d..0000000
--- a/src/com/android/settings/bluetooth/BluetoothPinRequest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.bluetooth;
-
-import com.android.settings.R;
-
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.text.TextUtils;
-
-/**
- * BluetoothPinRequest is a receiver for any Bluetooth pairing PIN request. It
- * checks if the Bluetooth Settings is currently visible and brings up the PIN
- * entry dialog. Otherwise it puts a Notification in the status bar, which can
- * be clicked to bring up the PIN entry dialog.
- */
-public class BluetoothPinRequest extends BroadcastReceiver {
-
- public static final int NOTIFICATION_ID = android.R.drawable.stat_sys_data_bluetooth;
-
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(BluetoothIntent.PAIRING_REQUEST_ACTION)) {
-
- LocalBluetoothManager localManager = LocalBluetoothManager.getInstance(context);
-
- String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
- Intent pinIntent = new Intent();
- pinIntent.setClass(context, BluetoothPinDialog.class);
- pinIntent.putExtra(BluetoothIntent.ADDRESS, address);
- pinIntent.setAction(BluetoothIntent.PAIRING_REQUEST_ACTION);
- pinIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- if (localManager.getForegroundActivity() != null) {
- // Since the BT-related activity is in the foreground, just open the dialog
- context.startActivity(pinIntent);
-
- } else {
-
- // Put up a notification that leads to the dialog
- Resources res = context.getResources();
- Notification notification = new Notification(
- android.R.drawable.stat_sys_data_bluetooth,
- res.getString(R.string.bluetooth_notif_ticker),
- System.currentTimeMillis());
-
- PendingIntent pending = PendingIntent.getActivity(context, 0,
- pinIntent, PendingIntent.FLAG_ONE_SHOT);
-
- String name = intent.getStringExtra(BluetoothIntent.NAME);
- if (TextUtils.isEmpty(name)) {
- name = localManager.getLocalDeviceManager().getName(address);
- }
-
- notification.setLatestEventInfo(context,
- res.getString(R.string.bluetooth_notif_title),
- res.getString(R.string.bluetooth_notif_message) + name,
- pending);
- notification.flags |= Notification.FLAG_AUTO_CANCEL;
-
- NotificationManager manager = (NotificationManager)
- context.getSystemService(Context.NOTIFICATION_SERVICE);
- manager.notify(NOTIFICATION_ID, notification);
- }
-
- } else if (action.equals(BluetoothIntent.PAIRING_CANCEL_ACTION)) {
-
- // Remove the notification
- NotificationManager manager = (NotificationManager) context
- .getSystemService(Context.NOTIFICATION_SERVICE);
- manager.cancel(NOTIFICATION_ID);
- }
- }
-}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index e6ac5fd..48f2a05 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -16,14 +16,12 @@
package com.android.settings.bluetooth;
-import com.android.settings.ProgressCategory;
-import com.android.settings.R;
-
-import java.util.List;
-import java.util.WeakHashMap;
-
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothIntent;
+import android.bluetooth.BluetoothDevicePicker;
+import android.bluetooth.BluetoothUuid;
+import android.os.ParcelUuid;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -40,6 +38,13 @@
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView.AdapterContextMenuInfo;
+import com.android.settings.ProgressCategory;
+import com.android.settings.R;
+import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+
+import java.util.List;
+import java.util.WeakHashMap;
+
/**
* BluetoothSettings is the Settings screen for Bluetooth configuration and
* connection management.
@@ -50,30 +55,56 @@
private static final String TAG = "BluetoothSettings";
private static final int MENU_SCAN = Menu.FIRST;
-
+
private static final String KEY_BT_CHECKBOX = "bt_checkbox";
private static final String KEY_BT_DISCOVERABLE = "bt_discoverable";
private static final String KEY_BT_DEVICE_LIST = "bt_device_list";
private static final String KEY_BT_NAME = "bt_name";
private static final String KEY_BT_SCAN = "bt_scan";
-
+
+ private static final int SCREEN_TYPE_SETTINGS = 0;
+ private static final int SCREEN_TYPE_DEVICEPICKER = 1;
+
+ private int mScreenType;
+ private int mFilterType;
+ private boolean mNeedAuth;
+ private String mLaunchPackage;
+ private String mLaunchClass;
+
+ private BluetoothDevice mSelectedDevice= null;
+
private LocalBluetoothManager mLocalManager;
-
+
private BluetoothEnabler mEnabler;
private BluetoothDiscoverableEnabler mDiscoverableEnabler;
-
+
private BluetoothNamePreference mNamePreference;
-
+
private ProgressCategory mDeviceList;
-
- private WeakHashMap<LocalBluetoothDevice, BluetoothDevicePreference> mDevicePreferenceMap =
- new WeakHashMap<LocalBluetoothDevice, BluetoothDevicePreference>();
-
+
+ private WeakHashMap<CachedBluetoothDevice, BluetoothDevicePreference> mDevicePreferenceMap =
+ new WeakHashMap<CachedBluetoothDevice, BluetoothDevicePreference>();
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: put this in callback instead of receiving
- onBluetoothStateChanged(mLocalManager.getBluetoothState());
+
+ if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
+ onBluetoothStateChanged(mLocalManager.getBluetoothState());
+ } else if (intent.getAction().equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)
+ && mScreenType == SCREEN_TYPE_DEVICEPICKER) {
+ int bondState = intent
+ .getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR);
+ if (bondState == BluetoothDevice.BOND_BONDED) {
+ BluetoothDevice device = intent
+ .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+ if (device.equals(mSelectedDevice)) {
+ sendDevicePickedIntent(device);
+ finish();
+ }
+ }
+ }
}
};
@@ -82,69 +113,104 @@
super.onCreate(savedInstanceState);
mLocalManager = LocalBluetoothManager.getInstance(this);
- if (mLocalManager == null) finish();
-
- addPreferencesFromResource(R.xml.bluetooth_settings);
-
- mEnabler = new BluetoothEnabler(
- this,
- (CheckBoxPreference) findPreference(KEY_BT_CHECKBOX));
-
- mDiscoverableEnabler = new BluetoothDiscoverableEnabler(
- this,
- (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE));
-
- mNamePreference = (BluetoothNamePreference) findPreference(KEY_BT_NAME);
-
+ if (mLocalManager == null) finish();
+
+ // Note:
+ // If an application wish to show the BT device list, it can send an
+ // intent to Settings application with below extra data:
+ // -DEVICE_PICKER_FILTER_TYPE: the type of BT devices that want to show.
+ // -DEVICE_PICKER_LAUNCH_PACKAGE: the package which the application belongs to.
+ // -DEVICE_PICKER_LAUNCH_CLASS: the class which will receive user's selected
+ // result from the BT list.
+ // -DEVICE_PICKER_NEED_AUTH: to show if bonding procedure needed.
+
+ mFilterType = BluetoothDevicePicker.FILTER_TYPE_ALL;
+ Intent intent = getIntent();
+ String action = intent.getAction();
+
+ if (action.equals(BluetoothDevicePicker.ACTION_LAUNCH)) {
+ mScreenType = SCREEN_TYPE_DEVICEPICKER;
+ mNeedAuth = intent.getBooleanExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false);
+ mFilterType = intent.getIntExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE,
+ BluetoothDevicePicker.FILTER_TYPE_ALL);
+ mLaunchPackage = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_PACKAGE);
+ mLaunchClass = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_CLASS);
+
+ setTitle(getString(R.string.device_picker));
+ addPreferencesFromResource(R.xml.device_picker);
+ } else {
+ addPreferencesFromResource(R.xml.bluetooth_settings);
+
+ mEnabler = new BluetoothEnabler(
+ this,
+ (CheckBoxPreference) findPreference(KEY_BT_CHECKBOX));
+
+ mDiscoverableEnabler = new BluetoothDiscoverableEnabler(
+ this,
+ (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE));
+
+ mNamePreference = (BluetoothNamePreference) findPreference(KEY_BT_NAME);
+
+ mDeviceList = (ProgressCategory) findPreference(KEY_BT_DEVICE_LIST);
+ }
+
mDeviceList = (ProgressCategory) findPreference(KEY_BT_DEVICE_LIST);
-
+
registerForContextMenu(getListView());
}
@Override
protected void onResume() {
super.onResume();
-
+
// Repopulate (which isn't too bad since it's cached in the settings
// bluetooth manager
mDevicePreferenceMap.clear();
mDeviceList.removeAll();
addDevices();
- mEnabler.resume();
- mDiscoverableEnabler.resume();
- mNamePreference.resume();
+ if (mScreenType == SCREEN_TYPE_SETTINGS) {
+ mEnabler.resume();
+ mDiscoverableEnabler.resume();
+ mNamePreference.resume();
+ }
+
mLocalManager.registerCallback(this);
-
+
+ mDeviceList.setProgress(mLocalManager.getBluetoothAdapter().isDiscovering());
mLocalManager.startScanning(false);
- registerReceiver(mReceiver,
- new IntentFilter(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION));
-
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
+ registerReceiver(mReceiver, intentFilter);
mLocalManager.setForegroundActivity(this);
}
-
+
@Override
protected void onPause() {
super.onPause();
mLocalManager.setForegroundActivity(null);
-
+
unregisterReceiver(mReceiver);
-
+
mLocalManager.unregisterCallback(this);
- mNamePreference.pause();
- mDiscoverableEnabler.pause();
- mEnabler.pause();
+ if (mScreenType == SCREEN_TYPE_SETTINGS) {
+ mNamePreference.pause();
+ mDiscoverableEnabler.pause();
+ mEnabler.pause();
+ }
}
private void addDevices() {
- List<LocalBluetoothDevice> devices = mLocalManager.getLocalDeviceManager().getDevicesCopy();
- for (LocalBluetoothDevice device : devices) {
- onDeviceAdded(device);
+ List<CachedBluetoothDevice> cachedDevices =
+ mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();
+ for (CachedBluetoothDevice cachedDevice : cachedDevices) {
+ onDeviceAdded(cachedDevice);
}
}
-
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_SCAN, 0, R.string.bluetooth_scan_for_devices)
@@ -155,18 +221,18 @@
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- menu.findItem(MENU_SCAN).setEnabled(mLocalManager.getBluetoothManager().isEnabled());
+ menu.findItem(MENU_SCAN).setEnabled(mLocalManager.getBluetoothAdapter().isEnabled());
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
-
+
case MENU_SCAN:
mLocalManager.startScanning(true);
return true;
-
+
default:
return false;
}
@@ -180,39 +246,56 @@
mLocalManager.startScanning(true);
return true;
}
-
+
if (preference instanceof BluetoothDevicePreference) {
- BluetoothDevicePreference btPreference = (BluetoothDevicePreference) preference;
- btPreference.getDevice().onClicked();
+ BluetoothDevicePreference btPreference = (BluetoothDevicePreference)preference;
+ if (mScreenType == SCREEN_TYPE_SETTINGS) {
+ btPreference.getCachedDevice().onClicked();
+ } else if (mScreenType == SCREEN_TYPE_DEVICEPICKER) {
+ CachedBluetoothDevice device = btPreference.getCachedDevice();
+
+ mSelectedDevice = device.getDevice();
+ if ((device.getBondState() == BluetoothDevice.BOND_BONDED) ||
+ (mNeedAuth == false)) {
+ sendDevicePickedIntent(mSelectedDevice);
+ finish();
+ } else {
+ btPreference.getCachedDevice().onClicked();
+ }
+ }
return true;
}
-
+
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
-
+
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
- LocalBluetoothDevice device = getDeviceFromMenuInfo(menuInfo);
- if (device == null) return;
-
- device.onCreateContextMenu(menu);
+ //For device picker, disable Context Menu
+ if (mScreenType != SCREEN_TYPE_SETTINGS) {
+ return;
+ }
+ CachedBluetoothDevice cachedDevice = getDeviceFromMenuInfo(menuInfo);
+ if (cachedDevice == null) return;
+
+ cachedDevice.onCreateContextMenu(menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
- LocalBluetoothDevice device = getDeviceFromMenuInfo(item.getMenuInfo());
- if (device == null) return false;
-
- device.onContextItemSelected(item);
+ CachedBluetoothDevice cachedDevice = getDeviceFromMenuInfo(item.getMenuInfo());
+ if (cachedDevice == null) return false;
+
+ cachedDevice.onContextItemSelected(item);
return true;
}
- private LocalBluetoothDevice getDeviceFromMenuInfo(ContextMenuInfo menuInfo) {
+ private CachedBluetoothDevice getDeviceFromMenuInfo(ContextMenuInfo menuInfo) {
if ((menuInfo == null) || !(menuInfo instanceof AdapterContextMenuInfo)) {
return null;
}
-
+
AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) menuInfo;
Preference pref = (Preference) getPreferenceScreen().getRootAdapter().getItem(
adapterMenuInfo.position);
@@ -220,26 +303,58 @@
return null;
}
- return ((BluetoothDevicePreference) pref).getDevice();
+ return ((BluetoothDevicePreference) pref).getCachedDevice();
}
-
- public void onDeviceAdded(LocalBluetoothDevice device) {
- if (mDevicePreferenceMap.get(device) != null) {
- throw new IllegalStateException("Got onDeviceAdded, but device already exists");
+ public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
+
+ if (mDevicePreferenceMap.get(cachedDevice) != null) {
+ throw new IllegalStateException("Got onDeviceAdded, but cachedDevice already exists");
}
-
- createDevicePreference(device);
+
+ if (addDevicePreference(cachedDevice)) {
+ createDevicePreference(cachedDevice);
+ }
+ }
+
+ private boolean addDevicePreference(CachedBluetoothDevice cachedDevice) {
+ ParcelUuid[] uuids = cachedDevice.getDevice().getUuids();
+ BluetoothClass bluetoothClass = cachedDevice.getDevice().getBluetoothClass();
+
+ switch(mFilterType) {
+ case BluetoothDevicePicker.FILTER_TYPE_TRANSFER:
+ if (uuids != null)
+ if (BluetoothUuid.containsAnyUuid(uuids,
+ LocalBluetoothProfileManager.OPP_PROFILE_UUIDS)) return true;
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP)) return true;
+ break;
+ case BluetoothDevicePicker.FILTER_TYPE_AUDIO:
+ if (uuids != null) {
+ if (BluetoothUuid.containsAnyUuid(uuids,
+ LocalBluetoothProfileManager.A2DP_PROFILE_UUIDS)) return true;
+
+ if (BluetoothUuid.containsAnyUuid(uuids,
+ LocalBluetoothProfileManager.HEADSET_PROFILE_UUIDS)) return true;
+ } else {
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) return true;
+
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) return true;
+ }
+ break;
+ default:
+ return true;
+ }
+ return false;
}
- private void createDevicePreference(LocalBluetoothDevice device) {
- BluetoothDevicePreference preference = new BluetoothDevicePreference(this, device);
+ private void createDevicePreference(CachedBluetoothDevice cachedDevice) {
+ BluetoothDevicePreference preference = new BluetoothDevicePreference(this, cachedDevice);
mDeviceList.addPreference(preference);
- mDevicePreferenceMap.put(device, preference);
+ mDevicePreferenceMap.put(cachedDevice, preference);
}
-
- public void onDeviceDeleted(LocalBluetoothDevice device) {
- BluetoothDevicePreference preference = mDevicePreferenceMap.remove(device);
+
+ public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
+ BluetoothDevicePreference preference = mDevicePreferenceMap.remove(cachedDevice);
if (preference != null) {
mDeviceList.removePreference(preference);
}
@@ -248,14 +363,23 @@
public void onScanningStateChanged(boolean started) {
mDeviceList.setProgress(started);
}
-
+
private void onBluetoothStateChanged(int bluetoothState) {
// When bluetooth is enabled (and we are in the activity, which we are),
// we should start a scan
- if (bluetoothState == BluetoothDevice.BLUETOOTH_STATE_ON) {
+ if (bluetoothState == BluetoothAdapter.STATE_ON) {
mLocalManager.startScanning(false);
- } else if (bluetoothState == BluetoothDevice.BLUETOOTH_STATE_OFF) {
+ } else if (bluetoothState == BluetoothAdapter.STATE_OFF) {
mDeviceList.setProgress(false);
}
}
+
+ private void sendDevicePickedIntent(BluetoothDevice device) {
+ Intent intent = new Intent(BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+ if (mLaunchPackage != null && mLaunchClass != null) {
+ intent.setClassName(mLaunchPackage, mLaunchClass);
+ }
+ intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+ sendBroadcast(intent);
+ }
}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
similarity index 67%
rename from src/com/android/settings/bluetooth/LocalBluetoothDevice.java
rename to src/com/android/settings/bluetooth/CachedBluetoothDevice.java
index 5259d7b..1b45628 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothDevice.java
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java
@@ -17,12 +17,15 @@
package com.android.settings.bluetooth;
import android.app.AlertDialog;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.ParcelUuid;
+import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import android.view.ContextMenu;
@@ -40,25 +43,26 @@
import java.util.List;
/**
- * LocalBluetoothDevice represents a remote Bluetooth device. It contains
+ * CachedBluetoothDevice represents a remote Bluetooth device. It contains
* attributes of the device (such as the address, name, RSSI, etc.) and
* functionality that can be performed on the device (connect, pair, disconnect,
* etc.).
*/
-public class LocalBluetoothDevice implements Comparable<LocalBluetoothDevice> {
- private static final String TAG = "LocalBluetoothDevice";
+public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> {
+ private static final String TAG = "CachedBluetoothDevice";
private static final boolean D = LocalBluetoothManager.D;
private static final boolean V = LocalBluetoothManager.V;
+ private static final boolean DEBUG = false;
private static final int CONTEXT_ITEM_CONNECT = Menu.FIRST + 1;
private static final int CONTEXT_ITEM_DISCONNECT = Menu.FIRST + 2;
private static final int CONTEXT_ITEM_UNPAIR = Menu.FIRST + 3;
private static final int CONTEXT_ITEM_CONNECT_ADVANCED = Menu.FIRST + 4;
- private final String mAddress;
+ private final BluetoothDevice mDevice;
private String mName;
private short mRssi;
- private int mBtClass = BluetoothClass.ERROR;
+ private BluetoothClass mBtClass;
private List<Profile> mProfiles = new ArrayList<Profile>();
@@ -74,6 +78,17 @@
*/
private boolean mIsConnectingErrorPossible;
+ /**
+ * Last time a bt profile auto-connect was attempted.
+ * If an ACTION_UUID intent comes in within
+ * MAX_UUID_DELAY_FOR_AUTO_CONNECT milliseconds, we will try auto-connect
+ * again with the new UUIDs
+ */
+ private long mConnectAttempted;
+
+ // See mConnectAttempted
+ private static final long MAX_UUID_DELAY_FOR_AUTO_CONNECT = 5000;
+
// Max time to hold the work queue if we don't get or missed a response
// from the bt framework.
private static final long MAX_WAIT_TIME_FOR_FRAMEWORK = 25 * 1000;
@@ -82,26 +97,26 @@
CONNECT, DISCONNECT,
}
- class BluetoothJob {
+ static class BluetoothJob {
final BluetoothCommand command; // CONNECT, DISCONNECT
- final LocalBluetoothDevice device;
+ final CachedBluetoothDevice cachedDevice;
final Profile profile; // HEADSET, A2DP, etc
// 0 means this command was not been sent to the bt framework.
long timeSent;
public BluetoothJob(BluetoothCommand command,
- LocalBluetoothDevice device, Profile profile) {
+ CachedBluetoothDevice cachedDevice, Profile profile) {
this.command = command;
- this.device = device;
+ this.cachedDevice = cachedDevice;
this.profile = profile;
this.timeSent = 0;
}
-
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(command.name());
- sb.append(" Address:").append(device.mAddress);
+ sb.append(" Address:").append(cachedDevice.mDevice);
sb.append(" Profile:").append(profile.name());
sb.append(" TimeSent:");
if (timeSent == 0) {
@@ -147,7 +162,7 @@
}
}
}
-
+
private boolean pruneQueue(BluetoothJob job) {
boolean removedStaleItems = false;
long now = System.currentTimeMillis();
@@ -159,7 +174,7 @@
if (job != null && job.command == BluetoothCommand.DISCONNECT) {
if (existingJob.timeSent == 0
&& existingJob.command == BluetoothCommand.CONNECT
- && existingJob.device.mAddress.equals(job.device.mAddress)
+ && existingJob.cachedDevice.mDevice.equals(job.cachedDevice.mDevice)
&& existingJob.profile == job.profile) {
if (D) {
Log.d(TAG, "Removed because of a pending disconnect. " + existingJob);
@@ -186,13 +201,13 @@
private boolean processCommand(BluetoothJob job) {
boolean successful = false;
if (job.timeSent == 0) {
- job.timeSent = System.currentTimeMillis();
+ job.timeSent = System.currentTimeMillis();
switch (job.command) {
case CONNECT:
- successful = connectInt(job.device, job.profile);
+ successful = connectInt(job.cachedDevice, job.profile);
break;
case DISCONNECT:
- successful = disconnectInt(job.device, job.profile);
+ successful = disconnectInt(job.cachedDevice, job.profile);
break;
}
@@ -230,12 +245,12 @@
BluetoothJob job = workQueue.peek();
if (job == null) {
return;
- } else if (job.device.mAddress != mAddress) {
+ } else if (!job.cachedDevice.mDevice.equals(mDevice)) {
// This can happen in 2 cases: 1) BT device initiated pairing and
// 2) disconnects of one headset that's triggered by connects of
// another.
if (D) {
- Log.d(TAG, "mAddresses:" + mAddress + " != head:" + job.toString());
+ Log.d(TAG, "mDevice:" + mDevice + " != head:" + job.toString());
}
// Check to see if we need to remove the stale items from the queue
@@ -281,14 +296,14 @@
}
}
- LocalBluetoothDevice(Context context, String address) {
+ CachedBluetoothDevice(Context context, BluetoothDevice device) {
mLocalManager = LocalBluetoothManager.getInstance(context);
if (mLocalManager == null) {
throw new IllegalStateException(
- "Cannot use LocalBluetoothDevice without Bluetooth hardware");
+ "Cannot use CachedBluetoothDevice without Bluetooth hardware");
}
- mAddress = address;
+ mDevice = device;
fillData();
}
@@ -300,7 +315,7 @@
askDisconnect();
} else if (bondState == BluetoothDevice.BOND_BONDED) {
connect();
- } else if (bondState == BluetoothDevice.BOND_NOT_BONDED) {
+ } else if (bondState == BluetoothDevice.BOND_NONE) {
pair();
}
}
@@ -315,12 +330,12 @@
queueCommand(new BluetoothJob(BluetoothCommand.DISCONNECT, this, profile));
}
- private boolean disconnectInt(LocalBluetoothDevice device, Profile profile) {
+ private boolean disconnectInt(CachedBluetoothDevice cachedDevice, Profile profile) {
LocalBluetoothProfileManager profileManager =
LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
- int status = profileManager.getConnectionStatus(device.mAddress);
+ int status = profileManager.getConnectionStatus(cachedDevice.mDevice);
if (SettingsBtStatus.isConnectionStatusConnected(status)) {
- if (profileManager.disconnect(device.mAddress) == BluetoothDevice.RESULT_SUCCESS) {
+ if (profileManager.disconnect(cachedDevice.mDevice)) {
return true;
}
}
@@ -349,7 +364,7 @@
}
};
- AlertDialog ad = new AlertDialog.Builder(context)
+ new AlertDialog.Builder(context)
.setTitle(getName())
.setMessage(message)
.setPositiveButton(android.R.string.ok, disconnectListener)
@@ -360,59 +375,80 @@
public void connect() {
if (!ensurePaired()) return;
- // Reset the only-show-one-error-dialog tracking variable
- mIsConnectingErrorPossible = true;
+ mConnectAttempted = SystemClock.elapsedRealtime();
- Context context = mLocalManager.getContext();
- boolean hasAtLeastOnePreferredProfile = false;
- for (Profile profile : mProfiles) {
- LocalBluetoothProfileManager profileManager =
- LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
- if (profileManager.isPreferred(mAddress)) {
- hasAtLeastOnePreferredProfile = true;
- queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+ connectWithoutResettingTimer();
+ }
+
+ private void connectWithoutResettingTimer() {
+ // Try to initialize the profiles if there were not.
+ if (mProfiles.size() == 0) {
+ if (!updateProfiles()) {
+ // If UUIDs are not available yet, connect will be happen
+ // upon arrival of the ACTION_UUID intent.
+ if (DEBUG) Log.d(TAG, "No profiles. Maybe we will connect later");
+ return;
}
}
- if (!hasAtLeastOnePreferredProfile) {
- connectAndPreferAllProfiles();
+ // Reset the only-show-one-error-dialog tracking variable
+ mIsConnectingErrorPossible = true;
+
+ int preferredProfiles = 0;
+ for (Profile profile : mProfiles) {
+ if (isConnectableProfile(profile)) {
+ LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+ .getProfileManager(mLocalManager, profile);
+ if (profileManager.isPreferred(mDevice)) {
+ ++preferredProfiles;
+ queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+ }
+ }
+ }
+ if (DEBUG) Log.d(TAG, "Preferred profiles = " + preferredProfiles);
+
+ if (preferredProfiles == 0) {
+ connectAllProfiles();
}
}
- private void connectAndPreferAllProfiles() {
+ private void connectAllProfiles() {
if (!ensurePaired()) return;
// Reset the only-show-one-error-dialog tracking variable
mIsConnectingErrorPossible = true;
- Context context = mLocalManager.getContext();
for (Profile profile : mProfiles) {
- LocalBluetoothProfileManager profileManager =
- LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
- profileManager.setPreferred(mAddress, true);
- queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+ if (isConnectableProfile(profile)) {
+ LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+ .getProfileManager(mLocalManager, profile);
+ profileManager.setPreferred(mDevice, false);
+ queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
+ }
}
}
public void connect(Profile profile) {
+ mConnectAttempted = SystemClock.elapsedRealtime();
// Reset the only-show-one-error-dialog tracking variable
mIsConnectingErrorPossible = true;
queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile));
}
- private boolean connectInt(LocalBluetoothDevice device, Profile profile) {
- if (!device.ensurePaired()) return false;
+ private boolean connectInt(CachedBluetoothDevice cachedDevice, Profile profile) {
+ if (!cachedDevice.ensurePaired()) return false;
LocalBluetoothProfileManager profileManager =
LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile);
- int status = profileManager.getConnectionStatus(device.mAddress);
+ int status = profileManager.getConnectionStatus(cachedDevice.mDevice);
if (!SettingsBtStatus.isConnectionStatusConnected(status)) {
- if (profileManager.connect(device.mAddress) == BluetoothDevice.RESULT_SUCCESS) {
+ if (profileManager.connect(cachedDevice.mDevice)) {
return true;
}
- Log.i(TAG, "Failed to connect " + profile.toString() + " to " + device.mName);
+ Log.i(TAG, "Failed to connect " + profile.toString() + " to " + cachedDevice.mName);
+ } else {
+ Log.i(TAG, "Already connected");
}
- Log.i(TAG, "Not connected");
return false;
}
@@ -420,12 +456,12 @@
if (!mIsConnectingErrorPossible) return;
mIsConnectingErrorPossible = false;
- mLocalManager.showError(mAddress, R.string.bluetooth_error_title,
+ mLocalManager.showError(mDevice, R.string.bluetooth_error_title,
R.string.bluetooth_connecting_error_message);
}
private boolean ensurePaired() {
- if (getBondState() == BluetoothDevice.BOND_NOT_BONDED) {
+ if (getBondState() == BluetoothDevice.BOND_NONE) {
pair();
return false;
} else {
@@ -434,15 +470,15 @@
}
public void pair() {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
+ BluetoothAdapter adapter = mLocalManager.getBluetoothAdapter();
// Pairing is unreliable while scanning, so cancel discovery
- if (manager.isDiscovering()) {
- manager.cancelDiscovery();
+ if (adapter.isDiscovering()) {
+ adapter.cancelDiscovery();
}
- if (!mLocalManager.getBluetoothManager().createBond(mAddress)) {
- mLocalManager.showError(mAddress, R.string.bluetooth_error_title,
+ if (!mDevice.createBond()) {
+ mLocalManager.showError(mDevice, R.string.bluetooth_error_title,
R.string.bluetooth_pairing_error_message);
}
}
@@ -450,11 +486,11 @@
public void unpair() {
synchronized (workQueue) {
// Remove any pending commands for this device
- boolean processNow = false;
+ boolean processNow = false;
Iterator<BluetoothJob> it = workQueue.iterator();
while (it.hasNext()) {
BluetoothJob job = it.next();
- if (job.device.mAddress.equals(this.mAddress)) {
+ if (job.cachedDevice.mDevice.equals(this.mDevice)) {
it.remove();
if (job.timeSent != 0) {
processNow = true;
@@ -466,48 +502,57 @@
}
}
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
-
switch (getBondState()) {
case BluetoothDevice.BOND_BONDED:
- manager.removeBond(mAddress);
+ mDevice.removeBond();
break;
case BluetoothDevice.BOND_BONDING:
- manager.cancelBondProcess(mAddress);
+ mDevice.cancelBondProcess();
break;
}
}
private void fillData() {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
-
fetchName();
fetchBtClass();
+ updateProfiles();
mVisible = false;
dispatchAttributesChanged();
}
- public String getAddress() {
- return mAddress;
+ public BluetoothDevice getDevice() {
+ return mDevice;
}
public String getName() {
return mName;
}
+ public void setName(String name) {
+ if (!mName.equals(name)) {
+ if (TextUtils.isEmpty(name)) {
+ mName = mDevice.getAddress();
+ } else {
+ mName = name;
+ }
+ dispatchAttributesChanged();
+ }
+ }
+
public void refreshName() {
fetchName();
dispatchAttributesChanged();
}
private void fetchName() {
- mName = mLocalManager.getBluetoothManager().getRemoteName(mAddress);
+ mName = mDevice.getName();
if (TextUtils.isEmpty(mName)) {
- mName = mAddress;
+ mName = mDevice.getAddress();
+ if (DEBUG) Log.d(TAG, "Default to address. Device has no name (yet) " + mName);
}
}
@@ -527,7 +572,7 @@
}
public int getBondState() {
- return mLocalManager.getBluetoothManager().getBondState(mAddress);
+ return mDevice.getBondState();
}
void setRssi(short rssi) {
@@ -545,7 +590,7 @@
public boolean isConnected() {
for (Profile profile : mProfiles) {
int status = LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile)
- .getConnectionStatus(mAddress);
+ .getConnectionStatus(mDevice);
if (SettingsBtStatus.isConnectionStatusConnected(status)) {
return true;
}
@@ -557,7 +602,7 @@
public boolean isBusy() {
for (Profile profile : mProfiles) {
int status = LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile)
- .getConnectionStatus(mAddress);
+ .getConnectionStatus(mDevice);
if (SettingsBtStatus.isConnectionStatusBusy(status)) {
return true;
}
@@ -571,35 +616,78 @@
}
public int getBtClassDrawable() {
-
- // First try looking at profiles
- if (mProfiles.contains(Profile.A2DP)) {
- return R.drawable.ic_bt_headphones_a2dp;
- } else if (mProfiles.contains(Profile.HEADSET)) {
- return R.drawable.ic_bt_headset_hfp;
- }
-
- // Fallback on class
- switch (BluetoothClass.Device.Major.getDeviceMajor(mBtClass)) {
+ switch (mBtClass.getMajorDeviceClass()) {
case BluetoothClass.Device.Major.COMPUTER:
return R.drawable.ic_bt_laptop;
case BluetoothClass.Device.Major.PHONE:
return R.drawable.ic_bt_cellphone;
-
- default:
- return 0;
}
+
+ if (mProfiles.size() > 0) {
+ if (mProfiles.contains(Profile.A2DP)) {
+ return R.drawable.ic_bt_headphones_a2dp;
+ } else if (mProfiles.contains(Profile.HEADSET)) {
+ return R.drawable.ic_bt_headset_hfp;
+ }
+ } else {
+ if (mBtClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
+ return R.drawable.ic_bt_headphones_a2dp;
+
+ }
+ if (mBtClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
+ return R.drawable.ic_bt_headset_hfp;
+ }
+ }
+ return 0;
}
/**
* Fetches a new value for the cached BT class.
*/
private void fetchBtClass() {
- mBtClass = mLocalManager.getBluetoothManager().getRemoteClass(mAddress);
- if (mBtClass != BluetoothClass.ERROR) {
- LocalBluetoothProfileManager.fill(mBtClass, mProfiles);
+ mBtClass = mDevice.getBluetoothClass();
+ }
+
+ private boolean updateProfiles() {
+ ParcelUuid[] uuids = mDevice.getUuids();
+ if (uuids == null) return false;
+
+ LocalBluetoothProfileManager.updateProfiles(uuids, mProfiles);
+
+ if (DEBUG) {
+ Log.e(TAG, "updating profiles for " + mDevice.getName());
+
+ boolean printUuids = true;
+ BluetoothClass bluetoothClass = mDevice.getBluetoothClass();
+
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET) !=
+ mProfiles.contains(Profile.HEADSET)) {
+ Log.v(TAG, "headset classbits != uuid");
+ printUuids = true;
+ }
+
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_A2DP) !=
+ mProfiles.contains(Profile.A2DP)) {
+ Log.v(TAG, "a2dp classbits != uuid");
+ printUuids = true;
+ }
+
+ if (bluetoothClass.doesClassMatch(BluetoothClass.PROFILE_OPP) !=
+ mProfiles.contains(Profile.OPP)) {
+ Log.v(TAG, "opp classbits != uuid");
+ printUuids = true;
+ }
+
+ if (printUuids) {
+ Log.v(TAG, "Class: " + bluetoothClass.toString());
+ Log.v(TAG, "UUID:");
+ for (int i = 0; i < uuids.length; i++) {
+ Log.v(TAG, " " + uuids[i]);
+ }
+ }
}
+ return true;
}
/**
@@ -611,6 +699,43 @@
dispatchAttributesChanged();
}
+ /**
+ * Refreshes the UI when framework alerts us of a UUID change.
+ */
+ public void onUuidChanged() {
+ updateProfiles();
+
+ if (DEBUG) {
+ Log.e(TAG, "onUuidChanged: Time since last connect"
+ + (SystemClock.elapsedRealtime() - mConnectAttempted));
+ }
+
+ /*
+ * If a connect was attempted earlier without any UUID, we will do the
+ * connect now.
+ */
+ if (mProfiles.size() > 0
+ && (mConnectAttempted + MAX_UUID_DELAY_FOR_AUTO_CONNECT) > SystemClock
+ .elapsedRealtime()) {
+ connectWithoutResettingTimer();
+ }
+ dispatchAttributesChanged();
+ }
+
+ public void onBondingStateChanged(int bondState) {
+ if (bondState == BluetoothDevice.BOND_NONE) {
+ mProfiles.clear();
+ }
+ refresh();
+ }
+
+ public void setBtClass(BluetoothClass btClass) {
+ if (btClass != null && mBtClass != btClass) {
+ mBtClass = btClass;
+ dispatchAttributesChanged();
+ }
+ }
+
public int getSummary() {
// TODO: clean up
int oneOffSummary = getOneOffSummary();
@@ -621,7 +746,7 @@
for (Profile profile : mProfiles) {
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mLocalManager, profile);
- int connectionStatus = profileManager.getConnectionStatus(mAddress);
+ int connectionStatus = profileManager.getConnectionStatus(mDevice);
if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus) ||
connectionStatus == SettingsBtStatus.CONNECTION_STATUS_CONNECTING ||
@@ -645,17 +770,17 @@
if (mProfiles.contains(Profile.A2DP)) {
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mLocalManager, Profile.A2DP);
- isConnecting = profileManager.getConnectionStatus(mAddress) ==
+ isConnecting = profileManager.getConnectionStatus(mDevice) ==
SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
- isA2dpConnected = profileManager.isConnected(mAddress);
+ isA2dpConnected = profileManager.isConnected(mDevice);
}
if (mProfiles.contains(Profile.HEADSET)) {
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mLocalManager, Profile.HEADSET);
- isConnecting |= profileManager.getConnectionStatus(mAddress) ==
+ isConnecting |= profileManager.getConnectionStatus(mDevice) ==
SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
- isHeadsetConnected = profileManager.isConnected(mAddress);
+ isHeadsetConnected = profileManager.isConnected(mDevice);
}
if (isConnecting) {
@@ -673,40 +798,59 @@
}
}
- public List<Profile> getProfiles() {
- return new ArrayList<Profile>(mProfiles);
+ public List<Profile> getConnectableProfiles() {
+ ArrayList<Profile> connectableProfiles = new ArrayList<Profile>();
+ for (Profile profile : mProfiles) {
+ if (isConnectableProfile(profile)) {
+ connectableProfiles.add(profile);
+ }
+ }
+ return connectableProfiles;
+ }
+
+ private boolean isConnectableProfile(Profile profile) {
+ return profile.equals(Profile.HEADSET) || profile.equals(Profile.A2DP);
}
public void onCreateContextMenu(ContextMenu menu) {
// No context menu if it is busy (none of these items are applicable if busy)
- if (isBusy()) return;
+ if (mLocalManager.getBluetoothState() != BluetoothAdapter.STATE_ON || isBusy()) {
+ return;
+ }
int bondState = getBondState();
boolean isConnected = isConnected();
- boolean hasProfiles = mProfiles.size() > 0;
+ boolean hasConnectableProfiles = false;
+
+ for (Profile profile : mProfiles) {
+ if (isConnectableProfile(profile)) {
+ hasConnectableProfiles = true;
+ break;
+ }
+ }
menu.setHeaderTitle(getName());
- if (isConnected) {
- menu.add(0, CONTEXT_ITEM_DISCONNECT, 0, R.string.bluetooth_device_context_disconnect);
- } else if (hasProfiles) {
- // For connection action, show either "Connect" or "Pair & connect"
- int connectString = (bondState == BluetoothDevice.BOND_NOT_BONDED)
- ? R.string.bluetooth_device_context_pair_connect
- : R.string.bluetooth_device_context_connect;
- menu.add(0, CONTEXT_ITEM_CONNECT, 0, connectString);
- }
-
- if (bondState == BluetoothDevice.BOND_BONDED) {
- // For unpair action, show either "Unpair" or "Disconnect & unpair"
- int unpairString = isConnected
- ? R.string.bluetooth_device_context_disconnect_unpair
- : R.string.bluetooth_device_context_unpair;
- menu.add(0, CONTEXT_ITEM_UNPAIR, 0, unpairString);
+ if (bondState == BluetoothDevice.BOND_NONE) { // Not paired and not connected
+ menu.add(0, CONTEXT_ITEM_CONNECT, 0, R.string.bluetooth_device_context_pair_connect);
+ } else { // Paired
+ if (isConnected) { // Paired and connected
+ menu.add(0, CONTEXT_ITEM_DISCONNECT, 0,
+ R.string.bluetooth_device_context_disconnect);
+ menu.add(0, CONTEXT_ITEM_UNPAIR, 0,
+ R.string.bluetooth_device_context_disconnect_unpair);
+ } else { // Paired but not connected
+ if (hasConnectableProfiles) {
+ menu.add(0, CONTEXT_ITEM_CONNECT, 0, R.string.bluetooth_device_context_connect);
+ }
+ menu.add(0, CONTEXT_ITEM_UNPAIR, 0, R.string.bluetooth_device_context_unpair);
+ }
// Show the connection options item
- menu.add(0, CONTEXT_ITEM_CONNECT_ADVANCED, 0,
- R.string.bluetooth_device_context_connect_advanced);
+ if (hasConnectableProfiles) {
+ menu.add(0, CONTEXT_ITEM_CONNECT_ADVANCED, 0,
+ R.string.bluetooth_device_context_connect_advanced);
+ }
}
}
@@ -726,7 +870,6 @@
break;
case CONTEXT_ITEM_UNPAIR:
- mLocalManager.getBluetoothManager().disconnectRemoteDeviceAcl(mAddress);
unpair();
break;
@@ -740,7 +883,7 @@
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
intent.setClass(context, ConnectSpecificProfilesActivity.class);
- intent.putExtra(ConnectSpecificProfilesActivity.EXTRA_ADDRESS, mAddress);
+ intent.putExtra(ConnectSpecificProfilesActivity.EXTRA_DEVICE, mDevice);
context.startActivity(intent);
break;
}
@@ -768,24 +911,24 @@
@Override
public String toString() {
- return mAddress;
+ return mDevice.toString();
}
@Override
public boolean equals(Object o) {
- if ((o == null) || !(o instanceof LocalBluetoothDevice)) {
+ if ((o == null) || !(o instanceof CachedBluetoothDevice)) {
throw new ClassCastException();
}
- return mAddress.equals(((LocalBluetoothDevice) o).mAddress);
+ return mDevice.equals(((CachedBluetoothDevice) o).mDevice);
}
@Override
public int hashCode() {
- return mAddress.hashCode();
+ return mDevice.getAddress().hashCode();
}
- public int compareTo(LocalBluetoothDevice another) {
+ public int compareTo(CachedBluetoothDevice another) {
int comparison;
// Connected above not connected
@@ -810,6 +953,6 @@
}
public interface Callback {
- void onDeviceAttributesChanged(LocalBluetoothDevice device);
+ void onDeviceAttributesChanged(CachedBluetoothDevice cachedDevice);
}
}
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
new file mode 100644
index 0000000..c3dfc20
--- /dev/null
+++ b/src/com/android/settings/bluetooth/CachedBluetoothDeviceManager.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.util.Log;
+
+import com.android.settings.R;
+import com.android.settings.bluetooth.LocalBluetoothManager.Callback;
+import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * CachedBluetoothDeviceManager manages the set of remote Bluetooth devices.
+ */
+public class CachedBluetoothDeviceManager {
+ private static final String TAG = "CachedBluetoothDeviceManager";
+
+ final LocalBluetoothManager mLocalManager;
+ final List<Callback> mCallbacks;
+
+ final List<CachedBluetoothDevice> mCachedDevices = new ArrayList<CachedBluetoothDevice>();
+
+ public CachedBluetoothDeviceManager(LocalBluetoothManager localManager) {
+ mLocalManager = localManager;
+ mCallbacks = localManager.getCallbacks();
+ readPairedDevices();
+ }
+
+ private synchronized boolean readPairedDevices() {
+ BluetoothAdapter adapter = mLocalManager.getBluetoothAdapter();
+ Set<BluetoothDevice> bondedDevices = adapter.getBondedDevices();
+ if (bondedDevices == null) return false;
+
+ boolean deviceAdded = false;
+ for (BluetoothDevice device : bondedDevices) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) {
+ cachedDevice = new CachedBluetoothDevice(mLocalManager.getContext(), device);
+ mCachedDevices.add(cachedDevice);
+ dispatchDeviceAdded(cachedDevice);
+ deviceAdded = true;
+ }
+ }
+
+ return deviceAdded;
+ }
+
+ public synchronized List<CachedBluetoothDevice> getCachedDevicesCopy() {
+ return new ArrayList<CachedBluetoothDevice>(mCachedDevices);
+ }
+
+ void onBluetoothStateChanged(boolean enabled) {
+ if (enabled) {
+ readPairedDevices();
+ }
+ }
+
+ public synchronized void onDeviceAppeared(BluetoothDevice device, short rssi,
+ BluetoothClass btClass, String name) {
+ boolean deviceAdded = false;
+
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) {
+ cachedDevice = new CachedBluetoothDevice(mLocalManager.getContext(), device);
+ mCachedDevices.add(cachedDevice);
+ deviceAdded = true;
+ }
+ cachedDevice.setRssi(rssi);
+ cachedDevice.setBtClass(btClass);
+ cachedDevice.setName(name);
+ cachedDevice.setVisible(true);
+
+ if (deviceAdded) {
+ dispatchDeviceAdded(cachedDevice);
+ }
+ }
+
+ public synchronized void onDeviceDisappeared(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) return;
+
+ cachedDevice.setVisible(false);
+ checkForDeviceRemoval(cachedDevice);
+ }
+
+ private void checkForDeviceRemoval(CachedBluetoothDevice cachedDevice) {
+ if (cachedDevice.getBondState() == BluetoothDevice.BOND_NONE &&
+ !cachedDevice.isVisible()) {
+ // If device isn't paired, remove it altogether
+ mCachedDevices.remove(cachedDevice);
+ dispatchDeviceDeleted(cachedDevice);
+ }
+ }
+
+ public synchronized void onDeviceNameUpdated(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice != null) {
+ cachedDevice.refreshName();
+ }
+ }
+
+ public synchronized CachedBluetoothDevice findDevice(BluetoothDevice device) {
+
+ for (int i = mCachedDevices.size() - 1; i >= 0; i--) {
+ CachedBluetoothDevice cachedDevice = mCachedDevices.get(i);
+
+ if (cachedDevice.getDevice().equals(device)) {
+ return cachedDevice;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Attempts to get the name of a remote device, otherwise returns the address.
+ *
+ * @param device The remote device.
+ * @return The name, or if unavailable, the address.
+ */
+ public String getName(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice != null) return cachedDevice.getName();
+
+ String name = device.getName();
+ if (name != null) return name;
+
+ return device.getAddress();
+ }
+
+ private void dispatchDeviceAdded(CachedBluetoothDevice cachedDevice) {
+ synchronized (mCallbacks) {
+ for (Callback callback : mCallbacks) {
+ callback.onDeviceAdded(cachedDevice);
+ }
+ }
+
+ // TODO: divider between prev paired/connected and scanned
+ }
+
+ private void dispatchDeviceDeleted(CachedBluetoothDevice cachedDevice) {
+ synchronized (mCallbacks) {
+ for (Callback callback : mCallbacks) {
+ callback.onDeviceDeleted(cachedDevice);
+ }
+ }
+ }
+
+ public synchronized void onBondingStateChanged(BluetoothDevice device, int bondState) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) {
+ if (!readPairedDevices()) {
+ Log.e(TAG, "Got bonding state changed for " + device +
+ ", but we have no record of that device.");
+ return;
+ }
+ cachedDevice = findDevice(device);
+ if (cachedDevice == null) {
+ Log.e(TAG, "Got bonding state changed for " + device +
+ "but device not added in cache");
+ return;
+ }
+ }
+
+ cachedDevice.onBondingStateChanged(bondState);
+
+ if (bondState == BluetoothDevice.BOND_BONDED) {
+ // Auto-connect after pairing
+ cachedDevice.connect();
+ }
+ }
+
+ /**
+ * Called when we have reached the un-bond state.
+ *
+ * @param device The remote device.
+ * @param reason The reason, one of the error reasons from
+ * BluetoothDevice.UNBOND_REASON_*
+ */
+ public synchronized void showUnbondMessage(BluetoothDevice device, int reason) {
+ int errorMsg;
+
+ switch(reason) {
+ case BluetoothDevice.UNBOND_REASON_AUTH_FAILED:
+ errorMsg = R.string.bluetooth_pairing_pin_error_message;
+ mLocalManager.showError(device, R.string.bluetooth_error_title, errorMsg);
+ break;
+ case BluetoothDevice.UNBOND_REASON_AUTH_REJECTED:
+ errorMsg = R.string.bluetooth_pairing_rejected_error_message;
+ mLocalManager.showError(device, R.string.bluetooth_error_title, errorMsg);
+ break;
+ case BluetoothDevice.UNBOND_REASON_REMOTE_DEVICE_DOWN:
+ errorMsg = R.string.bluetooth_pairing_device_down_error_message;
+ mLocalManager.showError(device, R.string.bluetooth_error_title, errorMsg);
+ break;
+ case BluetoothDevice.UNBOND_REASON_DISCOVERY_IN_PROGRESS:
+ case BluetoothDevice.UNBOND_REASON_AUTH_TIMEOUT:
+ case BluetoothDevice.UNBOND_REASON_REPEATED_ATTEMPTS:
+ case BluetoothDevice.UNBOND_REASON_REMOTE_AUTH_CANCELED:
+ errorMsg = R.string.bluetooth_pairing_error_message;
+ mLocalManager.showError(device, R.string.bluetooth_error_title, errorMsg);
+ break;
+ default:
+ Log.w(TAG, "showUnbondMessage: Not displaying any message for reason:" + reason);
+ break;
+ }
+ }
+
+ public synchronized void onProfileStateChanged(BluetoothDevice device, Profile profile,
+ int newProfileState) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) return;
+
+ cachedDevice.onProfileStateChanged(profile, newProfileState);
+ cachedDevice.refresh();
+ }
+
+ public synchronized void onConnectingError(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice == null) return;
+
+ /*
+ * Go through the device's delegate so we don't spam the user with
+ * errors connecting to different profiles, and instead make sure the
+ * user sees a single error for his single 'connect' action.
+ */
+ cachedDevice.showConnectingError();
+ }
+
+ public synchronized void onScanningStateChanged(boolean started) {
+ if (!started) return;
+
+ // If starting a new scan, clear old visibility
+ for (int i = mCachedDevices.size() - 1; i >= 0; i--) {
+ CachedBluetoothDevice cachedDevice = mCachedDevices.get(i);
+ cachedDevice.setVisible(false);
+ checkForDeviceRemoval(cachedDevice);
+ }
+ }
+
+ public synchronized void onBtClassChanged(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice != null) {
+ cachedDevice.refreshBtClass();
+ }
+ }
+
+ public synchronized void onUuidChanged(BluetoothDevice device) {
+ CachedBluetoothDevice cachedDevice = findDevice(device);
+ if (cachedDevice != null) {
+ cachedDevice.onUuidChanged();
+ }
+ }
+}
diff --git a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
index 7dd1b70..08534f3 100644
--- a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
+++ b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
@@ -16,9 +16,7 @@
package com.android.settings.bluetooth;
-import com.android.settings.R;
-import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
-
+import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
@@ -28,24 +26,27 @@
import android.text.TextUtils;
import android.util.Log;
+import com.android.settings.R;
+import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+
/**
* ConnectSpecificProfilesActivity presents the user with all of the profiles
* for a particular device, and allows him to choose which should be connected
* (or disconnected).
*/
public class ConnectSpecificProfilesActivity extends PreferenceActivity
- implements LocalBluetoothDevice.Callback, Preference.OnPreferenceChangeListener {
+ implements CachedBluetoothDevice.Callback, Preference.OnPreferenceChangeListener {
private static final String TAG = "ConnectSpecificProfilesActivity";
private static final String KEY_ONLINE_MODE = "online_mode";
private static final String KEY_TITLE = "title";
private static final String KEY_PROFILE_CONTAINER = "profile_container";
- public static final String EXTRA_ADDRESS = "address";
-
+ public static final String EXTRA_DEVICE = "device";
+
private LocalBluetoothManager mManager;
- private LocalBluetoothDevice mDevice;
-
+ private CachedBluetoothDevice mCachedDevice;
+
private PreferenceGroup mProfileContainer;
private CheckBoxPreference mOnlineModePreference;
@@ -57,42 +58,42 @@
* profile.
*/
private boolean mOnlineMode;
-
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- String address;
+
+ BluetoothDevice device;
if (savedInstanceState != null) {
- address = savedInstanceState.getString(EXTRA_ADDRESS);
+ device = savedInstanceState.getParcelable(EXTRA_DEVICE);
} else {
Intent intent = getIntent();
- address = intent.getStringExtra(EXTRA_ADDRESS);
+ device = intent.getParcelableExtra(EXTRA_DEVICE);
}
- if (TextUtils.isEmpty(address)) {
- Log.w(TAG, "Activity started without address");
+ if (device == null) {
+ Log.w(TAG, "Activity started without a remote blueototh device");
finish();
}
-
+
mManager = LocalBluetoothManager.getInstance(this);
- mDevice = mManager.getLocalDeviceManager().findDevice(address);
- if (mDevice == null) {
+ mCachedDevice = mManager.getCachedDeviceManager().findDevice(device);
+ if (mCachedDevice == null) {
Log.w(TAG, "Device not found, cannot connect to it");
finish();
}
addPreferencesFromResource(R.xml.bluetooth_device_advanced);
mProfileContainer = (PreferenceGroup) findPreference(KEY_PROFILE_CONTAINER);
-
+
// Set the title of the screen
findPreference(KEY_TITLE).setTitle(
- getString(R.string.bluetooth_device_advanced_title, mDevice.getName()));
+ getString(R.string.bluetooth_device_advanced_title, mCachedDevice.getName()));
// Listen for check/uncheck of the online mode checkbox
mOnlineModePreference = (CheckBoxPreference) findPreference(KEY_ONLINE_MODE);
mOnlineModePreference.setOnPreferenceChangeListener(this);
-
+
// Add a preference for each profile
addPreferencesForProfiles();
}
@@ -100,16 +101,16 @@
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
-
- outState.putString(EXTRA_ADDRESS, mDevice.getAddress());
+
+ outState.putParcelable(EXTRA_DEVICE, mCachedDevice.getDevice());
}
@Override
protected void onResume() {
super.onResume();
-
+
mManager.setForegroundActivity(this);
- mDevice.registerCallback(this);
+ mCachedDevice.registerCallback(this);
refresh();
}
@@ -117,13 +118,13 @@
@Override
protected void onPause() {
super.onPause();
-
- mDevice.unregisterCallback(this);
+
+ mCachedDevice.unregisterCallback(this);
mManager.setForegroundActivity(null);
}
private void addPreferencesForProfiles() {
- for (Profile profile : mDevice.getProfiles()) {
+ for (Profile profile : mCachedDevice.getConnectableProfiles()) {
Preference pref = createProfilePreference(profile);
mProfileContainer.addPreference(pref);
}
@@ -132,7 +133,7 @@
/**
* Creates a checkbox preference for the particular profile. The key will be
* the profile's name.
- *
+ *
* @param profile The profile for which the preference controls.
* @return A preference that allows the user to choose whether this profile
* will be connected to.
@@ -144,18 +145,26 @@
pref.setPersistent(false);
pref.setOnPreferenceChangeListener(this);
+ LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+ .getProfileManager(mManager, profile);
+
+ /**
+ * Gray out checkbox while connecting and disconnecting
+ */
+ pref.setEnabled(!mCachedDevice.isBusy());
+
refreshProfilePreference(pref, profile);
-
+
return pref;
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
if (TextUtils.isEmpty(key) || newValue == null) return true;
-
+
if (key.equals(KEY_ONLINE_MODE)) {
onOnlineModeCheckedStateChanged((Boolean) newValue);
-
+
} else {
Profile profile = getProfileOf(preference);
if (profile == null) return false;
@@ -168,68 +177,68 @@
private void onOnlineModeCheckedStateChanged(boolean checked) {
setOnlineMode(checked, true);
}
-
+
private void onProfileCheckedStateChanged(Profile profile, boolean checked) {
if (mOnlineMode) {
if (checked) {
- mDevice.connect(profile);
+ mCachedDevice.connect(profile);
} else {
- mDevice.disconnect(profile);
+ mCachedDevice.disconnect(profile);
}
}
-
+
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mManager, profile);
- profileManager.setPreferred(mDevice.getAddress(), checked);
+ profileManager.setPreferred(mCachedDevice.getDevice(), checked);
}
-
- public void onDeviceAttributesChanged(LocalBluetoothDevice device) {
+
+ public void onDeviceAttributesChanged(CachedBluetoothDevice cachedDevice) {
refresh();
}
private void refresh() {
// We are in 'online mode' if we are connected, connecting, or disconnecting
- setOnlineMode(mDevice.isConnected() || mDevice.isBusy(), false);
+ setOnlineMode(mCachedDevice.isConnected() || mCachedDevice.isBusy(), false);
refreshProfiles();
}
/**
* Switches between online/offline mode.
- *
+ *
* @param onlineMode Whether to be in online mode, or offline mode.
* @param takeAction Whether to take action (i.e., connect or disconnect)
* based on the new online mode.
*/
private void setOnlineMode(boolean onlineMode, boolean takeAction) {
mOnlineMode = onlineMode;
-
+
if (takeAction) {
if (onlineMode) {
- mDevice.connect();
+ mCachedDevice.connect();
} else {
- mDevice.disconnect();
+ mCachedDevice.disconnect();
}
}
-
+
refreshOnlineModePreference();
}
-
+
private void refreshOnlineModePreference() {
mOnlineModePreference.setChecked(mOnlineMode);
/* Gray out checkbox while connecting and disconnecting */
- mOnlineModePreference.setEnabled(!mDevice.isBusy());
+ mOnlineModePreference.setEnabled(!mCachedDevice.isBusy());
/**
* If the device is online, show status. Otherwise, show a summary that
* describes what the checkbox does.
*/
- mOnlineModePreference.setSummary(mOnlineMode ? mDevice.getSummary()
+ mOnlineModePreference.setSummary(mOnlineMode ? mCachedDevice.getSummary()
: R.string.bluetooth_device_advanced_online_mode_summary);
}
-
+
private void refreshProfiles() {
- for (Profile profile : mDevice.getProfiles()) {
+ for (Profile profile : mCachedDevice.getConnectableProfiles()) {
CheckBoxPreference profilePref =
(CheckBoxPreference) findPreference(profile.toString());
if (profilePref == null) {
@@ -240,28 +249,29 @@
}
}
}
-
+
private void refreshProfilePreference(CheckBoxPreference profilePref, Profile profile) {
- String address = mDevice.getAddress();
+ BluetoothDevice device = mCachedDevice.getDevice();
LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
.getProfileManager(mManager, profile);
-
- int connectionStatus = profileManager.getConnectionStatus(address);
- /* Gray out checkbox while connecting and disconnecting */
- profilePref.setEnabled(!mDevice.isBusy());
+ int connectionStatus = profileManager.getConnectionStatus(device);
- profilePref.setSummary(getProfileSummary(profileManager, profile, address,
+ /*
+ * Gray out checkbox while connecting and disconnecting
+ */
+ profilePref.setEnabled(!mCachedDevice.isBusy());
+ profilePref.setSummary(getProfileSummary(profileManager, profile, device,
connectionStatus, mOnlineMode));
-
- profilePref.setChecked(profileManager.isPreferred(address));
+
+ profilePref.setChecked(profileManager.isPreferred(device));
}
private Profile getProfileOf(Preference pref) {
if (!(pref instanceof CheckBoxPreference)) return null;
String key = pref.getKey();
if (TextUtils.isEmpty(key)) return null;
-
+
try {
return Profile.valueOf(pref.getKey());
} catch (IllegalArgumentException e) {
@@ -270,17 +280,17 @@
}
private static int getProfileSummary(LocalBluetoothProfileManager profileManager,
- Profile profile, String address, int connectionStatus, boolean onlineMode) {
+ Profile profile, BluetoothDevice device, int connectionStatus, boolean onlineMode) {
if (!onlineMode || connectionStatus == SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED) {
return getProfileSummaryForSettingPreference(profile);
} else {
- return profileManager.getSummary(address);
+ return profileManager.getSummary(device);
}
}
-
+
/**
* Gets the summary that describes when checked, it will become a preferred profile.
- *
+ *
* @param profile The profile to get the summary for.
* @return The summary.
*/
@@ -294,5 +304,5 @@
return 0;
}
}
-
+
}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java
deleted file mode 100644
index 2c70fd2..0000000
--- a/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.bluetooth;
-
-import android.bluetooth.BluetoothDevice;
-import android.util.Log;
-
-import com.android.settings.R;
-import com.android.settings.bluetooth.LocalBluetoothManager.Callback;
-import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * LocalBluetoothDeviceManager manages the set of remote Bluetooth devices.
- */
-public class LocalBluetoothDeviceManager {
- private static final String TAG = "LocalBluetoothDeviceManager";
-
- final LocalBluetoothManager mLocalManager;
- final List<Callback> mCallbacks;
-
- final List<LocalBluetoothDevice> mDevices = new ArrayList<LocalBluetoothDevice>();
-
- public LocalBluetoothDeviceManager(LocalBluetoothManager localManager) {
- mLocalManager = localManager;
- mCallbacks = localManager.getCallbacks();
- readPairedDevices();
- }
-
- private synchronized boolean readPairedDevices() {
- BluetoothDevice manager = mLocalManager.getBluetoothManager();
- String[] bondedAddresses = manager.listBonds();
- if (bondedAddresses == null) return false;
-
- boolean deviceAdded = false;
- for (String address : bondedAddresses) {
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) {
- device = new LocalBluetoothDevice(mLocalManager.getContext(), address);
- mDevices.add(device);
- dispatchDeviceAdded(device);
- deviceAdded = true;
- }
- }
-
- return deviceAdded;
- }
-
- public synchronized List<LocalBluetoothDevice> getDevicesCopy() {
- return new ArrayList<LocalBluetoothDevice>(mDevices);
- }
-
- void onBluetoothStateChanged(boolean enabled) {
- if (enabled) {
- readPairedDevices();
- }
- }
-
- public synchronized void onDeviceAppeared(String address, short rssi) {
- boolean deviceAdded = false;
-
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) {
- device = new LocalBluetoothDevice(mLocalManager.getContext(), address);
- mDevices.add(device);
- deviceAdded = true;
- }
-
- device.setRssi(rssi);
- device.setVisible(true);
-
- if (deviceAdded) {
- dispatchDeviceAdded(device);
- }
- }
-
- public synchronized void onDeviceDisappeared(String address) {
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) return;
-
- device.setVisible(false);
- checkForDeviceRemoval(device);
- }
-
- private void checkForDeviceRemoval(LocalBluetoothDevice device) {
- if (device.getBondState() == BluetoothDevice.BOND_NOT_BONDED &&
- !device.isVisible()) {
- // If device isn't paired, remove it altogether
- mDevices.remove(device);
- dispatchDeviceDeleted(device);
- }
- }
-
- public synchronized void onDeviceNameUpdated(String address) {
- LocalBluetoothDevice device = findDevice(address);
- if (device != null) {
- device.refreshName();
- }
- }
-
- public synchronized LocalBluetoothDevice findDevice(String address) {
-
- for (int i = mDevices.size() - 1; i >= 0; i--) {
- LocalBluetoothDevice device = mDevices.get(i);
-
- if (device.getAddress().equals(address)) {
- return device;
- }
- }
-
- return null;
- }
-
- /**
- * Attempts to get the name of a remote device, otherwise returns the address.
- *
- * @param address The address.
- * @return The name, or if unavailable, the address.
- */
- public String getName(String address) {
- LocalBluetoothDevice device = findDevice(address);
- return device != null ? device.getName() : address;
- }
-
- private void dispatchDeviceAdded(LocalBluetoothDevice device) {
- synchronized (mCallbacks) {
- for (Callback callback : mCallbacks) {
- callback.onDeviceAdded(device);
- }
- }
-
- // TODO: divider between prev paired/connected and scanned
- }
-
- private void dispatchDeviceDeleted(LocalBluetoothDevice device) {
- synchronized (mCallbacks) {
- for (Callback callback : mCallbacks) {
- callback.onDeviceDeleted(device);
- }
- }
- }
-
- public synchronized void onBondingStateChanged(String address, int bondState) {
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) {
- if (!readPairedDevices()) {
- Log.e(TAG, "Got bonding state changed for " + address +
- ", but we have no record of that device.");
- }
- return;
- }
-
- device.refresh();
-
- if (bondState == BluetoothDevice.BOND_BONDED) {
- // Auto-connect after pairing
- device.connect();
- }
- }
-
- /**
- * Called when there is a bonding error.
- *
- * @param address The address of the remote device.
- * @param reason The reason, one of the error reasons from
- * BluetoothDevice.UNBOND_REASON_*
- */
- public synchronized void onBondingError(String address, int reason) {
- int errorMsg;
-
- switch(reason) {
- case BluetoothDevice.UNBOND_REASON_AUTH_FAILED:
- errorMsg = R.string.bluetooth_pairing_pin_error_message;
- break;
- case BluetoothDevice.UNBOND_REASON_AUTH_REJECTED:
- errorMsg = R.string.bluetooth_pairing_rejected_error_message;
- break;
- case BluetoothDevice.UNBOND_REASON_REMOTE_DEVICE_DOWN:
- errorMsg = R.string.bluetooth_pairing_device_down_error_message;
- break;
- default:
- errorMsg = R.string.bluetooth_pairing_error_message;
- }
- mLocalManager.showError(address, R.string.bluetooth_error_title, errorMsg);
- }
-
- public synchronized void onProfileStateChanged(String address, Profile profile,
- int newProfileState) {
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) return;
-
- device.onProfileStateChanged(profile, newProfileState);
- device.refresh();
- }
-
- public synchronized void onConnectingError(String address) {
- LocalBluetoothDevice device = findDevice(address);
- if (device == null) return;
-
- /*
- * Go through the device's delegate so we don't spam the user with
- * errors connecting to different profiles, and instead make sure the
- * user sees a single error for his single 'connect' action.
- */
- device.showConnectingError();
- }
-
- public synchronized void onScanningStateChanged(boolean started) {
- if (!started) return;
-
- // If starting a new scan, clear old visibility
- for (int i = mDevices.size() - 1; i >= 0; i--) {
- LocalBluetoothDevice device = mDevices.get(i);
- device.setVisible(false);
- checkForDeviceRemoval(device);
- }
- }
-
- public synchronized void onBtClassChanged(String address) {
- LocalBluetoothDevice device = findDevice(address);
- if (device != null) {
- device.refreshBtClass();
- }
- }
-}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
index 2e84338..f131579 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
@@ -20,13 +20,13 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import android.app.Activity;
import android.app.AlertDialog;
import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothError;
-import android.bluetooth.BluetoothIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -42,43 +42,45 @@
public class LocalBluetoothManager {
private static final String TAG = "LocalBluetoothManager";
static final boolean V = Config.LOGV;
- static final boolean D = Config.LOGD && false;
-
+ static final boolean D = Config.LOGD;
+
private static final String SHARED_PREFERENCES_NAME = "bluetooth_settings";
-
+
private static LocalBluetoothManager INSTANCE;
/** Used when obtaining a reference to the singleton instance. */
private static Object INSTANCE_LOCK = new Object();
private boolean mInitialized;
-
+
private Context mContext;
/** If a BT-related activity is in the foreground, this will be it. */
private Activity mForegroundActivity;
private AlertDialog mErrorDialog = null;
- private BluetoothDevice mManager;
+ private BluetoothAdapter mAdapter;
- private LocalBluetoothDeviceManager mLocalDeviceManager;
+ private CachedBluetoothDeviceManager mCachedDeviceManager;
private BluetoothEventRedirector mEventRedirector;
private BluetoothA2dp mBluetoothA2dp;
-
- private int mState = BluetoothError.ERROR;
+
+ private int mState = BluetoothAdapter.ERROR;
private List<Callback> mCallbacks = new ArrayList<Callback>();
-
+
private static final int SCAN_EXPIRATION_MS = 5 * 60 * 1000; // 5 mins
private long mLastScan;
-
+
public static LocalBluetoothManager getInstance(Context context) {
synchronized (INSTANCE_LOCK) {
if (INSTANCE == null) {
INSTANCE = new LocalBluetoothManager();
}
-
+
if (!INSTANCE.init(context)) {
return null;
}
-
+
+ LocalBluetoothProfileManager.init(INSTANCE);
+
return INSTANCE;
}
}
@@ -86,16 +88,16 @@
private boolean init(Context context) {
if (mInitialized) return true;
mInitialized = true;
-
+
// This will be around as long as this process is
mContext = context.getApplicationContext();
-
- mManager = (BluetoothDevice) context.getSystemService(Context.BLUETOOTH_SERVICE);
- if (mManager == null) {
+
+ mAdapter = BluetoothAdapter.getDefaultAdapter();
+ if (mAdapter == null) {
return false;
}
-
- mLocalDeviceManager = new LocalBluetoothDeviceManager(this);
+
+ mCachedDeviceManager = new CachedBluetoothDeviceManager(this);
mEventRedirector = new BluetoothEventRedirector(this);
mEventRedirector.start();
@@ -104,11 +106,11 @@
return true;
}
-
- public BluetoothDevice getBluetoothManager() {
- return mManager;
+
+ public BluetoothAdapter getBluetoothAdapter() {
+ return mAdapter;
}
-
+
public Context getContext() {
return mContext;
}
@@ -116,7 +118,7 @@
public Activity getForegroundActivity() {
return mForegroundActivity;
}
-
+
public void setForegroundActivity(Activity activity) {
if (mErrorDialog != null) {
mErrorDialog.dismiss();
@@ -124,39 +126,39 @@
}
mForegroundActivity = activity;
}
-
+
public SharedPreferences getSharedPreferences() {
return mContext.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
}
-
- public LocalBluetoothDeviceManager getLocalDeviceManager() {
- return mLocalDeviceManager;
+
+ public CachedBluetoothDeviceManager getCachedDeviceManager() {
+ return mCachedDeviceManager;
}
-
+
List<Callback> getCallbacks() {
return mCallbacks;
}
-
+
public void registerCallback(Callback callback) {
synchronized (mCallbacks) {
mCallbacks.add(callback);
}
}
-
+
public void unregisterCallback(Callback callback) {
synchronized (mCallbacks) {
mCallbacks.remove(callback);
}
}
-
+
public void startScanning(boolean force) {
- if (mManager.isDiscovering()) {
+ if (mAdapter.isDiscovering()) {
/*
* Already discovering, but give the callback that information.
* Note: we only call the callbacks, not the same path as if the
* scanning state had really changed (in that case the device
* manager would clear its list of unpaired scanned devices).
- */
+ */
dispatchScanningStateChanged(true);
} else {
if (!force) {
@@ -167,48 +169,49 @@
}
// If we are playing music, don't scan unless forced.
- List<String> sinks = mBluetoothA2dp.listConnectedSinks();
+ Set<BluetoothDevice> sinks = mBluetoothA2dp.getConnectedSinks();
if (sinks != null) {
- for (String address : sinks) {
- if (mBluetoothA2dp.getSinkState(address) == BluetoothA2dp.STATE_PLAYING) {
+ for (BluetoothDevice sink : sinks) {
+ if (mBluetoothA2dp.getSinkState(sink) == BluetoothA2dp.STATE_PLAYING) {
return;
}
}
}
}
-
- if (mManager.startDiscovery(true)) {
+
+ if (mAdapter.startDiscovery()) {
mLastScan = System.currentTimeMillis();
}
}
}
-
+
public int getBluetoothState() {
-
- if (mState == BluetoothError.ERROR) {
+
+ if (mState == BluetoothAdapter.ERROR) {
syncBluetoothState();
}
-
+
return mState;
}
-
+
void setBluetoothStateInt(int state) {
mState = state;
- if (state == BluetoothDevice.BLUETOOTH_STATE_ON ||
- state == BluetoothDevice.BLUETOOTH_STATE_OFF) {
- mLocalDeviceManager.onBluetoothStateChanged(state == BluetoothDevice.BLUETOOTH_STATE_ON);
+ if (state == BluetoothAdapter.STATE_ON ||
+ state == BluetoothAdapter.STATE_OFF) {
+ mCachedDeviceManager.onBluetoothStateChanged(state ==
+ BluetoothAdapter.STATE_ON);
}
}
-
+
private void syncBluetoothState() {
int bluetoothState;
- if (mManager != null) {
- bluetoothState = mManager.isEnabled()
- ? BluetoothDevice.BLUETOOTH_STATE_ON
- : BluetoothDevice.BLUETOOTH_STATE_OFF;
+ if (mAdapter != null) {
+ bluetoothState = mAdapter.isEnabled()
+ ? BluetoothAdapter.STATE_ON
+ : BluetoothAdapter.STATE_OFF;
} else {
- bluetoothState = BluetoothError.ERROR;
+ bluetoothState = BluetoothAdapter.ERROR;
}
setBluetoothStateInt(bluetoothState);
@@ -216,33 +219,33 @@
public void setBluetoothEnabled(boolean enabled) {
boolean wasSetStateSuccessful = enabled
- ? mManager.enable()
- : mManager.disable();
-
+ ? mAdapter.enable()
+ : mAdapter.disable();
+
if (wasSetStateSuccessful) {
setBluetoothStateInt(enabled
- ? BluetoothDevice.BLUETOOTH_STATE_TURNING_ON
- : BluetoothDevice.BLUETOOTH_STATE_TURNING_OFF);
+ ? BluetoothAdapter.STATE_TURNING_ON
+ : BluetoothAdapter.STATE_TURNING_OFF);
} else {
if (V) {
Log.v(TAG,
"setBluetoothEnabled call, manager didn't return success for enabled: "
+ enabled);
}
-
+
syncBluetoothState();
}
}
-
+
/**
* @param started True if scanning started, false if scanning finished.
*/
void onScanningStateChanged(boolean started) {
// TODO: have it be a callback (once we switch bluetooth state changed to callback)
- mLocalDeviceManager.onScanningStateChanged(started);
+ mCachedDeviceManager.onScanningStateChanged(started);
dispatchScanningStateChanged(started);
}
-
+
private void dispatchScanningStateChanged(boolean started) {
synchronized (mCallbacks) {
for (Callback callback : mCallbacks) {
@@ -251,11 +254,18 @@
}
}
- public void showError(String address, int titleResId, int messageResId) {
- LocalBluetoothDevice device = mLocalDeviceManager.findDevice(address);
- if (device == null) return;
+ public void showError(BluetoothDevice device, int titleResId, int messageResId) {
+ CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(device);
+ String name = null;
+ if (cachedDevice == null) {
+ if (device != null) name = device.getName();
- String name = device.getName();
+ if (name == null) {
+ name = mContext.getString(R.string.bluetooth_remote_device);
+ }
+ } else {
+ name = cachedDevice.getName();
+ }
String message = mContext.getString(messageResId, name);
if (mForegroundActivity != null) {
@@ -267,15 +277,15 @@
.setPositiveButton(android.R.string.ok, null)
.show();
} else {
- // Fallback on a toast
- Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
+ // Fallback on a toast
+ Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
}
}
public interface Callback {
void onScanningStateChanged(boolean started);
- void onDeviceAdded(LocalBluetoothDevice device);
- void onDeviceDeleted(LocalBluetoothDevice device);
+ void onDeviceAdded(CachedBluetoothDevice cachedDevice);
+ void onDeviceDeleted(CachedBluetoothDevice cachedDevice);
}
-
+
}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
index b396732..a6258e2 100644
--- a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
+++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
@@ -17,145 +17,176 @@
package com.android.settings.bluetooth;
import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothError;
+import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothUuid;
+import android.os.ParcelUuid;
import android.os.Handler;
-import android.text.TextUtils;
+import android.util.Log;
import com.android.settings.R;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* LocalBluetoothProfileManager is an abstract class defining the basic
* functionality related to a profile.
*/
public abstract class LocalBluetoothProfileManager {
+ private static final String TAG = "LocalBluetoothProfileManager";
+
+ /* package */ static final ParcelUuid[] HEADSET_PROFILE_UUIDS = new ParcelUuid[] {
+ BluetoothUuid.HSP,
+ BluetoothUuid.Handsfree,
+ };
+
+ /* package */ static final ParcelUuid[] A2DP_PROFILE_UUIDS = new ParcelUuid[] {
+ BluetoothUuid.AudioSink,
+ BluetoothUuid.AdvAudioDist,
+ };
+
+ /* package */ static final ParcelUuid[] OPP_PROFILE_UUIDS = new ParcelUuid[] {
+ BluetoothUuid.ObexObjectPush
+ };
// TODO: close profiles when we're shutting down
private static Map<Profile, LocalBluetoothProfileManager> sProfileMap =
- new HashMap<Profile, LocalBluetoothProfileManager>();
-
+ new HashMap<Profile, LocalBluetoothProfileManager>();
+
protected LocalBluetoothManager mLocalManager;
-
- public static LocalBluetoothProfileManager getProfileManager(LocalBluetoothManager localManager,
- Profile profile) {
-
- LocalBluetoothProfileManager profileManager;
-
+
+ public static void init(LocalBluetoothManager localManager) {
synchronized (sProfileMap) {
- profileManager = sProfileMap.get(profile);
-
- if (profileManager == null) {
- switch (profile) {
- case A2DP:
- profileManager = new A2dpProfileManager(localManager);
- break;
-
- case HEADSET:
- profileManager = new HeadsetProfileManager(localManager);
- break;
- }
-
- sProfileMap.put(profile, profileManager);
+ if (sProfileMap.size() == 0) {
+ LocalBluetoothProfileManager profileManager;
+
+ profileManager = new A2dpProfileManager(localManager);
+ sProfileMap.put(Profile.A2DP, profileManager);
+
+ profileManager = new HeadsetProfileManager(localManager);
+ sProfileMap.put(Profile.HEADSET, profileManager);
+
+ profileManager = new OppProfileManager(localManager);
+ sProfileMap.put(Profile.OPP, profileManager);
}
}
-
- return profileManager;
+ }
+
+ public static LocalBluetoothProfileManager getProfileManager(LocalBluetoothManager localManager,
+ Profile profile) {
+ // Note: This code assumes that "localManager" is same as the
+ // LocalBluetoothManager that was used to initialize the sProfileMap.
+ // If that every changes, we can't just keep one copy of sProfileMap.
+ synchronized (sProfileMap) {
+ LocalBluetoothProfileManager profileManager = sProfileMap.get(profile);
+ if (profileManager == null) {
+ Log.e(TAG, "profileManager can't be found for " + profile.toString());
+ }
+ return profileManager;
+ }
}
/**
* Temporary method to fill profiles based on a device's class.
- *
+ *
* NOTE: This list happens to define the connection order. We should put this logic in a more
* well known place when this method is no longer temporary.
- *
- * @param btClass The class
+ * @param uuids of the remote device
* @param profiles The list of profiles to fill
*/
- public static void fill(int btClass, List<Profile> profiles) {
+ public static void updateProfiles(ParcelUuid[] uuids, List<Profile> profiles) {
profiles.clear();
- if (BluetoothHeadset.doesClassMatch(btClass)) {
+ if (uuids == null) {
+ return;
+ }
+
+ if (BluetoothUuid.containsAnyUuid(uuids, HEADSET_PROFILE_UUIDS)) {
profiles.add(Profile.HEADSET);
}
-
- if (BluetoothA2dp.doesClassMatchSink(btClass)) {
+
+ if (BluetoothUuid.containsAnyUuid(uuids, A2DP_PROFILE_UUIDS)) {
profiles.add(Profile.A2DP);
}
+
+ if (BluetoothUuid.containsAnyUuid(uuids, OPP_PROFILE_UUIDS)) {
+ profiles.add(Profile.OPP);
+ }
}
protected LocalBluetoothProfileManager(LocalBluetoothManager localManager) {
mLocalManager = localManager;
}
-
- public abstract int connect(String address);
-
- public abstract int disconnect(String address);
-
- public abstract int getConnectionStatus(String address);
- public abstract int getSummary(String address);
+ public abstract boolean connect(BluetoothDevice device);
+
+ public abstract boolean disconnect(BluetoothDevice device);
+
+ public abstract int getConnectionStatus(BluetoothDevice device);
+
+ public abstract int getSummary(BluetoothDevice device);
public abstract int convertState(int a2dpState);
-
- public abstract boolean isPreferred(String address);
- public abstract void setPreferred(String address, boolean preferred);
+ public abstract boolean isPreferred(BluetoothDevice device);
- public boolean isConnected(String address) {
- return SettingsBtStatus.isConnectionStatusConnected(getConnectionStatus(address));
+ public abstract void setPreferred(BluetoothDevice device, boolean preferred);
+
+ public boolean isConnected(BluetoothDevice device) {
+ return SettingsBtStatus.isConnectionStatusConnected(getConnectionStatus(device));
}
-
+
// TODO: int instead of enum
public enum Profile {
HEADSET(R.string.bluetooth_profile_headset),
- A2DP(R.string.bluetooth_profile_a2dp);
-
+ A2DP(R.string.bluetooth_profile_a2dp),
+ OPP(R.string.bluetooth_profile_opp);
+
public final int localizedString;
-
+
private Profile(int localizedString) {
this.localizedString = localizedString;
}
}
/**
- * A2dpProfileManager is an abstraction for the {@link BluetoothA2dp} service.
+ * A2dpProfileManager is an abstraction for the {@link BluetoothA2dp} service.
*/
private static class A2dpProfileManager extends LocalBluetoothProfileManager {
private BluetoothA2dp mService;
-
+
public A2dpProfileManager(LocalBluetoothManager localManager) {
super(localManager);
mService = new BluetoothA2dp(localManager.getContext());
}
@Override
- public int connect(String address) {
- List<String> sinks = mService.listConnectedSinks();
+ public boolean connect(BluetoothDevice device) {
+ Set<BluetoothDevice> sinks = mService.getConnectedSinks();
if (sinks != null) {
- for (String sinkAddress : sinks) {
- mService.disconnectSink(sinkAddress);
+ for (BluetoothDevice sink : sinks) {
+ mService.disconnectSink(sink);
}
}
- return mService.connectSink(address);
+ return mService.connectSink(device);
}
@Override
- public int disconnect(String address) {
- return mService.disconnectSink(address);
+ public boolean disconnect(BluetoothDevice device) {
+ return mService.disconnectSink(device);
}
-
+
@Override
- public int getConnectionStatus(String address) {
- return convertState(mService.getSinkState(address));
+ public int getConnectionStatus(BluetoothDevice device) {
+ return convertState(mService.getSinkState(device));
}
-
+
@Override
- public int getSummary(String address) {
- int connectionStatus = getConnectionStatus(address);
+ public int getSummary(BluetoothDevice device) {
+ int connectionStatus = getConnectionStatus(device);
if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
return R.string.bluetooth_a2dp_profile_summary_connected;
@@ -165,13 +196,13 @@
}
@Override
- public boolean isPreferred(String address) {
- return mService.getSinkPriority(address) > BluetoothA2dp.PRIORITY_OFF;
+ public boolean isPreferred(BluetoothDevice device) {
+ return mService.getSinkPriority(device) > BluetoothA2dp.PRIORITY_OFF;
}
@Override
- public void setPreferred(String address, boolean preferred) {
- mService.setSinkPriority(address,
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ mService.setSinkPriority(device,
preferred ? BluetoothA2dp.PRIORITY_AUTO : BluetoothA2dp.PRIORITY_OFF);
}
@@ -193,15 +224,15 @@
}
}
}
-
+
/**
- * HeadsetProfileManager is an abstraction for the {@link BluetoothHeadset} service.
+ * HeadsetProfileManager is an abstraction for the {@link BluetoothHeadset} service.
*/
private static class HeadsetProfileManager extends LocalBluetoothProfileManager
implements BluetoothHeadset.ServiceListener {
private BluetoothHeadset mService;
private Handler mUiHandler = new Handler();
-
+
public HeadsetProfileManager(LocalBluetoothManager localManager) {
super(localManager);
mService = new BluetoothHeadset(localManager.getContext(), this);
@@ -215,11 +246,11 @@
* We just bound to the service, so refresh the UI of the
* headset device.
*/
- String address = mService.getHeadsetAddress();
- if (TextUtils.isEmpty(address)) return;
- mLocalManager.getLocalDeviceManager()
- .onProfileStateChanged(address, Profile.HEADSET,
- BluetoothHeadset.STATE_CONNECTED);
+ BluetoothDevice device = mService.getCurrentHeadset();
+ if (device == null) return;
+ mLocalManager.getCachedDeviceManager()
+ .onProfileStateChanged(device, Profile.HEADSET,
+ BluetoothHeadset.STATE_CONNECTED);
}
});
}
@@ -228,35 +259,34 @@
}
@Override
- public int connect(String address) {
+ public boolean connect(BluetoothDevice device) {
// Since connectHeadset fails if already connected to a headset, we
// disconnect from any headset first
mService.disconnectHeadset();
- return mService.connectHeadset(address)
- ? BluetoothError.SUCCESS : BluetoothError.ERROR;
+ return mService.connectHeadset(device);
}
@Override
- public int disconnect(String address) {
- if (mService.getHeadsetAddress().equals(address)) {
- return mService.disconnectHeadset() ? BluetoothError.SUCCESS : BluetoothError.ERROR;
+ public boolean disconnect(BluetoothDevice device) {
+ if (mService.getCurrentHeadset().equals(device)) {
+ return mService.disconnectHeadset();
} else {
- return BluetoothError.SUCCESS;
+ return false;
}
}
-
+
@Override
- public int getConnectionStatus(String address) {
- String headsetAddress = mService.getHeadsetAddress();
- return headsetAddress != null && headsetAddress.equals(address)
+ public int getConnectionStatus(BluetoothDevice device) {
+ BluetoothDevice currentDevice = mService.getCurrentHeadset();
+ return currentDevice != null && currentDevice.equals(device)
? convertState(mService.getState())
: SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
}
-
+
@Override
- public int getSummary(String address) {
- int connectionStatus = getConnectionStatus(address);
-
+ public int getSummary(BluetoothDevice device) {
+ int connectionStatus = getConnectionStatus(device);
+
if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
return R.string.bluetooth_headset_profile_summary_connected;
} else {
@@ -265,13 +295,13 @@
}
@Override
- public boolean isPreferred(String address) {
- return mService.getPriority(address) > BluetoothHeadset.PRIORITY_OFF;
+ public boolean isPreferred(BluetoothDevice device) {
+ return mService.getPriority(device) > BluetoothHeadset.PRIORITY_OFF;
}
@Override
- public void setPreferred(String address, boolean preferred) {
- mService.setPriority(address,
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ mService.setPriority(device,
preferred ? BluetoothHeadset.PRIORITY_AUTO : BluetoothHeadset.PRIORITY_OFF);
}
@@ -289,4 +319,63 @@
}
}
}
+
+ /**
+ * OppProfileManager
+ */
+ private static class OppProfileManager extends LocalBluetoothProfileManager {
+
+ public OppProfileManager(LocalBluetoothManager localManager) {
+ super(localManager);
+ }
+
+ @Override
+ public boolean connect(BluetoothDevice device) {
+ return false;
+ }
+
+ @Override
+ public boolean disconnect(BluetoothDevice device) {
+ return false;
+ }
+
+ @Override
+ public int getConnectionStatus(BluetoothDevice device) {
+ return -1;
+ }
+
+ @Override
+ public int getSummary(BluetoothDevice device) {
+ int connectionStatus = getConnectionStatus(device);
+
+ if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
+ return R.string.bluetooth_opp_profile_summary_connected;
+ } else {
+ return R.string.bluetooth_opp_profile_summary_not_connected;
+ }
+ }
+
+ @Override
+ public boolean isPreferred(BluetoothDevice device) {
+ return false;
+ }
+
+ @Override
+ public void setPreferred(BluetoothDevice device, boolean preferred) {
+ }
+
+ @Override
+ public int convertState(int oppState) {
+ switch (oppState) {
+ case 0:
+ return SettingsBtStatus.CONNECTION_STATUS_CONNECTED;
+ case 1:
+ return SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
+ case 2:
+ return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
+ default:
+ return SettingsBtStatus.CONNECTION_STATUS_UNKNOWN;
+ }
+ }
+ }
}
diff --git a/src/com/android/settings/bluetooth/RequestPermissionActivity.java b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
new file mode 100644
index 0000000..d1567a9
--- /dev/null
+++ b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.internal.app.AlertActivity;
+import com.android.internal.app.AlertController;
+import com.android.settings.R;
+
+/**
+ * RequestPermissionActivity asks the user whether to enable discovery. This is
+ * usually started by an application wanted to start bluetooth and or discovery
+ */
+public class RequestPermissionActivity extends AlertActivity implements
+ DialogInterface.OnClickListener {
+ // Command line to test this
+ // adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
+ // adb shell am start -a android.bluetooth.adapter.action.REQUEST_DISCOVERABLE
+
+ private static final String TAG = "RequestPermissionActivity";
+
+ private static final int MAX_DISCOVERABLE_TIMEOUT = 300;
+
+ // Result code: Error
+ public static final int RESULT_ERROR = -2;
+
+ // Result code: User rejected the request
+ public static final int RESULT_USER_DENIED = -1;
+
+ // Non-error return code: BT is starting or has started successfully. Used
+ // by this Activity and RequestPermissionHelperActivity
+ /* package */ static final int RESULT_BT_STARTING_OR_STARTED = -1000;
+
+ private static final int REQUEST_CODE_START_BT = 1;
+
+ private LocalBluetoothManager mLocalManager;
+
+ private int mTimeout = BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT;
+
+ /*
+ * True if bluetooth wasn't enabled and RequestPermissionHelperActivity was
+ * started to ask the user and start bt.
+ *
+ * If/when that activity returns successfully, display please wait msg then
+ * go away when bt has started and discovery mode has been enabled.
+ */
+ private boolean mNeededToEnableBluetooth;
+
+ // True if requesting BT to be turned on
+ // False if requesting BT to be turned on + discoverable mode
+ private boolean mEnableOnly = false;
+
+ private boolean mUserConfirmed = false;
+
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent == null)
+ return;
+ if (mNeededToEnableBluetooth
+ && BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) {
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothDevice.ERROR);
+ if (state == BluetoothAdapter.STATE_ON) {
+ if (mUserConfirmed) {
+ proceedAndFinish(false);
+ }
+ }
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (parseIntent()) {
+ finish();
+ return;
+ }
+
+ int btState = mLocalManager.getBluetoothState();
+
+ switch (btState) {
+ case BluetoothAdapter.STATE_OFF:
+ case BluetoothAdapter.STATE_TURNING_OFF:
+ case BluetoothAdapter.STATE_TURNING_ON:
+ /*
+ * Strictly speaking STATE_TURNING_ON belong with STATE_ON;
+ * however, BT may not be ready when the user clicks yes and we
+ * would fail to turn on discovery mode. By kicking this to the
+ * RequestPermissionHelperActivity, this class will handle that
+ * case via the broadcast receiver.
+ */
+
+ /*
+ * Start the helper activity to:
+ * 1) ask the user about enabling bt AND discovery
+ * 2) enable BT upon confirmation
+ */
+ registerReceiver(mReceiver,
+ new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
+ Intent i = new Intent();
+ i.setClass(this, RequestPermissionHelperActivity.class);
+ if (mEnableOnly) {
+ i.setAction(RequestPermissionHelperActivity.ACTION_INTERNAL_REQUEST_BT_ON);
+ } else {
+ i.setAction(RequestPermissionHelperActivity.
+ ACTION_INTERNAL_REQUEST_BT_ON_AND_DISCOVERABLE);
+ i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, mTimeout);
+ }
+ startActivityForResult(i, REQUEST_CODE_START_BT);
+ mNeededToEnableBluetooth = true;
+ break;
+ case BluetoothAdapter.STATE_ON:
+ if (mEnableOnly) {
+ // Nothing to do. Already enabled.
+ proceedAndFinish(false);
+ return;
+ } else {
+ // Ask the user about enabling discovery mode
+ createDialog();
+ break;
+ }
+ }
+ }
+
+ private void createDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_permission_request);
+
+ View view = getLayoutInflater().inflate(R.layout.bluetooth_discoverable, null);
+ p.mView = view;
+ TextView tv = (TextView) view.findViewById(R.id.message);
+
+ if (mNeededToEnableBluetooth) {
+ // RequestPermissionHelperActivity has gotten confirmation from user
+ // to turn on BT
+ tv.setText(getString(R.string.bluetooth_turning_on));
+ } else {
+ // Ask the user whether to turn on discovery mode or not
+ tv.setText(getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+ p.mPositiveButtonText = getString(R.string.yes);
+ p.mPositiveButtonListener = this;
+ p.mNegativeButtonText = getString(R.string.no);
+ p.mNegativeButtonListener = this;
+ }
+
+ setupAlert();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode != REQUEST_CODE_START_BT) {
+ Log.e(TAG, "Unexpected onActivityResult " + requestCode + " " + resultCode);
+ setResult(RESULT_ERROR);
+ finish();
+ return;
+ }
+ if (resultCode != RESULT_BT_STARTING_OR_STARTED) {
+ setResult(resultCode);
+ finish();
+ }
+
+ // Back from RequestPermissionHelperActivity. User confirmed to enable
+ // BT and discoverable mode.
+ mUserConfirmed = true;
+
+ if (mLocalManager.getBluetoothState() == BluetoothAdapter.STATE_ON) {
+ proceedAndFinish(false);
+ } else {
+ // If BT is not up yet, show "Turning on Bluetooth..."
+ createDialog();
+ }
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ proceedAndFinish(true);
+ break;
+
+ case DialogInterface.BUTTON_NEGATIVE:
+ setResult(RESULT_USER_DENIED);
+ break;
+ }
+ }
+
+ private void proceedAndFinish(boolean buttonPressed) {
+ int returnCode;
+
+ if (mEnableOnly) {
+ // BT enabled. Done
+ returnCode = 0;
+ } else if (mLocalManager.getBluetoothAdapter().setScanMode(
+ BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, mTimeout)) {
+ // If already in discoverable mode, this will extend the timeout.
+ persistDiscoverableEndTimestamp(System.currentTimeMillis() + mTimeout * 1000);
+ returnCode = mTimeout;
+ } else {
+ returnCode = RESULT_ERROR;
+ }
+
+ setResult(returnCode);
+ if (!buttonPressed) {
+ finish();
+ }
+ }
+
+ private boolean parseIntent() {
+ Intent intent = getIntent();
+ if (intent != null && intent.getAction().equals(BluetoothAdapter.ACTION_REQUEST_ENABLE)) {
+ mEnableOnly = true;
+ } else if (intent != null
+ && intent.getAction().equals(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)) {
+ mTimeout = intent.getIntExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
+ BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT);
+
+ Log.e(TAG, "Timeout = " + mTimeout);
+
+ if (mTimeout > MAX_DISCOVERABLE_TIMEOUT) {
+ mTimeout = MAX_DISCOVERABLE_TIMEOUT;
+ } else if (mTimeout <= 0) {
+ mTimeout = BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT;
+ }
+ } else {
+ Log.e(TAG, "Error: this activity may be started only with intent "
+ + BluetoothAdapter.ACTION_REQUEST_ENABLE + " or "
+ + BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+ setResult(RESULT_ERROR);
+ return true;
+ }
+
+ mLocalManager = LocalBluetoothManager.getInstance(this);
+ if (mLocalManager == null) {
+ Log.e(TAG, "Error: there's a problem starting bluetooth");
+ setResult(RESULT_ERROR);
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (mNeededToEnableBluetooth) unregisterReceiver(mReceiver);
+ }
+
+ private void persistDiscoverableEndTimestamp(long endTimestamp) {
+ SharedPreferences.Editor editor = mLocalManager.getSharedPreferences().edit();
+ editor.putLong(
+ BluetoothDiscoverableEnabler.SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP,
+ endTimestamp);
+ editor.commit();
+ }
+
+ @Override
+ public void onBackPressed() {
+ setResult(RequestPermissionActivity.RESULT_USER_DENIED);
+ super.onBackPressed();
+ }
+}
diff --git a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
new file mode 100644
index 0000000..b8e0672
--- /dev/null
+++ b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.internal.app.AlertActivity;
+import com.android.internal.app.AlertController;
+import com.android.settings.R;
+
+/**
+ * RequestPermissionHelperActivity asks the user whether to enable discovery.
+ * This is usually started by RequestPermissionActivity.
+ */
+public class RequestPermissionHelperActivity extends AlertActivity implements
+ DialogInterface.OnClickListener {
+ private static final String TAG = "RequestPermissionHelperActivity";
+
+ public static final String ACTION_INTERNAL_REQUEST_BT_ON =
+ "com.android.settings.bluetooth.ACTION_INTERNAL_REQUEST_BT_ON";
+
+ public static final String ACTION_INTERNAL_REQUEST_BT_ON_AND_DISCOVERABLE =
+ "com.android.settings.bluetooth.ACTION_INTERNAL_REQUEST_BT_ON_AND_DISCOVERABLE";
+
+ private LocalBluetoothManager mLocalManager;
+
+ private int mTimeout;
+
+ // True if requesting BT to be turned on
+ // False if requesting BT to be turned on + discoverable mode
+ private boolean mEnableOnly;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (parseIntent()) {
+ finish();
+ return;
+ }
+
+ createDialog();
+ }
+
+ void createDialog() {
+ final AlertController.AlertParams p = mAlertParams;
+ p.mIconId = android.R.drawable.ic_dialog_info;
+ p.mTitle = getString(R.string.bluetooth_permission_request);
+
+ View view = getLayoutInflater().inflate(R.layout.bluetooth_discoverable, null);
+ p.mView = view;
+ TextView tv = (TextView) view.findViewById(R.id.message);
+
+ if (mEnableOnly) {
+ tv.setText(getString(R.string.bluetooth_ask_enablement));
+ } else {
+ tv.setText(getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+ }
+
+ p.mPositiveButtonText = getString(R.string.yes);
+ p.mPositiveButtonListener = this;
+ p.mNegativeButtonText = getString(R.string.no);
+ p.mNegativeButtonListener = this;
+
+ setupAlert();
+ }
+
+ public void onClick(DialogInterface dialog, int which) {
+ int returnCode;
+ switch (which) {
+ case DialogInterface.BUTTON_POSITIVE:
+ int btState = 0;
+
+ try {
+ // TODO There's a better way.
+ int retryCount = 30;
+ do {
+ btState = mLocalManager.getBluetoothState();
+ Thread.sleep(100);
+ } while (btState == BluetoothAdapter.STATE_TURNING_OFF && --retryCount > 0);
+ } catch (InterruptedException e) {
+ // don't care
+ }
+
+ if (btState == BluetoothAdapter.STATE_TURNING_ON
+ || btState == BluetoothAdapter.STATE_ON
+ || mLocalManager.getBluetoothAdapter().enable()) {
+ returnCode = RequestPermissionActivity.RESULT_BT_STARTING_OR_STARTED;
+ } else {
+ returnCode = RequestPermissionActivity.RESULT_ERROR;
+ }
+ break;
+
+ case DialogInterface.BUTTON_NEGATIVE:
+ returnCode = RequestPermissionActivity.RESULT_USER_DENIED;
+ break;
+ default:
+ return;
+ }
+ setResult(returnCode);
+ }
+
+ private boolean parseIntent() {
+ Intent intent = getIntent();
+ if (intent != null && intent.getAction().equals(ACTION_INTERNAL_REQUEST_BT_ON)) {
+ mEnableOnly = true;
+ } else if (intent != null
+ && intent.getAction().equals(ACTION_INTERNAL_REQUEST_BT_ON_AND_DISCOVERABLE)) {
+ mEnableOnly = false;
+ // Value used for display purposes. Not range checking.
+ mTimeout = intent.getIntExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
+ BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT);
+ } else {
+ setResult(RequestPermissionActivity.RESULT_ERROR);
+ return true;
+ }
+
+ mLocalManager = LocalBluetoothManager.getInstance(this);
+ if (mLocalManager == null) {
+ Log.e(TAG, "Error: there's a problem starting bluetooth");
+ setResult(RequestPermissionActivity.RESULT_ERROR);
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public void onBackPressed() {
+ setResult(RequestPermissionActivity.RESULT_USER_DENIED);
+ super.onBackPressed();
+ }
+}
diff --git a/src/com/android/settings/bluetooth/SettingsBtStatus.java b/src/com/android/settings/bluetooth/SettingsBtStatus.java
index d2cbef5..e2285e9 100644
--- a/src/com/android/settings/bluetooth/SettingsBtStatus.java
+++ b/src/com/android/settings/bluetooth/SettingsBtStatus.java
@@ -26,9 +26,9 @@
*/
public class SettingsBtStatus {
private static final String TAG = "SettingsBtStatus";
-
+
// Connection status
-
+
public static final int CONNECTION_STATUS_UNKNOWN = 0;
public static final int CONNECTION_STATUS_ACTIVE = 1;
/** Use {@link #isConnected} to check for the connected state */
@@ -55,24 +55,24 @@
return 0;
}
}
-
+
public static final boolean isConnectionStatusConnected(int connectionStatus) {
return connectionStatus == CONNECTION_STATUS_ACTIVE
|| connectionStatus == CONNECTION_STATUS_CONNECTED;
}
-
+
public static final boolean isConnectionStatusBusy(int connectionStatus) {
return connectionStatus == CONNECTION_STATUS_CONNECTING
|| connectionStatus == CONNECTION_STATUS_DISCONNECTING;
}
-
+
public static final int getPairingStatusSummary(int bondState) {
switch (bondState) {
case BluetoothDevice.BOND_BONDED:
return R.string.bluetooth_paired;
case BluetoothDevice.BOND_BONDING:
return R.string.bluetooth_pairing;
- case BluetoothDevice.BOND_NOT_BONDED:
+ case BluetoothDevice.BOND_NONE:
return R.string.bluetooth_not_connected;
default:
return 0;
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index 7d22d91..a736cc0 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -16,7 +16,7 @@
package com.android.settings.deviceinfo;
-import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -377,7 +377,7 @@
}
private void setBtStatus() {
- BluetoothDevice bluetooth = (BluetoothDevice) getSystemService(BLUETOOTH_SERVICE);
+ BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
Preference btAddressPref = findPreference(KEY_BT_ADDRESS);
if (bluetooth == null) {
@@ -393,7 +393,6 @@
void updateTimes() {
long at = SystemClock.uptimeMillis() / 1000;
long ut = SystemClock.elapsedRealtime() / 1000;
- long st = ut - at;
if (ut == 0) {
ut = 1;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 10c9a43..fecd1438 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -295,7 +295,12 @@
private void processAppUsage() {
SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
final int which = mStatsType;
- final double powerCpuNormal = mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_NORMAL);
+ final int speedSteps = mPowerProfile.getNumSpeedSteps();
+ final double[] powerCpuNormal = new double[speedSteps];
+ final long[] cpuSpeedStepTimes = new long[speedSteps];
+ for (int p = 0; p < speedSteps; p++) {
+ powerCpuNormal[p] = mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_ACTIVE, p);
+ }
final double averageCostPerByte = getAverageDataCost();
long uSecTime = mStats.computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which);
updateStatsPeriod(uSecTime);
@@ -322,7 +327,19 @@
final long foregroundTime = ps.getForegroundTime(which);
cpuFgTime += foregroundTime * 10; // convert to millis
final long tmpCpuTime = (userTime + systemTime) * 10; // convert to millis
- final double processPower = tmpCpuTime * powerCpuNormal;
+ int totalTimeAtSpeeds = 0;
+ // Get the total first
+ for (int step = 0; step < speedSteps; step++) {
+ cpuSpeedStepTimes[step] = ps.getTimeAtCpuSpeedStep(step, which);
+ totalTimeAtSpeeds += cpuSpeedStepTimes[step];
+ }
+ if (totalTimeAtSpeeds == 0) totalTimeAtSpeeds = 1;
+ // Then compute the ratio of time spent at each speed
+ double processPower = 0;
+ for (int step = 0; step < speedSteps; step++) {
+ double ratio = (double) cpuSpeedStepTimes[step] / totalTimeAtSpeeds;
+ processPower += ratio * tmpCpuTime * powerCpuNormal[step];
+ }
cpuTime += tmpCpuTime;
power += processPower;
if (highestDrain < processPower) {
@@ -394,7 +411,7 @@
double phoneOnPower = mPowerProfile.getAveragePower(PowerProfile.POWER_RADIO_ACTIVE)
* phoneOnTimeMs / 1000;
addEntry(getString(R.string.power_phone), DrainType.PHONE, phoneOnTimeMs,
- android.R.drawable.ic_menu_call, phoneOnPower);
+ R.drawable.ic_settings_voice_calls, phoneOnPower);
}
private void addScreenUsage(long uSecNow) {
@@ -415,7 +432,7 @@
}
power /= 1000; // To seconds
addEntry(getString(R.string.power_screen), DrainType.SCREEN, screenOnTimeMs,
- android.R.drawable.ic_menu_view, power);
+ R.drawable.ic_settings_display, power);
}
private void addRadioUsage(long uSecNow) {
@@ -430,7 +447,7 @@
}
BatterySipper bs =
addEntry(getString(R.string.power_cell), DrainType.CELL, signalTimeMs,
- android.R.drawable.ic_menu_sort_by_size, power);
+ R.drawable.ic_settings_cell_standby, power);
if (signalTimeMs != 0) {
bs.noCoveragePercent = mStats.getPhoneSignalStrengthTime(0, uSecNow, mStatsType)
/ 1000 * 100.0 / signalTimeMs;
@@ -444,7 +461,7 @@
* mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)
+ runningTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_WIFI_ON)) / 1000;
addEntry(getString(R.string.power_wifi), DrainType.WIFI, runningTimeMs,
- R.drawable.ic_wifi_signal_4, wifiPower);
+ R.drawable.ic_settings_wifi, wifiPower);
}
private void addIdleUsage(long uSecNow) {
@@ -452,7 +469,7 @@
double idlePower = (idleTimeMs * mPowerProfile.getAveragePower(PowerProfile.POWER_CPU_IDLE))
/ 1000;
addEntry(getString(R.string.power_idle), DrainType.IDLE, idleTimeMs,
- android.R.drawable.ic_lock_power_off, idlePower);
+ R.drawable.ic_settings_phone_idle, idlePower);
}
private void addBluetoothUsage(long uSecNow) {
@@ -464,7 +481,7 @@
* mPowerProfile.getAveragePower(PowerProfile.POWER_BLUETOOTH_AT_CMD)) / 1000;
addEntry(getString(R.string.power_bluetooth), DrainType.BLUETOOTH, btOnTimeMs,
- com.android.internal.R.drawable.ic_volume_bluetooth_in_call, btPower);
+ R.drawable.ic_settings_bluetooth, btPower);
}
private double getAverageDataCost() {
@@ -602,6 +619,8 @@
} else if ("mediaserver".equals(name)) {
name = getResources().getString(R.string.process_mediaserver_label);
}
+ iconId = R.drawable.ic_power_system;
+ icon = getResources().getDrawable(iconId);
return;
} else {
//name = packages[0];
diff --git a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
index 40316b5..fb9fbcd 100644
--- a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
+++ b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
@@ -226,8 +226,7 @@
Log.w(TAG, "Result from bookmark picker does not have an intent.");
return;
}
-
- String title = data.getStringExtra(BookmarkPicker.EXTRA_TITLE);
+
char shortcut = data.getCharExtra(BookmarkPicker.EXTRA_SHORTCUT, (char) 0);
updateShortcut(shortcut, data);
diff --git a/src/com/android/settings/vpn/L2tpEditor.java b/src/com/android/settings/vpn/L2tpEditor.java
index 29036f2..05d51d6 100644
--- a/src/com/android/settings/vpn/L2tpEditor.java
+++ b/src/com/android/settings/vpn/L2tpEditor.java
@@ -57,7 +57,7 @@
final L2tpProfile profile = (L2tpProfile) getProfile();
CheckBoxPreference secret = mSecret = new CheckBoxPreference(c);
boolean enabled = profile.isSecretEnabled();
- setSecretTitle(secret, R.string.vpn_l2tp_secret, enabled);
+ setCheckBoxTitle(secret, R.string.vpn_l2tp_secret);
secret.setChecked(enabled);
setSecretSummary(secret, enabled);
secret.setOnPreferenceChangeListener(
@@ -67,8 +67,6 @@
boolean enabled = (Boolean) newValue;
profile.setSecretEnabled(enabled);
mSecretHandler.getPreference().setEnabled(enabled);
- setSecretTitle(mSecret, R.string.vpn_l2tp_secret,
- enabled);
setSecretSummary(mSecret, enabled);
return true;
}
diff --git a/src/com/android/settings/vpn/L2tpIpsecEditor.java b/src/com/android/settings/vpn/L2tpIpsecEditor.java
index b14feb3..276ee2f 100644
--- a/src/com/android/settings/vpn/L2tpIpsecEditor.java
+++ b/src/com/android/settings/vpn/L2tpIpsecEditor.java
@@ -24,7 +24,8 @@
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
-import android.security.CertTool;
+import android.security.Credentials;
+import android.security.KeyStore;
import android.text.TextUtils;
/**
@@ -33,6 +34,8 @@
class L2tpIpsecEditor extends L2tpEditor {
private static final String TAG = L2tpIpsecEditor.class.getSimpleName();
+ private KeyStore mKeyStore = KeyStore.getInstance();
+
private ListPreference mUserCertificate;
private ListPreference mCaCertificate;
@@ -67,7 +70,7 @@
mUserCertificate = createListPreference(c,
R.string.vpn_user_certificate_title,
mProfile.getUserCertificate(),
- CertTool.getInstance().getAllUserCertificateKeys(),
+ mKeyStore.saw(Credentials.USER_CERTIFICATE),
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
@@ -86,7 +89,7 @@
mCaCertificate = createListPreference(c,
R.string.vpn_ca_certificate_title,
mProfile.getCaCertificate(),
- CertTool.getInstance().getAllCaCertificateKeys(),
+ mKeyStore.saw(Credentials.CA_CERTIFICATE),
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(
Preference pref, Object newValue) {
diff --git a/src/com/android/settings/vpn/PptpEditor.java b/src/com/android/settings/vpn/PptpEditor.java
index fafe6a7..cfb3fa3 100644
--- a/src/com/android/settings/vpn/PptpEditor.java
+++ b/src/com/android/settings/vpn/PptpEditor.java
@@ -45,7 +45,7 @@
final PptpProfile profile = (PptpProfile) getProfile();
CheckBoxPreference encryption = mEncryption = new CheckBoxPreference(c);
boolean enabled = profile.isEncryptionEnabled();
- setSecretTitle(encryption, R.string.vpn_pptp_encryption_title, enabled);
+ setCheckBoxTitle(encryption, R.string.vpn_pptp_encryption_title);
encryption.setChecked(enabled);
setEncryptionSummary(encryption, enabled);
encryption.setOnPreferenceChangeListener(
@@ -54,8 +54,6 @@
Preference pref, Object newValue) {
boolean enabled = (Boolean) newValue;
profile.setEncryptionEnabled(enabled);
- setSecretTitle(mEncryption,
- R.string.vpn_pptp_encryption_title, enabled);
setEncryptionSummary(mEncryption, enabled);
return true;
}
diff --git a/src/com/android/settings/vpn/VpnProfileEditor.java b/src/com/android/settings/vpn/VpnProfileEditor.java
index 8dc3643..100b78e 100644
--- a/src/com/android/settings/vpn/VpnProfileEditor.java
+++ b/src/com/android/settings/vpn/VpnProfileEditor.java
@@ -174,12 +174,9 @@
: v);
}
- protected void setSecretTitle(
- CheckBoxPreference pref, int fieldNameId, boolean enabled) {
+ protected void setCheckBoxTitle(CheckBoxPreference pref, int fieldNameId) {
Context c = pref.getContext();
- String formatString = enabled
- ? c.getString(R.string.vpn_disable_field)
- : c.getString(R.string.vpn_enable_field);
+ String formatString = c.getString(R.string.vpn_enable_field);
pref.setTitle(String.format(formatString, c.getString(fieldNameId)));
}
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index 7d4ea25..d380375 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -47,8 +47,8 @@
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.Preference.OnPreferenceClickListener;
-import android.security.CertTool;
-import android.security.Keystore;
+import android.security.Credentials;
+import android.security.KeyStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.ContextMenu;
@@ -104,20 +104,13 @@
private static final int CONNECT_BUTTON = DialogInterface.BUTTON1;
private static final int OK_BUTTON = DialogInterface.BUTTON1;
- private static final int DIALOG_CONNECT = 1;
- private static final int DIALOG_RECONNECT = 2;
- private static final int DIALOG_AUTH_ERROR = 3;
- private static final int DIALOG_UNKNOWN_SERVER = 4;
- private static final int DIALOG_SECRET_NOT_SET = 5;
- private static final int DIALOG_CHALLENGE_ERROR = 6;
- private static final int DIALOG_REMOTE_HUNG_UP_ERROR = 7;
- private static final int DIALOG_CONNECTION_LOST = 8;
+ private static final int DIALOG_CONNECT = VpnManager.VPN_ERROR_LARGEST + 1;
+ private static final int DIALOG_SECRET_NOT_SET = DIALOG_CONNECT + 1;
- private static final int NO_ERROR = 0;
+ private static final int NO_ERROR = VpnManager.VPN_ERROR_NO_ERROR;
- private static final String NAMESPACE_VPN = "vpn";
- private static final String KEY_PREFIX_IPSEC_PSK = "ipsk000";
- private static final String KEY_PREFIX_L2TP_SECRET = "lscrt000";
+ private static final String KEY_PREFIX_IPSEC_PSK = Credentials.VPN + 'i';
+ private static final String KEY_PREFIX_L2TP_SECRET = Credentials.VPN + 'l';
private PreferenceScreen mAddVpn;
private PreferenceCategory mVpnListContainer;
@@ -135,6 +128,8 @@
// states saved for unlocking keystore
private Runnable mUnlockAction;
+ private KeyStore mKeyStore = KeyStore.getInstance();
+
private VpnManager mVpnManager = new VpnManager(this);
private ConnectivityReceiver mConnectivityReceiver =
@@ -178,7 +173,7 @@
public void onResume() {
super.onResume();
- if ((mUnlockAction != null) && isKeystoreUnlocked()) {
+ if ((mUnlockAction != null) && isKeyStoreUnlocked()) {
Runnable action = mUnlockAction;
mUnlockAction = null;
runOnUiThread(action);
@@ -201,29 +196,17 @@
case DIALOG_CONNECT:
return createConnectDialog();
- case DIALOG_RECONNECT:
- return createReconnectDialog();
-
- case DIALOG_AUTH_ERROR:
- return createAuthErrorDialog();
-
- case DIALOG_REMOTE_HUNG_UP_ERROR:
- return createRemoteHungUpErrorDialog();
-
- case DIALOG_CHALLENGE_ERROR:
- return createChallengeErrorDialog();
-
- case DIALOG_UNKNOWN_SERVER:
- return createUnknownServerDialog();
-
case DIALOG_SECRET_NOT_SET:
return createSecretNotSetDialog();
- case DIALOG_CONNECTION_LOST:
- return createConnectionLostDialog();
+ case VpnManager.VPN_ERROR_CHALLENGE:
+ case VpnManager.VPN_ERROR_UNKNOWN_SERVER:
+ case VpnManager.VPN_ERROR_PPP_NEGOTIATION_FAILED:
+ return createEditDialog(id);
default:
- return super.onCreateDialog(id);
+ Log.d(TAG, "create reconnect dialog for event " + id);
+ return createReconnectDialog(id);
}
}
@@ -239,40 +222,56 @@
.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
removeDialog(DIALOG_CONNECT);
- onIdle();
+ changeState(mActiveProfile, VpnState.IDLE);
}
})
.create();
}
- private Dialog createReconnectDialog() {
- return createCommonDialogBuilder()
- .setMessage(R.string.vpn_confirm_reconnect)
- .create();
+ private Dialog createReconnectDialog(int id) {
+ int msgId;
+ switch (id) {
+ case VpnManager.VPN_ERROR_AUTH:
+ msgId = R.string.vpn_auth_error_dialog_msg;
+ break;
+
+ case VpnManager.VPN_ERROR_REMOTE_HUNG_UP:
+ msgId = R.string.vpn_remote_hung_up_error_dialog_msg;
+ break;
+
+ case VpnManager.VPN_ERROR_CONNECTION_LOST:
+ msgId = R.string.vpn_reconnect_from_lost;
+ break;
+
+ case VpnManager.VPN_ERROR_REMOTE_PPP_HUNG_UP:
+ msgId = R.string.vpn_remote_ppp_hung_up_error_dialog_msg;
+ break;
+
+ default:
+ msgId = R.string.vpn_confirm_reconnect;
+ }
+ return createCommonDialogBuilder().setMessage(msgId).create();
}
- private Dialog createAuthErrorDialog() {
- return createCommonDialogBuilder()
- .setMessage(R.string.vpn_auth_error_dialog_msg)
- .create();
- }
+ private Dialog createEditDialog(int id) {
+ int msgId;
+ switch (id) {
+ case VpnManager.VPN_ERROR_CHALLENGE:
+ msgId = R.string.vpn_challenge_error_dialog_msg;
+ break;
- private Dialog createRemoteHungUpErrorDialog() {
- return createCommonDialogBuilder()
- .setMessage(R.string.vpn_remote_hung_up_error_dialog_msg)
- .create();
- }
+ case VpnManager.VPN_ERROR_UNKNOWN_SERVER:
+ msgId = R.string.vpn_unknown_server_dialog_msg;
+ break;
- private Dialog createChallengeErrorDialog() {
- return createCommonEditDialogBuilder()
- .setMessage(R.string.vpn_challenge_error_dialog_msg)
- .create();
- }
+ case VpnManager.VPN_ERROR_PPP_NEGOTIATION_FAILED:
+ msgId = R.string.vpn_ppp_negotiation_failed_dialog_msg;
+ break;
- private Dialog createUnknownServerDialog() {
- return createCommonEditDialogBuilder()
- .setMessage(R.string.vpn_unknown_server_dialog_msg)
- .create();
+ default:
+ return null;
+ }
+ return createCommonEditDialogBuilder().setMessage(msgId).create();
}
private Dialog createSecretNotSetDialog() {
@@ -299,12 +298,6 @@
});
}
- private Dialog createConnectionLostDialog() {
- return createCommonDialogBuilder()
- .setMessage(R.string.vpn_reconnect_from_lost)
- .create();
- }
-
private AlertDialog.Builder createCommonDialogBuilder() {
return new AlertDialog.Builder(this)
.setTitle(android.R.string.dialog_alert_title)
@@ -410,13 +403,13 @@
return;
}
- if (needKeystoreToSave(p)) {
+ if (needKeyStoreToSave(p)) {
Runnable action = new Runnable() {
public void run() {
onActivityResult(requestCode, resultCode, data);
}
};
- if (!unlockKeystore(p, action)) return;
+ if (!unlockKeyStore(p, action)) return;
}
try {
@@ -451,7 +444,6 @@
Dialog d = (Dialog) dialog;
String error = mConnectingActor.validateInputs(d);
if (error == null) {
- changeState(mActiveProfile, VpnState.CONNECTING);
mConnectingActor.connect(d);
removeDialog(DIALOG_CONNECT);
return;
@@ -475,7 +467,7 @@
}
} else {
removeDialog(DIALOG_CONNECT);
- onIdle();
+ changeState(mActiveProfile, VpnState.IDLE);
}
}
@@ -619,22 +611,26 @@
startActivityForResult(intent, REQUEST_SELECT_VPN_TYPE);
}
- private boolean isKeystoreUnlocked() {
- return (Keystore.getInstance().getState() == Keystore.UNLOCKED);
- }
-
-
- // Returns true if the profile needs to access keystore
- private boolean needKeystoreToSave(VpnProfile p) {
- return needKeystoreToConnect(p);
+ private boolean isKeyStoreUnlocked() {
+ return mKeyStore.test() == KeyStore.NO_ERROR;
}
// Returns true if the profile needs to access keystore
- private boolean needKeystoreToEdit(VpnProfile p) {
+ private boolean needKeyStoreToSave(VpnProfile p) {
switch (p.getType()) {
- case L2TP_IPSEC:
case L2TP_IPSEC_PSK:
- return true;
+ L2tpIpsecPskProfile pskProfile = (L2tpIpsecPskProfile) p;
+ String presharedKey = pskProfile.getPresharedKey();
+ if (!TextUtils.isEmpty(presharedKey)) return true;
+ // pass through
+
+ case L2TP:
+ L2tpProfile l2tpProfile = (L2tpProfile) p;
+ if (l2tpProfile.isSecretEnabled() &&
+ !TextUtils.isEmpty(l2tpProfile.getSecretString())) {
+ return true;
+ }
+ // pass through
default:
return false;
@@ -642,7 +638,7 @@
}
// Returns true if the profile needs to access keystore
- private boolean needKeystoreToConnect(VpnProfile p) {
+ private boolean needKeyStoreToConnect(VpnProfile p) {
switch (p.getType()) {
case L2TP_IPSEC:
case L2TP_IPSEC_PSK:
@@ -657,46 +653,34 @@
}
// Returns true if keystore is unlocked or keystore is not a concern
- private boolean unlockKeystore(VpnProfile p, Runnable action) {
- if (isKeystoreUnlocked()) return true;
+ private boolean unlockKeyStore(VpnProfile p, Runnable action) {
+ if (isKeyStoreUnlocked()) return true;
mUnlockAction = action;
- startActivity(
- new Intent(SecuritySettings.ACTION_UNLOCK_CREDENTIAL_STORAGE));
+ Credentials.getInstance().unlock(this);
return false;
}
private void startVpnEditor(final VpnProfile profile) {
- if (needKeystoreToEdit(profile)) {
- Runnable action = new Runnable() {
- public void run() {
- startVpnEditor(profile);
- }
- };
- if (!unlockKeystore(profile, action)) return;
- }
-
Intent intent = new Intent(this, VpnEditor.class);
intent.putExtra(KEY_VPN_PROFILE, (Parcelable) profile);
startActivityForResult(intent, REQUEST_ADD_OR_EDIT_PROFILE);
}
private synchronized void connect(final VpnProfile p) {
- if (needKeystoreToConnect(p)) {
+ if (needKeyStoreToConnect(p)) {
Runnable action = new Runnable() {
public void run() {
connect(p);
}
};
- if (!unlockKeystore(p, action)) return;
+ if (!unlockKeyStore(p, action)) return;
}
- mConnectingActor = getActor(p);
- mActiveProfile = p;
if (!checkSecrets(p)) return;
+ changeState(p, VpnState.CONNECTING);
if (mConnectingActor.isConnectDialogNeeded()) {
showDialog(DIALOG_CONNECT);
} else {
- changeState(p, VpnState.CONNECTING);
mConnectingActor.connect(null);
}
}
@@ -737,7 +721,10 @@
break;
case CONNECTING:
+ mConnectingActor = getActor(p);
+ // pass through
case DISCONNECTING:
+ mActiveProfile = p;
disableProfilePreferencesIfOneActive();
break;
@@ -748,36 +735,12 @@
case IDLE:
assert(mActiveProfile == p);
- switch (mConnectingErrorCode) {
- case NO_ERROR:
- onIdle();
- break;
-
- case VpnManager.VPN_ERROR_AUTH:
- showDialog(DIALOG_AUTH_ERROR);
- break;
-
- case VpnManager.VPN_ERROR_REMOTE_HUNG_UP:
- showDialog(DIALOG_REMOTE_HUNG_UP_ERROR);
- break;
-
- case VpnManager.VPN_ERROR_CHALLENGE:
- showDialog(DIALOG_CHALLENGE_ERROR);
- break;
-
- case VpnManager.VPN_ERROR_UNKNOWN_SERVER:
- showDialog(DIALOG_UNKNOWN_SERVER);
- break;
-
- case VpnManager.VPN_ERROR_CONNECTION_LOST:
- showDialog(DIALOG_CONNECTION_LOST);
- break;
-
- default:
- showDialog(DIALOG_RECONNECT);
- break;
+ if (mConnectingErrorCode == NO_ERROR) {
+ onIdle();
+ } else {
+ showDialog(mConnectingErrorCode);
+ mConnectingErrorCode = NO_ERROR;
}
- mConnectingErrorCode = NO_ERROR;
break;
}
}
@@ -920,43 +883,32 @@
return mVpnManager.createVpnProfile(Enum.valueOf(VpnType.class, type));
}
- private String keyNameForDaemon(String keyName) {
- return NAMESPACE_VPN + "_" + keyName;
- }
-
private boolean checkSecrets(VpnProfile p) {
- Keystore ks = Keystore.getInstance();
- HashSet<String> secretSet = new HashSet<String>();
boolean secretMissing = false;
if (p instanceof L2tpIpsecProfile) {
L2tpIpsecProfile certProfile = (L2tpIpsecProfile) p;
- CertTool certTool = CertTool.getInstance();
- Collections.addAll(secretSet, certTool.getAllCaCertificateKeys());
+
String cert = certProfile.getCaCertificate();
- if (TextUtils.isEmpty(cert) || !secretSet.contains(cert)) {
+ if (TextUtils.isEmpty(cert) ||
+ !mKeyStore.contains(Credentials.CA_CERTIFICATE + cert)) {
certProfile.setCaCertificate(null);
secretMissing = true;
}
- secretSet.clear();
- Collections.addAll(secretSet, certTool.getAllUserCertificateKeys());
cert = certProfile.getUserCertificate();
- if (TextUtils.isEmpty(cert) || !secretSet.contains(cert)) {
+ if (TextUtils.isEmpty(cert) ||
+ !mKeyStore.contains(Credentials.USER_CERTIFICATE + cert)) {
certProfile.setUserCertificate(null);
secretMissing = true;
}
}
- secretSet.clear();
- Collections.addAll(secretSet, ks.listKeys(NAMESPACE_VPN));
-
if (p instanceof L2tpIpsecPskProfile) {
L2tpIpsecPskProfile pskProfile = (L2tpIpsecPskProfile) p;
String presharedKey = pskProfile.getPresharedKey();
- String keyName = KEY_PREFIX_IPSEC_PSK + p.getId();
- if (TextUtils.isEmpty(presharedKey)
- || !secretSet.contains(keyName)) {
+ String key = KEY_PREFIX_IPSEC_PSK + p.getId();
+ if (TextUtils.isEmpty(presharedKey) || !mKeyStore.contains(key)) {
pskProfile.setPresharedKey(null);
secretMissing = true;
}
@@ -966,9 +918,8 @@
L2tpProfile l2tpProfile = (L2tpProfile) p;
if (l2tpProfile.isSecretEnabled()) {
String secret = l2tpProfile.getSecretString();
- String keyName = KEY_PREFIX_L2TP_SECRET + p.getId();
- if (TextUtils.isEmpty(secret)
- || !secretSet.contains(keyName)) {
+ String key = KEY_PREFIX_L2TP_SECRET + p.getId();
+ if (TextUtils.isEmpty(secret) || !mKeyStore.contains(key)) {
l2tpProfile.setSecretString(null);
secretMissing = true;
}
@@ -976,6 +927,7 @@
}
if (secretMissing) {
+ mActiveProfile = p;
showDialog(DIALOG_SECRET_NOT_SET);
return false;
} else {
@@ -984,35 +936,31 @@
}
private void processSecrets(VpnProfile p) {
- Keystore ks = Keystore.getInstance();
switch (p.getType()) {
case L2TP_IPSEC_PSK:
L2tpIpsecPskProfile pskProfile = (L2tpIpsecPskProfile) p;
String presharedKey = pskProfile.getPresharedKey();
- String keyName = KEY_PREFIX_IPSEC_PSK + p.getId();
- if (!TextUtils.isEmpty(presharedKey)) {
- int ret = ks.put(NAMESPACE_VPN, keyName, presharedKey);
- if (ret != 0) {
- Log.e(TAG, "keystore write failed: key=" + keyName);
- }
+ String key = KEY_PREFIX_IPSEC_PSK + p.getId();
+ if (!TextUtils.isEmpty(presharedKey) &&
+ !mKeyStore.put(key, presharedKey)) {
+ Log.e(TAG, "keystore write failed: key=" + key);
}
- pskProfile.setPresharedKey(keyNameForDaemon(keyName));
+ pskProfile.setPresharedKey(key);
// pass through
+ case L2TP_IPSEC:
case L2TP:
L2tpProfile l2tpProfile = (L2tpProfile) p;
- keyName = KEY_PREFIX_L2TP_SECRET + p.getId();
+ key = KEY_PREFIX_L2TP_SECRET + p.getId();
if (l2tpProfile.isSecretEnabled()) {
String secret = l2tpProfile.getSecretString();
- if (!TextUtils.isEmpty(secret)) {
- int ret = ks.put(NAMESPACE_VPN, keyName, secret);
- if (ret != 0) {
- Log.e(TAG, "keystore write failed: key=" + keyName);
- }
+ if (!TextUtils.isEmpty(secret) &&
+ !mKeyStore.put(key, secret)) {
+ Log.e(TAG, "keystore write failed: key=" + key);
}
- l2tpProfile.setSecretString(keyNameForDaemon(keyName));
+ l2tpProfile.setSecretString(key);
} else {
- ks.remove(NAMESPACE_VPN, keyName);
+ mKeyStore.delete(key);
}
break;
}
diff --git a/src/com/android/settings/vpn/VpnTypeSelection.java b/src/com/android/settings/vpn/VpnTypeSelection.java
index e74fb43..aa4bc5e 100644
--- a/src/com/android/settings/vpn/VpnTypeSelection.java
+++ b/src/com/android/settings/vpn/VpnTypeSelection.java
@@ -60,7 +60,7 @@
Preference pref = new Preference(this);
pref.setTitle(message);
- pref.setSummary(t.getDescription());
+ pref.setSummary(t.getDescriptionId());
root.addPreference(pref);
}
}
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index d8747c9..d652e80 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -19,7 +19,7 @@
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
-import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothAdapter;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -30,12 +30,13 @@
import android.net.ConnectivityManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
-import android.os.IHardwareService;
+import android.os.IPowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.provider.Settings;
import android.util.Log;
import android.widget.RemoteViews;
+import android.widget.Toast;
import com.android.settings.R;
import com.android.settings.bluetooth.LocalBluetoothManager;
@@ -157,7 +158,7 @@
} else {
views.setImageViewResource(R.id.btn_brightness, R.drawable.widget_btn_brightness_off);
}
- if (getBackgroundDataState(context)) {
+ if (getSync(context)) {
views.setImageViewResource(R.id.btn_sync, R.drawable.widget_btn_sync);
} else {
views.setImageViewResource(R.id.btn_sync, R.drawable.widget_btn_sync_off);
@@ -175,7 +176,8 @@
views.setImageViewResource(R.id.btn_bluetooth, R.drawable.widget_btn_bluetooth);
break;
case STATE_INTERMEDIATE:
- views.setImageViewResource(R.id.btn_bluetooth, R.drawable.widget_btn_bluetooth_gray);
+ views.setImageViewResource(R.id.btn_bluetooth,
+ R.drawable.widget_btn_bluetooth_gray);
break;
}
}
@@ -187,7 +189,8 @@
* @param appWidgetId
* @return
*/
- private static PendingIntent getLaunchPendingIntent(Context context, int appWidgetId, int buttonId) {
+ private static PendingIntent getLaunchPendingIntent(Context context, int appWidgetId,
+ int buttonId) {
Intent launchIntent = new Intent();
launchIntent.setClass(context, SettingsAppWidgetProvider.class);
launchIntent.addCategory(Intent.CATEGORY_ALTERNATIVE);
@@ -214,7 +217,7 @@
} else if (buttonId == BUTTON_BRIGHTNESS) {
toggleBrightness(context);
} else if (buttonId == BUTTON_SYNC) {
- toggleBackgroundData(context);
+ toggleSync(context);
} else if (buttonId == BUTTON_GPS) {
toggleGps(context);
} else if (buttonId == BUTTON_BLUETOOTH) {
@@ -256,6 +259,7 @@
} else if (wifiState == STATE_DISABLED) {
wifiManager.setWifiEnabled(true);
}
+ Toast.makeText(context, R.string.gadget_toggle_wifi, Toast.LENGTH_SHORT).show();
}
/**
@@ -265,25 +269,56 @@
* @return true if enabled
*/
private static boolean getBackgroundDataState(Context context) {
- ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ ConnectivityManager connManager =
+ (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return connManager.getBackgroundDataSetting();
}
/**
- * Toggle background data and sync tickles.
+ * Gets the state of auto-sync.
+ *
+ * @param context
+ * @return true if enabled
+ */
+ private static boolean getSync(Context context) {
+ boolean backgroundData = getBackgroundDataState(context);
+ boolean sync = ContentResolver.getMasterSyncAutomatically();
+ return backgroundData && sync;
+ }
+
+ /**
+ * Toggle auto-sync
*
* @param context
*/
- private void toggleBackgroundData(Context context) {
- ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- boolean sync = getBackgroundDataState(context);
- connManager.setBackgroundDataSetting(!sync);
+ private void toggleSync(Context context) {
+ ConnectivityManager connManager =
+ (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ boolean backgroundData = getBackgroundDataState(context);
+ boolean sync = ContentResolver.getMasterSyncAutomatically();
- IContentService contentService = ContentResolver.getContentService();
- try {
- contentService.setListenForNetworkTickles(!sync);
- } catch (RemoteException e) {
- Log.d(TAG, "toggleBackgroundData: " + e);
+ // four cases to handle:
+ // setting toggled from off to on:
+ // 1. background data was off, sync was off: turn on both
+ if (!backgroundData && !sync) {
+ connManager.setBackgroundDataSetting(true);
+ ContentResolver.setMasterSyncAutomatically(true);
+ }
+
+ // 2. background data was off, sync was on: turn on background data
+ if (!backgroundData && sync) {
+ connManager.setBackgroundDataSetting(true);
+ }
+
+ // 3. background data was on, sync was off: turn on sync
+ if (backgroundData && !sync) {
+ ContentResolver.setMasterSyncAutomatically(true);
+ }
+
+ // setting toggled from on to off:
+ // 4. background data was on, sync was on: turn off sync
+ if (backgroundData && sync) {
+ ContentResolver.setMasterSyncAutomatically(false);
}
}
@@ -306,7 +341,8 @@
private void toggleGps(Context context) {
ContentResolver resolver = context.getContentResolver();
boolean enabled = getGpsState(context);
- Settings.Secure.setLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER, !enabled);
+ Settings.Secure.setLocationProviderEnabled(resolver, LocationManager.GPS_PROVIDER,
+ !enabled);
}
/**
@@ -317,9 +353,9 @@
*/
private static boolean getBrightness(Context context) {
try {
- IHardwareService hardware = IHardwareService.Stub.asInterface(
- ServiceManager.getService("hardware"));
- if (hardware != null) {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
int brightness = Settings.System.getInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS);
return brightness > 100;
@@ -337,9 +373,9 @@
*/
private void toggleBrightness(Context context) {
try {
- IHardwareService hardware = IHardwareService.Stub.asInterface(
- ServiceManager.getService("hardware"));
- if (hardware != null) {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
ContentResolver cr = context.getContentResolver();
int brightness = Settings.System.getInt(cr,
Settings.System.SCREEN_BRIGHTNESS);
@@ -352,10 +388,18 @@
} else {
brightness = MINIMUM_BACKLIGHT;
}
- hardware.setBacklights(brightness);
+ power.setBacklightBrightness(brightness);
Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness);
- brightness = Settings.System.getInt(cr,
- Settings.System.SCREEN_BRIGHTNESS);
+ if (context.getResources().getBoolean(
+ com.android.internal.R.bool.config_automatic_brightness_available)) {
+ // Disable automatic brightness
+ power.setAutoBrightness(false);
+ Settings.System.putInt(context.getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS_MODE,
+ 0);
+ // Set it again in case auto brightness was on
+ power.setBacklightBrightness(brightness);
+ }
}
} catch (RemoteException e) {
Log.d(TAG, "toggleBrightness: " + e);
@@ -378,9 +422,9 @@
}
}
int state = mLocalBluetoothManager.getBluetoothState();
- if (state == BluetoothDevice.BLUETOOTH_STATE_OFF) {
+ if (state == BluetoothAdapter.STATE_OFF) {
return STATE_DISABLED;
- } else if (state == BluetoothDevice.BLUETOOTH_STATE_ON) {
+ } else if (state == BluetoothAdapter.STATE_ON) {
return STATE_ENABLED;
} else {
return STATE_INTERMEDIATE;
@@ -399,5 +443,6 @@
} else if (state == STATE_DISABLED) {
mLocalBluetoothManager.setBluetoothEnabled(true);
}
+ Toast.makeText(context, R.string.gadget_toggle_bluetooth, Toast.LENGTH_SHORT).show();
}
}
diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java
index 5851a18..4804d78 100644
--- a/src/com/android/settings/wifi/AccessPointDialog.java
+++ b/src/com/android/settings/wifi/AccessPointDialog.java
@@ -17,15 +17,14 @@
package com.android.settings.wifi;
import com.android.settings.R;
-import com.android.settings.SecuritySettings;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
-import android.security.CertTool;
-import android.security.Keystore;
+import android.security.Credentials;
+import android.security.KeyStore;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
@@ -74,17 +73,15 @@
private static final int SECURITY_AUTO = 0;
private static final int SECURITY_NONE = 1;
private static final int SECURITY_WEP = 2;
- private static final int SECURITY_WPA_PERSONAL = 3;
- private static final int SECURITY_WPA2_PERSONAL = 4;
- private static final int SECURITY_WPA_EAP = 5;
- private static final int SECURITY_IEEE8021X = 6;
+ private static final int SECURITY_PSK = 3;
+ private static final int SECURITY_EAP = 4;
private static final int[] WEP_TYPE_VALUES = {
AccessPointState.WEP_PASSWORD_AUTO, AccessPointState.WEP_PASSWORD_ASCII,
AccessPointState.WEP_PASSWORD_HEX
};
private static final String NOT_APPLICABLE = "N/A";
- private static final String BLOB_HEADER = "blob://";
+ private static final String KEYSTORE_HEADER = "keystore://";
// Button positions, default to impossible values
private int mConnectButtonPos = Integer.MAX_VALUE;
@@ -119,8 +116,6 @@
private Spinner mCaCertSpinner;
private TextView mClientCertText;
private Spinner mClientCertSpinner;
- private TextView mPrivateKeyPasswdText;
- private EditText mPrivateKeyPasswdEdit;
private EditText[] mEnterpriseTextFields;
@@ -133,13 +128,13 @@
private TextView mSecurityText;
private Spinner mSecuritySpinner;
private Spinner mWepTypeSpinner;
- private CertTool mCertTool;
+ private KeyStore mKeyStore;
public AccessPointDialog(Context context, WifiLayer wifiLayer) {
super(context);
mWifiLayer = wifiLayer;
- mCertTool = CertTool.getInstance();
+ mKeyStore = KeyStore.getInstance();
}
@Override
@@ -222,7 +217,7 @@
updateCertificateSelection();
setGenericPasswordVisible(true);
// Both WPA and WPA2 show the same caption, so either is ok
- updatePasswordCaption(AccessPointState.WPA);
+ updatePasswordCaption(AccessPointState.PSK);
}
/** Called after flags are set, the dialog's layout/etc should be set up here */
@@ -347,18 +342,22 @@
}
private String[] getAllCaCertificateKeys() {
- return appendEmptyInSelection(mCertTool.getAllCaCertificateKeys());
+ return appendEmptyInSelection(mKeyStore.saw(Credentials.CA_CERTIFICATE));
}
private String[] getAllUserCertificateKeys() {
- return appendEmptyInSelection(mCertTool.getAllUserCertificateKeys());
+ return appendEmptyInSelection(mKeyStore.saw(Credentials.USER_CERTIFICATE));
}
private String[] appendEmptyInSelection(String[] keys) {
- String[] selections = new String[keys.length + 1];
- System.arraycopy(keys, 0, selections, 0, keys.length);
- selections[keys.length] = NOT_APPLICABLE;
- return selections;
+ if (keys == null) {
+ return new String[] {NOT_APPLICABLE};
+ } else {
+ String[] selections = new String[keys.length + 1];
+ System.arraycopy(keys, 0, selections, 0, keys.length);
+ selections[keys.length] = NOT_APPLICABLE;
+ return selections;
+ }
}
private void setEnterpriseFields(View view) {
@@ -371,8 +370,6 @@
mClientCertText =
(TextView) view.findViewById(R.id.client_certificate_text);
mCaCertText = (TextView) view.findViewById(R.id.ca_certificate_text);
- mPrivateKeyPasswdEdit =
- (EditText) view.findViewById(R.id.private_key_passwd_edit);
mEapText = (TextView) view.findViewById(R.id.eap_text);
mEapSpinner = (Spinner) view.findViewById(R.id.eap_spinner);
mEapSpinner.setOnItemSelectedListener(this);
@@ -399,7 +396,7 @@
setSpinnerAdapter(mCaCertSpinner, getAllCaCertificateKeys());
mEnterpriseTextFields = new EditText[] {
- mIdentityEdit, mAnonymousIdentityEdit, mPrivateKeyPasswdEdit
+ mIdentityEdit, mAnonymousIdentityEdit
};
}
@@ -455,12 +452,12 @@
}
private void updatePasswordCaption(String security) {
-
- if (mPasswordText != null && security != null
- && security.equals(AccessPointState.WEP)) {
- mPasswordText.setText(R.string.please_type_hex_key);
- } else {
- mPasswordText.setText(R.string.please_type_passphrase);
+ if (mPasswordText != null) {
+ if (security != null && security.equals(AccessPointState.WEP)) {
+ mPasswordText.setText(R.string.please_type_hex_key);
+ } else {
+ mPasswordText.setText(R.string.please_type_passphrase);
+ }
}
}
@@ -518,9 +515,7 @@
if (mState.isEnterprise()) {
if(!mState.configured) {
- updateEnterpriseFields(
- AccessPointState.WPA_EAP.equals(mState.security) ?
- SECURITY_WPA_EAP : SECURITY_IEEE8021X);
+ updateEnterpriseFields();
}
}
updatePasswordField();
@@ -576,13 +571,8 @@
}
switch (securityType) {
- case SECURITY_WPA_PERSONAL: {
- mState.setSecurity(AccessPointState.WPA);
- break;
- }
-
- case SECURITY_WPA2_PERSONAL: {
- mState.setSecurity(AccessPointState.WPA2);
+ case SECURITY_PSK: {
+ mState.setSecurity(AccessPointState.PSK);
break;
}
@@ -597,12 +587,8 @@
break;
}
- case SECURITY_WPA_EAP:
- mState.setSecurity(AccessPointState.WPA_EAP);
- break;
-
- case SECURITY_IEEE8021X:
- mState.setSecurity(AccessPointState.IEEE8021X);
+ case SECURITY_EAP:
+ mState.setSecurity(AccessPointState.EAP);
break;
case SECURITY_NONE:
@@ -612,9 +598,7 @@
}
if (mState.isEnterprise() && !mState.configured) {
- updateEnterpriseFields(
- AccessPointState.WPA_EAP.equals(mState.security) ?
- SECURITY_WPA_EAP : SECURITY_IEEE8021X);
+ updateEnterpriseFields();
}
if (!mWifiLayer.saveNetwork(mState)) {
@@ -642,57 +626,35 @@
getContext().getResources().getStringArray(arrayResId), selection);
}
- private void updateEnterpriseFields(int securityType) {
+ private void updateEnterpriseFields() {
int i;
String value;
for (i = AccessPointState.IDENTITY ;
- i <= AccessPointState.PRIVATE_KEY_PASSWD ; i++) {
+ i <= AccessPointState.ANONYMOUS_IDENTITY ; i++) {
value = mEnterpriseTextFields[i].getText().toString();
- if (!TextUtils.isEmpty(value) ||
- (i == AccessPointState.PRIVATE_KEY_PASSWD)) {
+ if (!TextUtils.isEmpty(value)) {
mState.setEnterpriseField(i, value);
}
}
Spinner spinner = mClientCertSpinner;
int index = spinner.getSelectedItemPosition();
if (index != (spinner.getCount() - 1)) {
- String key = (String)spinner.getSelectedItem();
- value = mCertTool.getUserCertificate(key);
- if (!TextUtils.isEmpty(value)) {
- mState.setEnterpriseField(AccessPointState.CLIENT_CERT,
- BLOB_HEADER + value);
- }
- value = mCertTool.getUserPrivateKey(key);
- if (!TextUtils.isEmpty(value)) {
- mState.setEnterpriseField(AccessPointState.PRIVATE_KEY,
- BLOB_HEADER + value);
- }
+ String key = (String) spinner.getSelectedItem();
+ mState.setEnterpriseField(AccessPointState.CLIENT_CERT,
+ KEYSTORE_HEADER + Credentials.USER_CERTIFICATE + key);
+ mState.setEnterpriseField(AccessPointState.PRIVATE_KEY,
+ KEYSTORE_HEADER + Credentials.USER_PRIVATE_KEY + key);
}
spinner = mCaCertSpinner;
index = spinner.getSelectedItemPosition();
if (index != (spinner.getCount() - 1)) {
- String key = (String)spinner.getSelectedItem();
- value = mCertTool.getCaCertificate(key);
- if (!TextUtils.isEmpty(value)) {
- mState.setEnterpriseField(AccessPointState.CA_CERT,
- BLOB_HEADER + value);
- }
+ String key = (String) spinner.getSelectedItem();
+ mState.setEnterpriseField(AccessPointState.CA_CERT,
+ KEYSTORE_HEADER + Credentials.CA_CERTIFICATE + key);
}
- switch (securityType) {
- case SECURITY_IEEE8021X:
- case SECURITY_WPA_EAP: {
- if (securityType == SECURITY_WPA_EAP) {
- mState.setSecurity(AccessPointState.WPA_EAP);
- } else {
- mState.setSecurity(AccessPointState.IEEE8021X);
- }
- mState.setEap(mEapSpinner.getSelectedItemPosition());
- mState.setPhase2((String)mPhase2Spinner.getSelectedItem());
- break;
- }
- default:
- mState.setSecurity(AccessPointState.OPEN);
- }
+ mState.setSecurity(AccessPointState.EAP);
+ mState.setEap(mEapSpinner.getSelectedItemPosition());
+ mState.setPhase2((String) mPhase2Spinner.getSelectedItem());
}
/**
@@ -785,24 +747,21 @@
setWepVisible(false);
setGenericPasswordVisible(mState.hasSecurity());
// Shows the generic 'wireless password'
- updatePasswordCaption(AccessPointState.WPA);
+ updatePasswordCaption(AccessPointState.PSK);
break;
}
-
- case SECURITY_WPA_PERSONAL:
- case SECURITY_WPA2_PERSONAL: {
+
+ case SECURITY_PSK: {
setWepVisible(false);
setGenericPasswordVisible(true);
// Both WPA and WPA2 show the same caption, so either is ok
- updatePasswordCaption(AccessPointState.WPA);
+ updatePasswordCaption(AccessPointState.PSK);
break;
}
- case SECURITY_WPA_EAP:
- case SECURITY_IEEE8021X: {
+ case SECURITY_EAP: {
// Unlock the keystore if it is not unlocked yet.
- if (Keystore.getInstance().getState() != Keystore.UNLOCKED) {
- getContext().startActivity(new Intent(
- SecuritySettings.ACTION_UNLOCK_CREDENTIAL_STORAGE));
+ if (mKeyStore.test() != KeyStore.NO_ERROR) {
+ Credentials.getInstance().unlock(getContext());
return;
}
enableEnterpriseFields();
diff --git a/src/com/android/settings/wifi/AccessPointPreference.java b/src/com/android/settings/wifi/AccessPointPreference.java
index 10e0947..6dd5492 100644
--- a/src/com/android/settings/wifi/AccessPointPreference.java
+++ b/src/com/android/settings/wifi/AccessPointPreference.java
@@ -33,14 +33,11 @@
// Signal strength indicator
private static final int UI_SIGNAL_LEVELS = 4;
- private WifiSettings mWifiSettings;
-
private AccessPointState mState;
public AccessPointPreference(WifiSettings wifiSettings, AccessPointState state) {
super(wifiSettings, null);
- mWifiSettings = wifiSettings;
mState = state;
setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 899c304..5aefa55 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -38,15 +38,11 @@
private static final String TAG = "AccessPointState";
// Constants used for different security types
- public static final String WPA2 = "WPA2";
- public static final String WPA = "WPA";
+ public static final String PSK = "PSK";
public static final String WEP = "WEP";
+ public static final String EAP = "EAP";
public static final String OPEN = "Open";
- /* For EAP Enterprise fields */
- public static final String WPA_EAP = "WPA-EAP";
- public static final String IEEE8021X = "IEEE8021X";
-
public static final String[] EAP_METHOD = { "PEAP", "TLS", "TTLS" };
/** String present in capabilities if the scan result is ad-hoc */
@@ -103,11 +99,10 @@
/* Enterprise Fields */
public static final int IDENTITY = 0;
public static final int ANONYMOUS_IDENTITY = 1;
- public static final int PRIVATE_KEY_PASSWD = 2;
- public static final int CLIENT_CERT = 3;
- public static final int CA_CERT = 4;
- public static final int PRIVATE_KEY = 5;
- public static final int MAX_ENTRPRISE_FIELD = 6;
+ public static final int CLIENT_CERT = 2;
+ public static final int CA_CERT = 3;
+ public static final int PRIVATE_KEY = 4;
+ public static final int MAX_ENTRPRISE_FIELD = 5;
private String mEnterpriseFields[] = new String[MAX_ENTRPRISE_FIELD];
private String mEap;
private String mPhase2;
@@ -278,8 +273,7 @@
}
public boolean isEnterprise() {
- return (WPA_EAP.equals(security) ||
- AccessPointState.IEEE8021X.equals(security));
+ return (AccessPointState.EAP.equals(security));
}
public void setSecurity(String security) {
@@ -296,10 +290,8 @@
public String getHumanReadableSecurity() {
if (security.equals(OPEN)) return mContext.getString(R.string.wifi_security_open);
else if (security.equals(WEP)) return mContext.getString(R.string.wifi_security_wep);
- else if (security.equals(WPA)) return mContext.getString(R.string.wifi_security_wpa);
- else if (security.equals(WPA2)) return mContext.getString(R.string.wifi_security_wpa2);
- else if (security.equals(WPA_EAP)) return mContext.getString(R.string.wifi_security_wpa_eap);
- else if (security.equals(IEEE8021X)) return mContext.getString(R.string.wifi_security_ieee8021x);
+ else if (security.equals(PSK)) return mContext.getString(R.string.wifi_security_psk);
+ else if (security.equals(EAP)) return mContext.getString(R.string.wifi_security_eap);
return mContext.getString(R.string.wifi_security_unknown);
}
@@ -325,7 +317,7 @@
*/
public static String getScanResultSecurity(ScanResult scanResult) {
final String cap = scanResult.capabilities;
- final String[] securityModes = { WEP, WPA, WPA2, WPA_EAP, IEEE8021X };
+ final String[] securityModes = { WEP, PSK, EAP };
for (int i = securityModes.length - 1; i >= 0; i--) {
if (cap.contains(securityModes[i])) {
return securityModes[i];
@@ -427,31 +419,14 @@
* @return The security of a given {@link WifiConfiguration}.
*/
public static String getWifiConfigurationSecurity(WifiConfiguration wifiConfig) {
-
- if (wifiConfig.allowedKeyManagement.get(KeyMgmt.NONE)) {
- // If we never set group ciphers, wpa_supplicant puts all of them.
- // For open, we don't set group ciphers.
- // For WEP, we specifically only set WEP40 and WEP104, so CCMP
- // and TKIP should not be there.
- if (!wifiConfig.allowedGroupCiphers.get(GroupCipher.CCMP)
- && (wifiConfig.allowedGroupCiphers.get(GroupCipher.WEP40)
- || wifiConfig.allowedGroupCiphers.get(GroupCipher.WEP104))) {
- return WEP;
- } else {
- return OPEN;
- }
- } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_EAP)) {
- return WPA_EAP;
- } else if (wifiConfig.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
- return IEEE8021X;
- } else if (wifiConfig.allowedProtocols.get(Protocol.RSN)) {
- return WPA2;
- } else if (wifiConfig.allowedProtocols.get(Protocol.WPA)) {
- return WPA;
- } else {
- Log.w(TAG, "Unknown security type from WifiConfiguration, falling back on open.");
- return OPEN;
+ if (!TextUtils.isEmpty(wifiConfig.eap.value())) {
+ return EAP;
+ } else if (!TextUtils.isEmpty(wifiConfig.preSharedKey)) {
+ return PSK;
+ } else if (!TextUtils.isEmpty(wifiConfig.wepKeys[0])) {
+ return WEP;
}
+ return OPEN;
}
public void updateFromWifiInfo(WifiInfo wifiInfo, NetworkInfo.DetailedState state) {
@@ -504,48 +479,42 @@
config.priority = priority;
config.hiddenSSID = hiddenSsid;
config.SSID = convertToQuotedString(ssid);
- config.eap = mEap;
+ config.eap.setValue(mEap);
if (!TextUtils.isEmpty(mPhase2)) {
- config.phase2 = convertToQuotedString("auth=" + mPhase2);
+ config.phase2.setValue(convertToQuotedString("auth=" + mPhase2));
} else {
- config.phase2 = null;
+ config.phase2.setValue(null);
}
if (!TextUtils.isEmpty(mEnterpriseFields[IDENTITY])) {
- config.identity =
- convertToQuotedString(mEnterpriseFields[IDENTITY]);
+ config.identity.setValue(
+ convertToQuotedString(mEnterpriseFields[IDENTITY]));
} else {
- config.identity = null;
+ config.identity.setValue(null);
}
if (!TextUtils.isEmpty(mEnterpriseFields[ANONYMOUS_IDENTITY])) {
- config.anonymousIdentity = convertToQuotedString(
- mEnterpriseFields[ANONYMOUS_IDENTITY]);
+ config.anonymous_identity.setValue(convertToQuotedString(
+ mEnterpriseFields[ANONYMOUS_IDENTITY]));
} else {
- config.anonymousIdentity = null;
+ config.anonymous_identity.setValue(null);
}
if (!TextUtils.isEmpty(mEnterpriseFields[CLIENT_CERT])) {
- config.clientCert = convertToQuotedString(
- mEnterpriseFields[CLIENT_CERT]);
+ config.client_cert.setValue(convertToQuotedString(
+ mEnterpriseFields[CLIENT_CERT]));
} else {
- config.clientCert = null;
+ config.client_cert.setValue(null);
}
if (!TextUtils.isEmpty(mEnterpriseFields[CA_CERT])) {
- config.caCert = convertToQuotedString(
- mEnterpriseFields[CA_CERT]);
+ config.ca_cert.setValue(convertToQuotedString(
+ mEnterpriseFields[CA_CERT]));
} else {
- config.caCert = null;
+ config.ca_cert.setValue(null);
}
if (!TextUtils.isEmpty(mEnterpriseFields[PRIVATE_KEY])) {
- config.privateKey = convertToQuotedString(
- mEnterpriseFields[PRIVATE_KEY]);
+ config.private_key.setValue(convertToQuotedString(
+ mEnterpriseFields[PRIVATE_KEY]));
} else {
- config.privateKey = null;
- }
- if (!TextUtils.isEmpty(mEnterpriseFields[PRIVATE_KEY_PASSWD])) {
- config.privateKeyPasswd = convertToQuotedString(
- mEnterpriseFields[PRIVATE_KEY_PASSWD]);
- } else {
- config.privateKeyPasswd = null;
+ config.private_key.setValue(null);
}
setupSecurity(config);
}
@@ -563,7 +532,6 @@
}
if (security.equals(WEP)) {
-
// If password is empty, it should be left untouched
if (!TextUtils.isEmpty(mPassword)) {
if (mWepPasswordType == WEP_PASSWORD_AUTO) {
@@ -578,28 +546,11 @@
: mPassword;
}
}
-
- config.wepTxKeyIndex = 0;
-
config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
-
config.allowedKeyManagement.set(KeyMgmt.NONE);
-
- config.allowedGroupCiphers.set(GroupCipher.WEP40);
- config.allowedGroupCiphers.set(GroupCipher.WEP104);
-
- } else if (security.equals(WPA) || security.equals(WPA2)){
- config.allowedGroupCiphers.set(GroupCipher.TKIP);
- config.allowedGroupCiphers.set(GroupCipher.CCMP);
-
- config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
-
- config.allowedPairwiseCiphers.set(PairwiseCipher.CCMP);
- config.allowedPairwiseCiphers.set(PairwiseCipher.TKIP);
-
- config.allowedProtocols.set(security.equals(WPA2) ? Protocol.RSN : Protocol.WPA);
-
+ config.wepTxKeyIndex = 0;
+ } else if (security.equals(PSK)){
// If password is empty, it should be left untouched
if (!TextUtils.isEmpty(mPassword)) {
if (mPassword.length() == 64 && isHex(mPassword)) {
@@ -610,20 +561,14 @@
config.preSharedKey = convertToQuotedString(mPassword);
}
}
-
+ } else if (security.equals(EAP)) {
+ config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
+ config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
+ if (!TextUtils.isEmpty(mPassword)) {
+ config.password.setValue(convertToQuotedString(mPassword));
+ }
} else if (security.equals(OPEN)) {
config.allowedKeyManagement.set(KeyMgmt.NONE);
- } else if (security.equals(WPA_EAP) || security.equals(IEEE8021X)) {
- config.allowedGroupCiphers.set(GroupCipher.TKIP);
- config.allowedGroupCiphers.set(GroupCipher.CCMP);
- if (security.equals(WPA_EAP)) {
- config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
- } else {
- config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
- }
- if (!TextUtils.isEmpty(mPassword)) {
- config.password = convertToQuotedString(mPassword);
- }
}
}
@@ -825,16 +770,10 @@
private String getVerboseSecurity() {
if (WEP.equals(security)) {
return mContext.getString(R.string.wifi_security_verbose_wep);
- } else if (WPA.equals(security)) {
- return mContext.getString(R.string.wifi_security_verbose_wpa);
- } else if (WPA2.equals(security)) {
- return mContext.getString(R.string.wifi_security_verbose_wpa2);
- } else if (OPEN.equals(security)) {
- return mContext.getString(R.string.wifi_security_verbose_open);
- } else if (WPA_EAP.equals(security)) {
- return mContext.getString(R.string.wifi_security_verbose_wpa_eap);
- } else if (IEEE8021X.equals(security)) {
- return mContext.getString(R.string.wifi_security_verbose_ieee8021x);
+ } else if (PSK.equals(security)) {
+ return mContext.getString(R.string.wifi_security_verbose_psk);
+ } else if (EAP.equals(security)) {
+ return mContext.getString(R.string.wifi_security_verbose_eap);
} else {
return null;
}
diff --git a/src/com/android/settings/wifi/AdvancedSettings.java b/src/com/android/settings/wifi/AdvancedSettings.java
index 323d5c7..5906e70 100644
--- a/src/com/android/settings/wifi/AdvancedSettings.java
+++ b/src/com/android/settings/wifi/AdvancedSettings.java
@@ -64,11 +64,19 @@
addPreferencesFromResource(R.xml.wifi_advanced_settings);
mUseStaticIpCheckBox = (CheckBoxPreference) findPreference(KEY_USE_STATIC_IP);
+ mUseStaticIpCheckBox.setOnPreferenceChangeListener(this);
for (int i = 0; i < mPreferenceKeys.length; i++) {
Preference preference = findPreference(mPreferenceKeys[i]);
preference.setOnPreferenceChangeListener(this);
}
+
+ /*
+ * Fix the Run-time IllegalStateException that ListPreference requires an entries
+ * array and an entryValues array, this exception occurs when user open/close the
+ * slider in the Regulatory domain dialog.
+ */
+ initNumChannelsPreference();
}
@Override
@@ -141,7 +149,7 @@
try {
int numChannels = Integer.parseInt((String) newValue);
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
- if (!wifiManager.setNumAllowedChannels(numChannels)) {
+ if (!wifiManager.setNumAllowedChannels(numChannels, true)) {
Toast.makeText(this, R.string.wifi_setting_num_channels_error,
Toast.LENGTH_SHORT).show();
}
@@ -160,7 +168,16 @@
Toast.LENGTH_SHORT).show();
return false;
}
-
+
+ } else if (key.equals(KEY_USE_STATIC_IP)) {
+ boolean value = ((Boolean) newValue).booleanValue();
+
+ try {
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.WIFI_USE_STATIC_IP, value ? 1 : 0);
+ } catch (NumberFormatException e) {
+ return false;
+ }
} else {
String value = (String) newValue;
@@ -170,6 +187,12 @@
}
preference.setSummary(value);
+ for (int i = 0; i < mSettingNames.length; i++) {
+ if (key.equals(mPreferenceKeys[i])) {
+ Settings.System.putString(getContentResolver(), mSettingNames[i], value);
+ break;
+ }
+ }
}
return true;
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 88cfe06..10a672b 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -23,6 +23,7 @@
import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;
import com.android.settings.R;
+import com.android.settings.AirplaneModeEnabler;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -32,6 +33,7 @@
import android.net.wifi.WifiManager;
import android.preference.Preference;
import android.preference.CheckBoxPreference;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.Config;
import android.util.Log;
@@ -121,7 +123,7 @@
mWifiCheckBoxPref
.setSummary(wifiState == WIFI_STATE_DISABLED ? mOriginalSummary : null);
- mWifiCheckBoxPref.setEnabled(isEnabledByDependency());
+ mWifiCheckBoxPref.setEnabled(isWifiAllowed(mContext));
} else if (wifiState == WIFI_STATE_DISABLING || wifiState == WIFI_STATE_ENABLING) {
mWifiCheckBoxPref.setSummary(wifiState == WIFI_STATE_ENABLING ? R.string.wifi_starting
@@ -151,24 +153,23 @@
}
}
- private boolean isEnabledByDependency() {
- Preference dep = getDependencyPreference();
- if (dep == null) {
+ private static boolean isWifiAllowed(Context context) {
+ // allowed if we are not in airplane mode
+ if (!AirplaneModeEnabler.isAirplaneModeOn(context)) {
return true;
}
-
- return !dep.shouldDisableDependents();
- }
-
- private Preference getDependencyPreference() {
- String depKey = mWifiCheckBoxPref.getDependency();
- if (TextUtils.isEmpty(depKey)) {
- return null;
+ // allowed if wifi is not in AIRPLANE_MODE_RADIOS
+ String radios = Settings.System.getString(context.getContentResolver(),
+ Settings.System.AIRPLANE_MODE_RADIOS);
+ if (radios == null || !radios.contains(Settings.System.RADIO_WIFI)) {
+ return true;
}
-
- return mWifiCheckBoxPref.getPreferenceManager().findPreference(depKey);
+ // allowed if wifi is in AIRPLANE_MODE_TOGGLEABLE_RADIOS
+ radios = Settings.System.getString(context.getContentResolver(),
+ Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
+ return (radios != null && radios.contains(Settings.System.RADIO_WIFI));
}
-
+
private static String getHumanReadableWifiState(int wifiState) {
switch (wifiState) {
case WIFI_STATE_DISABLED:
diff --git a/src/com/android/settings/wifi/WifiLayer.java b/src/com/android/settings/wifi/WifiLayer.java
index 5d896aa..ce518e1 100644
--- a/src/com/android/settings/wifi/WifiLayer.java
+++ b/src/com/android/settings/wifi/WifiLayer.java
@@ -774,7 +774,9 @@
* We pass null for security since we have a network ID (i.e., it's
* not a wildcard), and rely on it matching.
*/
- return findApLocked(wifiInfo.getNetworkId(), wifiInfo.getBSSID(), ssid, null);
+ synchronized (this) {
+ return findApLocked(wifiInfo.getNetworkId(), wifiInfo.getBSSID(), ssid, null);
+ }
} else {
return null;
}
@@ -1013,8 +1015,10 @@
* We pass null for security since we have a network ID (i.e., it's
* not a wildcard), and rely on it matching.
*/
- ap = findApLocked(wifiInfo.getNetworkId(), wifiInfo.getBSSID(), wifiInfo
- .getSSID(), null);
+ synchronized (this) {
+ ap = findApLocked(wifiInfo.getNetworkId(), wifiInfo.getBSSID(), wifiInfo
+ .getSSID(), null);
+ }
}
if (ap != null) {
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index f18992a..361f159 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -18,7 +18,6 @@
import com.android.settings.ProgressCategory;
import com.android.settings.R;
-import com.android.settings.SecuritySettings;
import android.app.Dialog;
import android.content.DialogInterface;
@@ -30,7 +29,8 @@
import android.preference.PreferenceScreen;
import android.preference.CheckBoxPreference;
import android.provider.Settings;
-import android.security.Keystore;
+import android.security.Credentials;
+import android.security.KeyStore;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
@@ -87,6 +87,7 @@
private WeakHashMap<AccessPointState, AccessPointPreference> mAps;
+ private KeyStore mKeyStore = KeyStore.getInstance();
private AccessPointState mResumeState = null;
private int mResumeMode;
@@ -157,14 +158,14 @@
mWifiEnabler.resume();
// do what we should have after keystore is unlocked.
if (mResumeState != null) {
- if (Keystore.getInstance().getState() == Keystore.UNLOCKED) {
+ if (mKeyStore.test() == KeyStore.NO_ERROR) {
showAccessPointDialog(mResumeState, mResumeMode);
}
mResumeMode = -1;
mResumeState = null;
} else {
if (mResumeMode == AccessPointDialog.MODE_CONFIGURE) {
- if (Keystore.getInstance().getState() == Keystore.UNLOCKED) {
+ if (mKeyStore.test() == KeyStore.NO_ERROR) {
((AccessPointDialog) mDialog).enableEnterpriseFields();
}
}
@@ -373,10 +374,8 @@
}
public void showAccessPointDialog(AccessPointState state, int mode) {
- if (state.isEnterprise() &&
- Keystore.getInstance().getState() != Keystore.UNLOCKED) {
- startActivity(new Intent(
- SecuritySettings.ACTION_UNLOCK_CREDENTIAL_STORAGE));
+ if (state.isEnterprise() && mKeyStore.test() != KeyStore.NO_ERROR) {
+ Credentials.getInstance().unlock(this);
mResumeState = state;
mResumeMode = mode;
return;
@@ -394,8 +393,8 @@
}
mDialog = dialog;
- dialog.setOnDismissListener(this);
if (dialog != null) {
+ dialog.setOnDismissListener(this);
dialog.show();
}
}