diff --git a/Android.mk b/Android.mk
index dedda01..0955671 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,7 +1,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := user
+LOCAL_MODULE_TAGS := user development
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7dece18..aed3252 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -5,9 +5,11 @@
     <uses-permission android:name="com.google.android.providers.gmail.permission.WRITE_GMAIL" />
     <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.CHANGE_CONFIGURATION" />
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
     <uses-permission android:name="android.permission.HARDWARE_TEST" />
     <uses-permission android:name="android.permission.CALL_PHONE" />
@@ -51,7 +53,9 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.WIRELESS_SETTINGS" />
+                <action android:name="android.settings.AIRPLANE_MODE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -65,6 +69,7 @@
                 <action android:name="android.settings.WIFI_SETTINGS" />
                 <action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -72,6 +77,8 @@
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.WIFI_IP_SETTINGS" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -81,16 +88,17 @@
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APN_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
-        <activity android:name="BluetoothSettings"
+        <activity android:name=".bluetooth.BluetoothSettings"
                   android:label="@string/bluetooth_settings_title"
-                  android:configChanges="keyboardHidden|orientation"
                   android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.BLUETOOTH_SETTINGS" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -99,6 +107,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.DATE_SETTINGS" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -114,6 +123,7 @@
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.LOCALE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
         
@@ -131,6 +141,15 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="InputMethodsSettings" android:icon="@drawable/app_settings"
+                android:label="@string/input_methods_settings_title"
+                android:theme="@android:style/Theme.NoTitleBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="SoundAndDisplaySettings" android:label="@string/sound_and_display_settings"
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
@@ -138,6 +157,7 @@
                 <action android:name="com.android.settings.SOUND_SETTINGS" />
                 <action android:name="com.android.settings.DISPLAY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -146,6 +166,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -164,6 +185,7 @@
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APPLICATION_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -171,8 +193,10 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.MANAGE_PACKAGE_STORAGE" />
+                <action android:name="android.settings.MANAGE_APPLICATIONS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.MONKEY" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
         
@@ -180,6 +204,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -190,6 +215,7 @@
                 <action android:name="android.settings.SECURITY_SETTINGS" />
                 <action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -199,6 +225,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -233,12 +260,13 @@
 
         <activity android:name="ZoneList" android:label="@string/choose_timezone" />
 
-        <activity android:name=".deviceinfo.Status" android:label="@string/device_status"
+        <activity android:name=".deviceinfo.Status" android:label="@string/device_status_activity_title"
                 android:process="com.android.phone"
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -246,7 +274,10 @@
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.INTERNAL_STORAGE_SETTINGS" />
+                <action android:name="android.settings.MEMORY_CARD_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -275,12 +306,15 @@
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="com.android.settings.QUICK_LAUNCH_SETTINGS" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
         
         <activity android:name=".quicklaunch.BookmarkPicker" android:label="@string/quick_launch_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -289,6 +323,7 @@
                 android:theme="@android:style/Theme.NoTitleBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
             </intent-filter>
         </activity>
 
@@ -308,22 +343,26 @@
             </intent-filter>
         </receiver>
 
-        <activity android:name="BluetoothPINEntry"
-                  android:label="@string/bluetooth_pin_entry"
-                  android:theme="@android:style/Theme.Dialog">
-            <!--intent-filter>
-                <action android:name="android.bluetooth.intent.action.PAIRING_REQUEST" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter-->
-        </activity>
+        <!-- Bluetooth stuff -->
 
-        <!-- Ignore Bluetooth Pairing Requests when not in BluetoothSettings
-        <receiver android:name="BluetoothPinRequest">
+        <activity android:name=".bluetooth.ConnectSpecificProfilesActivity"
+                  android:label="@string/bluetooth_connect_specific_profiles_title" />
+
+        <activity android:name=".bluetooth.BluetoothPinDialog"
+                  android:label="@string/bluetooth_pin_entry"
+                  android:theme="@*android:style/Theme.Dialog.Alert">
             <intent-filter>
                 <action android:name="android.bluetooth.intent.action.PAIRING_REQUEST" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <receiver android:name=".bluetooth.BluetoothPinRequest">
+            <intent-filter>
+                <action android:name="android.bluetooth.intent.action.PAIRING_REQUEST" />
+                <action android:name="android.bluetooth.intent.action.PAIRING_CANCEL" />
             </intent-filter>
         </receiver>
-        -->
 
         <activity android:name="ActivityPicker" android:label="@string/activity_picker_label">
             <intent-filter>
@@ -349,6 +388,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -363,6 +403,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -386,6 +427,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -394,6 +436,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
@@ -404,6 +447,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity>
 
diff --git a/res/drawable/border_item_thumbnail.png b/res/drawable/border_item_thumbnail.png
new file mode 100755
index 0000000..6454138
--- /dev/null
+++ b/res/drawable/border_item_thumbnail.png
Binary files differ
diff --git a/res/drawable/ic_bluetooth_connected.png b/res/drawable/ic_bluetooth_connected.png
deleted file mode 100644
index 0db03e1..0000000
--- a/res/drawable/ic_bluetooth_connected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_bluetooth_discovered.png b/res/drawable/ic_bluetooth_discovered.png
deleted file mode 100644
index f24addc..0000000
--- a/res/drawable/ic_bluetooth_discovered.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_bluetooth_paired.png b/res/drawable/ic_bluetooth_paired.png
deleted file mode 100644
index 7b5911b..0000000
--- a/res/drawable/ic_bluetooth_paired.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_bluetooth_paired_not_nearby.png b/res/drawable/ic_bluetooth_paired_not_nearby.png
deleted file mode 100644
index 8fb916a..0000000
--- a/res/drawable/ic_bluetooth_paired_not_nearby.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_bt_cellphone.png b/res/drawable/ic_bt_cellphone.png
new file mode 100755
index 0000000..4bf7ba5
--- /dev/null
+++ b/res/drawable/ic_bt_cellphone.png
Binary files differ
diff --git a/res/drawable/ic_bt_headphones_a2dp.png b/res/drawable/ic_bt_headphones_a2dp.png
new file mode 100755
index 0000000..b9bfec6
--- /dev/null
+++ b/res/drawable/ic_bt_headphones_a2dp.png
Binary files differ
diff --git a/res/drawable/ic_bt_headset_hfp.png b/res/drawable/ic_bt_headset_hfp.png
new file mode 100644
index 0000000..cd91841
--- /dev/null
+++ b/res/drawable/ic_bt_headset_hfp.png
Binary files differ
diff --git a/res/drawable/ic_bt_laptop.png b/res/drawable/ic_bt_laptop.png
new file mode 100755
index 0000000..49a71c9
--- /dev/null
+++ b/res/drawable/ic_bt_laptop.png
Binary files differ
diff --git a/res/drawable/ic_btn_finish.png b/res/drawable/ic_btn_finish.png
deleted file mode 100644
index 18a4d23..0000000
--- a/res/drawable/ic_btn_finish.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_menu_scan_bluetooth.png b/res/drawable/ic_menu_scan_bluetooth.png
deleted file mode 100644
index c1184ad..0000000
--- a/res/drawable/ic_menu_scan_bluetooth.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_wifi_lock_signal_0.png b/res/drawable/ic_wifi_lock_signal_0.png
deleted file mode 100755
index 19ca926..0000000
--- a/res/drawable/ic_wifi_lock_signal_0.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_wifi_signal_0.png b/res/drawable/ic_wifi_signal_0.png
deleted file mode 100755
index 4063b7b..0000000
--- a/res/drawable/ic_wifi_signal_0.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/bluetooth_pin_entry.xml b/res/layout/bluetooth_pin_entry.xml
index 6969cb7..6739f84 100644
--- a/res/layout/bluetooth_pin_entry.xml
+++ b/res/layout/bluetooth_pin_entry.xml
@@ -16,12 +16,34 @@
 ** limitations under the License.
 */
 -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="wrap_content"
+
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="fill_parent"
     android:layout_width="fill_parent">
-  <EditText android:id="@+id/text"
-          android:layout_height="wrap_content"
-          android:layout_width="fill_parent"
-          android:layout_marginLeft="20dip"
-          android:layout_marginRight="20dip" />
-</LinearLayout>
+
+    <LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_height="fill_parent"
+        android:layout_width="fill_parent"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/message"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <EditText
+            android:id="@+id/text"
+            android:layout_height="wrap_content"
+            android:layout_width="fill_parent"
+            android:layout_marginTop="20dip"
+            android:layout_marginLeft="20dip"
+            android:layout_marginRight="20dip"
+            android:singleLine="true" />
+
+    </LinearLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/res/layout/compute_sizes.xml b/res/layout/compute_sizes.xml
index c781227..bba8c63 100755
--- a/res/layout/compute_sizes.xml
+++ b/res/layout/compute_sizes.xml
@@ -14,25 +14,25 @@
      limitations under the License.
 -->
 
-<RelativeLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
-
-    <TextView
-        android:id="@+id/center_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerVertical="true"
-        android:textSize="18sp"
-        android:textStyle="bold"
-        android:padding="2dip"
-        android:text="@string/computing_size"/>
     <ListView 
         android:id="@android:id/list"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">
     </ListView>
-</RelativeLayout>
+    <TextView android:id="@android:id/empty"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:paddingLeft="20dip"
+        android:paddingTop="5dip"
+        android:text="@string/empty_list_msg"
+        android:textSize="15sp" />
+</LinearLayout>
 
 
diff --git a/res/layout/installed_app_details.xml b/res/layout/installed_app_details.xml
index c9c00a7..6ca92d2 100644
--- a/res/layout/installed_app_details.xml
+++ b/res/layout/installed_app_details.xml
@@ -62,13 +62,7 @@
 
         <TextView
             style="?android:attr/listSeparatorTextViewStyle"
-            android:text="@string/storage_label"
-            android:background="@*android:drawable/settings_header" 
-            android:textSize="18sp"
-            android:paddingTop="6dip" 
-            android:paddingLeft="6dip" 
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content" />
+            android:text="@string/storage_label" />
 
         <LinearLayout
             android:layout_width="fill_parent"
@@ -84,8 +78,7 @@
                 <TextView
                     android:id="@+id/total_size_prefix"
                     android:text="@string/total_size_label"
-                    android:textColor="?android:attr/textColorPrimary"
-                    android:textSize="18sp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1"
@@ -105,10 +98,9 @@
                     android:scaleType="center" />
                 <TextView
                     android:id="@+id/total_size_text"
-                    android:textSize="18sp"
                     android:paddingTop="6dip"
                     android:paddingRight="6dip"
-                    android:textColor="?android:attr/textColorPrimary"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1" />
@@ -123,8 +115,7 @@
                 <TextView
                     android:id="@+id/application_size_prefix"
                     android:text="@string/application_size_label"
-                    android:textColor="?android:attr/textColorPrimary"
-                    android:textSize="18sp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1"
@@ -143,10 +134,9 @@
                     android:scaleType="center" />
                 <TextView
                     android:id="@+id/application_size_text"
-                    android:textSize="18sp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:paddingTop="6dip"
                     android:paddingRight="6dip"
-                    android:textColor="?android:attr/textColorPrimary"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1" />
@@ -162,8 +152,7 @@
                 <TextView
                     android:id="@+id/data_size_prefix"
                     android:text="@string/data_size_label"
-                    android:textColor="?android:attr/textColorPrimary"
-                    android:textSize="18sp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1"
@@ -182,10 +171,9 @@
                     android:scaleType="center" />
                 <TextView
                     android:id="@+id/data_size_text"
-                    android:textSize="18sp"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
                     android:paddingTop="6dip"
                     android:paddingRight="6dip"
-                    android:textColor="?android:attr/textColorPrimary"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:maxLines="1" />
@@ -223,20 +211,73 @@
                     android:layout_height="wrap_content"/>
             </LinearLayout>
         </LinearLayout>
+
+        <!-- Clear cache section -->
+        <RelativeLayout
+            android:id="@+id/cache_panel"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content" >
+            <TextView
+                android:id="@+id/cache_header"
+                style="?android:attr/listSeparatorTextViewStyle"
+                android:text="@string/cache_header_label" />
+            <LinearLayout
+                android:id="@+id/cache_size"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:baselineAligned="true"
+                android:layout_below="@id/cache_header"
+                android:paddingTop="-1dip">
+                <TextView
+                    android:text="@string/cache_size_label"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:maxLines="1"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:paddingTop="6dip"
+                    android:gravity="center_vertical"
+                    android:paddingLeft="6dip"/>
+                <ImageView
+                    android:src="@drawable/dotted_line_480px"
+                    android:layout_width="0dip"
+                    android:layout_weight="1"
+                    android:layout_height="1px"
+                    android:layout_gravity="bottom"
+                    android:layout_marginLeft="1dip"
+                    android:layout_marginRight="1dip"
+                    android:layout_marginBottom="4dip"
+                    android:scaleType="center" />
+                <TextView
+                    android:id="@+id/cache_size_text"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:paddingTop="6dip"
+                    android:paddingRight="6dip"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:maxLines="1" />
+            </LinearLayout>
+
+            <Button android:id="@+id/clear_cache_button"
+                android:layout_alignParentRight="true"
+                android:layout_below="@id/cache_size"
+                android:layout_centerHorizontal="true"
+                android:layout_width="150dip"
+                android:text="@string/clear_cache_btn_text"
+                android:layout_height="wrap_content" />
+        </RelativeLayout>
+
+        <!-- Prefered activities section -->
         <TextView
             style="?android:attr/listSeparatorTextViewStyle"
-            android:text="@string/auto_launch_label"
-            android:background="@*android:drawable/settings_header"
-            android:paddingTop="6dip"
-            android:paddingLeft="6dip"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content" />
+            android:text="@string/auto_launch_label" />
 
         <RelativeLayout 
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical">
             <TextView android:id="@+id/auto_launch"
+                android:textAppearance="?android:attr/textAppearanceSmall"
                 android:layout_alignParentLeft="true"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
@@ -251,29 +292,30 @@
                 android:text="@string/clear_activities"
                  android:layout_height="wrap_content" />
         </RelativeLayout>
+
         <!-- Permissions section -->
-        <TextView
-            style="?android:attr/listSeparatorTextViewStyle"
-            android:text="@string/permissions_label"
-            android:background="@*android:drawable/settings_header"
-            android:textSize="18sp"
-            android:paddingTop="6dip"
-            android:paddingLeft="6dip"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content" />
-        <TextView
-            android:text="@string/security_settings_desc"
-            android:textSize="14sp"
-            android:paddingTop="6dip"
-            android:paddingLeft="6dip"
-            android:paddingBottom="6dip"
-            android:layout_width="fill_parent"
-            android:layout_height="wrap_content" />
-         <LinearLayout
-            android:id="@+id/security_settings_list"
+        <LinearLayout
+            android:id="@+id/permissions_section"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
-            android:orientation="vertical"/>
+            android:orientation="vertical">
+            <TextView
+                style="?android:attr/listSeparatorTextViewStyle"
+                android:text="@string/permissions_label" />
+            <TextView
+                android:text="@string/security_settings_desc"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+                android:paddingTop="6dip"
+                android:paddingLeft="6dip"
+                android:paddingBottom="6dip"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content" />
+            <LinearLayout
+                android:id="@+id/security_settings_list"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:orientation="vertical"/>
+        </LinearLayout>
     </LinearLayout>
 </ScrollView>
 
diff --git a/res/layout/manage_applications_item.xml b/res/layout/manage_applications_item.xml
index fb77d29..78addc9 100755
--- a/res/layout/manage_applications_item.xml
+++ b/res/layout/manage_applications_item.xml
@@ -27,10 +27,19 @@
         android:layout_width="@android:dimen/app_icon_size"
         android:layout_height="@android:dimen/app_icon_size"
         android:layout_alignParentLeft="true"
-        android:paddingLeft="6dip"
-        android:paddingTop="6dip"
-        android:paddingBottom="6dip"
-        android:scaleType="fitCenter" />
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:background="@drawable/border_item_thumbnail" />
+
+    <TextView android:id="@+id/app_size"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:layout_alignParentRight="true"
+        android:paddingRight="6dip"
+        android:paddingLeft="12dip"
+        android:paddingTop="16dip"
+        android:maxLines="1" />
 
     <TextView android:id="@+id/app_name"
         android:layout_width="wrap_content"
@@ -38,25 +47,9 @@
         android:textAppearance="?android:attr/textAppearanceLarge"
         android:textColor="?android:attr/textColorPrimary"
         android:layout_toRightOf="@id/app_icon"
-        android:paddingLeft="6dip"
+        android:layout_toLeftOf="@id/app_size"
+        android:layout_alignTop="@id/app_icon"
+        android:paddingLeft="2dip"
         android:paddingTop="6dip"/>
-
-    <TextView android:id="@+id/app_description"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:layout_below="@+id/app_name"
-        android:layout_toRightOf="@id/app_icon"
-        android:paddingLeft="6dip"
-        android:paddingBottom="6dip"/>
-    <TextView android:id="@+id/app_size"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:layout_alignParentRight="true"
-        android:layout_below="@+id/app_name"
-        android:paddingRight="6dip"
-        android:maxLines="1" />
-
 </RelativeLayout>
 
diff --git a/res/layout/preference_bluetooth.xml b/res/layout/preference_bluetooth.xml
new file mode 100644
index 0000000..e832f20
--- /dev/null
+++ b/res/layout/preference_bluetooth.xml
@@ -0,0 +1,56 @@
+<?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.
+-->
+
+<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:gravity="center_vertical"
+    android:paddingLeft="16dip"
+    android:paddingRight="?android:attr/scrollbarSize">
+    
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        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" />
+            
+        <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>
+
+    <ImageView
+        android:id="@+id/btClass"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="12dip"
+        android:layout_gravity="center_vertical" />
+
+</LinearLayout>
diff --git a/res/layout/preference_dialog_ringervolume.xml b/res/layout/preference_dialog_ringervolume.xml
new file mode 100644
index 0000000..63cc97a
--- /dev/null
+++ b/res/layout/preference_dialog_ringervolume.xml
@@ -0,0 +1,71 @@
+<?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.
+-->
+
+<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" />
+            
+    <TextView
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/incoming_call_volume_title"
+            android:paddingTop="20dip"
+            android:paddingLeft="20dip" 
+            android:paddingRight="20dip" />
+    
+    <!-- Used for the ring volume.  This is what the superclass VolumePreference uses. -->
+    <SeekBar android:id="@*android:id/seekbar"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="6dip" 
+            android:paddingLeft="20dip" 
+            android:paddingRight="20dip" />
+        
+    <CheckBox android:id="@+id/same_notification_volume"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/checkbox_notification_same_as_incoming_call"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:layout_marginTop="6dip"
+            android:layout_marginLeft="20dip" 
+            android:layout_marginRight="20dip" />
+
+    <TextView android:id="@+id/notification_volume_title"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/notification_volume_title"
+            android:paddingTop="6dip"
+            android:paddingLeft="20dip" 
+            android:paddingRight="20dip" />
+    
+    <!-- Used for the notification volume -->
+    <SeekBar android:id="@+id/notification_volume_seekbar"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="6dip" 
+            android:paddingLeft="20dip" 
+            android:paddingRight="20dip" />
+    
+</LinearLayout>
+ 
diff --git a/res/layout/preference_progress_category.xml b/res/layout/preference_progress_category.xml
index 01c7b15..f2f2c9d 100644
--- a/res/layout/preference_progress_category.xml
+++ b/res/layout/preference_progress_category.xml
@@ -32,7 +32,7 @@
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
-        android:layout_marginRight="5sp"
+        android:layout_marginRight="?android:attr/scrollbarSize"
         style="?android:attr/progressBarStyleSmallTitle"
         />
         
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f68a0ed..9cc1cff 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1,445 +1,883 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="activity_picker_label">Vybrat činnost</string>
-  <string name="airplane_mode">Režim Letadlo</string>
-  <string name="android_id_label">ID Android</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Upravit přístupový bod</string>
-  <string name="apn_http_port">Port</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">Port MMS</string>
-  <string name="apn_mms_proxy">Proxy MMS</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Název</string>
-  <string name="apn_not_set">&lt;Nenastaveno&gt;</string>
-  <string name="apn_password">Heslo</string>
-  <string name="apn_server">Server</string>
-  <string name="apn_settings">APN</string>
-  <string name="apn_user">Uživatelské jméno</string>
-  <string name="app_launcher_newView_text">Nový panel spouštění aplikací</string>
-  <string name="band_mode_failed">Neúspěch</string>
-  <string name="band_mode_loading">Načítá se seznam pásem\u2026</string>
-  <string name="band_mode_set">Nastavit</string>
-  <string name="band_mode_succeeded">Úspěch</string>
-  <string name="band_mode_title">Nastavit pásmo GSM/UMTS</string>
-  <string name="baseband_version">Verze základního pásma</string>
-  <string name="basic_settings_title">Základní nastavení</string>
-  <string name="battery_info_health_dead">Vybitá</string>
-  <string name="battery_info_health_good">Dobrý</string>
-  <string name="battery_info_health_label">Stav baterie:</string>
-  <string name="battery_info_health_over_voltage">Přepětí</string>
-  <string name="battery_info_health_overheat">Přehřátí</string>
-  <string name="battery_info_health_unknown">Neznámý</string>
-  <string name="battery_info_health_unspecified_failure">Nespecifikované selhání</string>
-  <string name="battery_info_label">Informace o baterii</string>
-  <string name="battery_info_level_label">Úroveň nabití baterie:</string>
-  <string name="battery_info_scale_label">Stupnice baterie:</string>
-  <string name="battery_info_status_charging">Nabíjení</string>
-  <string name="battery_info_status_charging_ac">(STŘ)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">Vybíjení</string>
-  <string name="battery_info_status_full">Plná</string>
-  <string name="battery_info_status_label">Stav baterie:</string>
-  <string name="battery_info_status_not_charging">Bez nabíjení</string>
-  <string name="battery_info_status_unknown">Neznámý</string>
-  <string name="battery_info_technology_label">Technologie baterie:</string>
-  <string name="battery_info_temperature_label">Teplota baterie:</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_voltage_label">Napětí baterie:</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Vymazat seznam zařízení</string>
-  <string name="bluetooth_connectable">Pouze připojitelné</string>
-  <string name="bluetooth_connected">Připojeno</string>
-  <string name="bluetooth_connecting">Připojování\u2026</string>
-  <string name="bluetooth_device">handsfree / sluchátko s mikrofonem</string>
-  <string name="bluetooth_device_info">Informace o zařízení Bluetooth</string>
-  <string name="bluetooth_device_info_alias">Název zařízení</string>
-  <string name="bluetooth_device_info_delete">Odebrat zařízení</string>
-  <string name="bluetooth_device_info_no_alias">Zde zadejte název\u2026</string>
-  <string name="bluetooth_device_info_sdp">Seznam podporovaných služeb</string>
-  <string name="bluetooth_device_name">Název zařízení</string>
-  <string name="bluetooth_devices">Zařízení Bluetooth</string>
-  <string name="bluetooth_disabled">Připojení Bluetooth je vypnuto</string>
-  <string name="bluetooth_disconnect_blank">Odpojit %1$s?</string>
-  <string name="bluetooth_discoverability_panel_title">Zjišťování zařízení\u2026</string>
-  <string name="bluetooth_discoverable">Zjistitelné a připojitelné</string>
-  <string name="bluetooth_enable_text">Prázdné tlačítko\u2026</string>
-  <string name="bluetooth_enabled">Připojení Bluetooth je zapnuto</string>
-  <string name="bluetooth_enabling">Aktivace připojení Bluetooth\u2026</string>
-  <string name="bluetooth_enter_pin_msg">Zadejte kód PIN pro </string>
-  <string name="bluetooth_is_discoverable">Zařízení je zjistitelné</string>
-  <string name="bluetooth_name_not_set">Název není nastaven, používá se název účtu</string>
-  <string name="bluetooth_neither">Nezjistitelné a nepřipojitelné</string>
-  <string name="bluetooth_new_data">Zadejte nová data</string>
-  <string name="bluetooth_new_data_cancel">Storno</string>
-  <string name="bluetooth_new_data_confirm">OK</string>
-  <string name="bluetooth_not_connected">Nepřipojeno</string>
-  <string name="bluetooth_not_discoverable">Zařízení není zjistitelné</string>
-  <string name="bluetooth_paired">Spárováno</string>
-  <string name="bluetooth_pairing_msg">Párování\u2026</string>
-  <string name="bluetooth_pin_entry">Zadání kódu PIN Bluetooth</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Vyhledat zařízení Bluetooth</string>
-  <string name="bluetooth_scan_for_new_devices">Probíhá vyhledávání nových zařízení\u2026</string>
-  <string name="bluetooth_scan_text">Prázdné tlačítko\u2026</string>
-  <string name="bluetooth_settings_text">Prázdné tlačítko\u2026</string>
-  <string name="bluetooth_settings_title">Nastavení Bluetooth</string>
-  <string name="bluetooth_starting">Spouštění připojení Bluetooth\u2026</string>
-  <string name="bluetooth_stopping">Ukončování připojení Bluetooth\u2026</string>
-  <string name="bluetooth_title">Bluetooth</string>
-  <string name="bluetooth_unknown">Neznámý</string>
-  <string name="bluetooth_visibility">Viditelnost</string>
-  <string name="bootloader_version">Verze spouštěcího zavaděče</string>
-  <string name="brightness">Jas</string>
-  <string name="build_date_label">Sestavit datum</string>
-  <string name="build_description_label">Sestavit popis</string>
-  <string name="build_host_label">Sestavit hostitele</string>
-  <string name="build_id_label">Sestavit ID</string>
-  <string name="build_type_label">Sestavit typ</string>
-  <string name="build_user_label">Sestavit uživatele</string>
-  <string name="call_settings_title">Nastavení volání</string>
-  <string name="cancel">Storno</string>
-  <string name="checkin_button_label">Zjistit aktualizace</string>
-  <string name="checkin_download_failed_status">Stažení se nezdařilo</string>
-  <string name="checkin_download_label">Stav stahování</string>
-  <string name="checkin_download_ongoing_status">Stahování\u2026</string>
-  <string name="checkin_download_succeeded_status">Stažení bylo úspěšné, ověřování\u2026</string>
-  <string name="checkin_download_suspended_status">Stahování pozastaveno</string>
-  <string name="checkin_download_unknown_status">Neznámý stav</string>
-  <string name="checkin_failures_label">Nezdařené pokusy od posledního úspěchu</string>
-  <string name="checkin_last_time_label">Poslední úspěšné odbavení</string>
-  <string name="checkin_status_label">Stav odbavení</string>
-  <string name="checkin_time_never">(nikdy)</string>
-  <string name="checkin_upgrade_label">Aktualizace čekající na dokončení</string>
-  <string name="choose_timezone">Vybrat časové pásmo</string>
-  <string name="choose_timezone_region">Vybrat oblast</string>
-  <string name="connect">Připojit</string>
-  <string name="connect_to_blank">Připojit k %1$s</string>
-  <string name="date_and_time">Datum a čas</string>
-  <string name="date_and_time_settings_title">Datum a čas</string>
-  <string name="date_time_24hour">24hodinový formát</string>
-  <string name="date_time_auto">Automaticky</string>
-  <string name="date_time_auto_summaryOff">Použít hodnoty vybrané uživatelem</string>
-  <string name="date_time_auto_summaryOn">Použít hodnoty zjištěné ze sítě</string>
-  <string name="date_time_changeDate_text">Změnit datum</string>
-  <string name="date_time_changeTime_text">Změnit čas</string>
-  <string name="date_time_dateDisplay_text">3. listopadu 1997</string>
-  <string name="date_time_date_format">Nastavit formát data</string>
-  <string name="date_time_set_date">Nastavit datum</string>
-  <string name="date_time_set_time">Nastavit čas</string>
-  <string name="date_time_set_timezone">Nastavit časové pásmo</string>
-  <string name="date_time_setzone_text">Změnit časové pásmo</string>
-  <string name="date_time_timeDisplay_text">11:45 dop.</string>
-  <string name="date_time_timezone_label">Časové pásmo:</string>
-  <string name="debug_intent_sender_label">Debug intent sender</string>
-  <string name="default_date_format">dd.MM.yyyy</string>
-  <string name="default_keyboard_device_label">Výchozí zařízení klávesnice</string>
-  <string name="device_info_asleeptime">Čas přechodu do režimu spánku</string>
-  <string name="device_info_awaketime">Čas probuzení</string>
-  <string name="device_info_default">Neznámý</string>
-  <string name="device_info_label">Informace o zařízení</string>
-  <string name="device_info_settings">Informace o zařízení</string>
-  <string name="device_info_uptime">Doba provozu</string>
-  <string name="device_memory">Paměť</string>
-  <string name="device_memory_summary">Vnitřní paměť, paměťová karta SD</string>
-  <string name="device_status">Stav</string>
-  <string name="device_status_summary">IMEI, telefonní číslo, signál atd.</string>
-  <string name="dim_screen">Ztlumit obrazovku</string>
-  <string name="disconnect_ums">Odpojit velkokapacitní paměťové zařízení USB</string>
-  <string name="display_font_size_label">Velikost písma:</string>
-  <string name="display_label">Displej</string>
-  <string name="display_preview_label">Náhled:</string>
-  <string name="display_settings">Displej</string>
-  <string name="done">OK</string>
-  <string name="error_apn_empty">Název přístupového bodu nemůže být prázdný</string>
-  <string name="error_connecting">Chyba při připojování k síti</string>
-  <string name="error_mcc_not3">Pole MCC musí obsahovat 3 číslice</string>
-  <string name="error_mnc_not23">Pole MNC musí obsahovat 2 nebo 3 číslice</string>
-  <string name="error_name_empty">Název nemůže být prázdný</string>
-  <string name="error_saving">Chyba při ukládání sítě</string>
-  <string name="error_scanning">Chyba při vyhledávání sítí</string>
-  <string name="error_starting">Chyba při spouštění Wi-Fi</string>
-  <string name="error_stopping">Chyba při ukončování Wi-Fi</string>
-  <string name="error_title">Neplatná data</string>
-  <string name="failed_to_connect">Chyba při připojování k\u0020</string>
-  <string name="favorites_label">Oblíbené položky</string>
-  <string name="firmware_version">Verze firmwaru</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">OK</string>
-  <string name="forget_network">Zapomenout</string>
-  <string name="fragment_status_authenticating">Ověřování u %1$s</string>
-  <string name="fragment_status_connected">Připojeno k %1$s</string>
-  <string name="fragment_status_connecting">Připojování k %1$s</string>
-  <string name="fragment_status_disconnected">Odpojeno</string>
-  <string name="fragment_status_disconnecting">Odpojování od %1$s</string>
-  <string name="fragment_status_failed">Neúspěch</string>
-  <string name="fragment_status_obtaining_ip">Získávání adresy IP od %1$s</string>
-  <string name="fragment_status_scanning">Vyhledávání</string>
-  <string name="gsm_version_baseband_label">Verze základního pásma</string>
-  <string name="gsm_version_ril_impl_label">Verze RIL Impl</string>
-  <string name="intent_sender_account_label">Účet: </string>
-  <string name="intent_sender_action_label">Akce:</string>
-  <string name="intent_sender_data_label">Data:</string>
-  <string name="intent_sender_resource_label">Prostředek: </string>
-  <string name="intent_sender_sendbroadcast_text">Odeslat vysílání</string>
-  <string name="intent_sender_startactivity_text">Zahájit činnost</string>
-  <string name="ip_address">Adresa IP</string>
-  <string name="kernel_version_label">Verze jádra Linux</string>
-  <string name="keyguard_label">Zámek kláves</string>
-  <string name="keyguard_password_button_text">OK</string>
-  <string name="keyguard_password_confirm_new_label">Potvrzení nového hesla:</string>
-  <string name="keyguard_password_mismatch_error_text">Zadaná hesla neodpovídají! Zadejte hesla znovu</string>
-  <string name="keyguard_password_new_label">Nové heslo:</string>
-  <string name="keyguard_password_old_label">Původní heslo:</string>
-  <string name="keyguard_password_old_password_error_text">Zadané původní heslo je nesprávné! Opakujte akci</string>
-  <string name="keyguard_pin_mod_text">Změnit kód PIN</string>
-  <string name="keyguard_pw_mod_text">Vybrat vzor pro uzamčení</string>
-  <string name="keyguard_sim_pin_label">Kód PIN karty SIM</string>
-  <string name="language_picker_title">Jazyk</string>
-  <string name="large_font">Velký</string>
-  <string name="location_gps">Podle GPS</string>
-  <string name="location_label">Poskytovatel polohy:</string>
-  <string name="location_neighborhood_level">Přesnost na úroveň okolí</string>
-  <string name="location_network_based">Podle sítě</string>
-  <string name="location_source">Přesnost polohy</string>
-  <string name="location_status">Stav:</string>
-  <string name="location_street_level">Přesnost na úroveň ulic</string>
-  <string name="lock_settings_title">Speciální tah pro uzamčení</string>
-  <string name="lockpattern_change_lock_pattern_label">Změnit vzor pro uzamčení</string>
-  <string name="lockpattern_confirm_button_text">Potvrdit</string>
-  <string name="lockpattern_need_to_unlock">Potvrzení uloženého vzoru:</string>
-  <string name="lockpattern_need_to_unlock_wrong">Nesprávně! Opakujte akci:</string>
-  <string name="lockpattern_pattern_confirmed_header">Nový vzor pro uzamčení:</string>
-  <string name="lockpattern_pattern_entered_header">Vybrali jste:</string>
-  <string name="lockpattern_recording_incorrect_less_than_three">Nesprávně! Musíte táhnout přes nejméně tři body</string>
-  <string name="lockpattern_recording_inprogress">Po skončení uvolněte prst</string>
-  <string name="lockpattern_recording_intro_footer">Stisknutím tlačítka Nabídka zobrazíte nápovědu</string>
-  <string name="lockpattern_recording_intro_header">Nakreslete vzor, který bude použit jako kódový zámek:</string>
-  <string name="lockpattern_restart_button_text">Restartovat</string>
-  <string name="lockpattern_settings_change_lock_pattern">Změnit vzor speciálního tahu pro uzamčení</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Vybrat vzor speciálního tahu pro uzamčení</string>
-  <string name="lockpattern_settings_enable_summary">K odemčení požadovat speciální tah</string>
-  <string name="lockpattern_settings_enable_title">Speciální tah pro uzamčení</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Použít viditelný vzor</string>
-  <string name="lockpattern_settings_help_how_to_record">Jak zaznamenat vzor pro uzamčení</string>
-  <string name="lockpattern_settings_title">Speciální tah pro uzamčení</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Opakujte akci za <xliff:g id="number">%d</xliff:g> sekund</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">Příliš mnoho nesprávných pokusů o potvrzení</string>
-  <string name="master_clear_button_text">Resetujte zařízení</string>
-  <string name="master_clear_desc">Resetuje zařízení do původního stavu z výroby, vymaže všechna data a stažené aplikace</string>
-  <string name="master_clear_failed">Reset nebyl proveden, protože služba Vymazání systému není k dispozici</string>
-  <string name="master_clear_final_button_text">Vymazat vše</string>
-  <string name="master_clear_final_desc">Chcete resetovat zařízení a vymazat všechna data a aplikace? Tuto akci nelze vrátit zpět!</string>
-  <string name="master_clear_gesture_explanation">Reset zařízení je nutné potvrdit nakreslením vzoru pro uzamčení</string>
-  <string name="master_clear_gesture_prompt">Nakreslete vzor pro uzamčení</string>
-  <string name="master_clear_title">Hlavní vymazání</string>
-  <string name="medium_font">Střední</string>
-  <string name="menu_cancel">Zrušit</string>
-  <string name="menu_delete">Odstranit APN</string>
-  <string name="menu_new">Nový APN</string>
-  <string name="menu_save">Uložit</string>
-  <string name="mobile_network">Mobilní síť</string>
-  <string name="network_settings_title">Nastavení sítě</string>
-  <string name="next_label">Další</string>
-  <string name="notification_sound_dialog_title">Vybrat vyzváněcí tóny oznámení</string>
-  <string name="notification_sound_title">Vyzváněcí tóny oznámení</string>
-  <string name="phone_info_label">Informace o telefonu</string>
-  <string name="please_type_passphrase">Zadejte heslo bezdrátového připojení</string>
-  <string name="power_management_label">Řízení spotřeby</string>
-  <string name="progress_scanning">Vyhledávání</string>
-  <string name="proxy_action_text">Uložit</string>
-  <string name="proxy_clear_text">Vymazat</string>
-  <string name="proxy_defaultView_text">Obnovit výchozí</string>
-  <string name="proxy_error">Upozornění!</string>
-  <string name="proxy_error_dismiss">OK</string>
-  <string name="proxy_error_empty_host_set_port">Pokud je pole hostitele prázdné, pole portu musí být rovněž prázdné</string>
-  <string name="proxy_error_empty_port">Je nutné vyplnit pole portu</string>
-  <string name="proxy_error_invalid_host">Zadaný název hostitele není platný</string>
-  <string name="proxy_error_invalid_port">Zadaný port není platný</string>
-  <string name="proxy_hostname_label">Název hostitele</string>
-  <string name="proxy_port_label">Port</string>
-  <string name="proxy_settings_label">Nastavení serveru proxy</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Připojeno</string>
-  <string name="radioInfo_data_connecting">Připojování</string>
-  <string name="radioInfo_data_disconnected">Odpojeno</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">bajtů</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">paketů</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Zakázat datové připojení</string>
-  <string name="radioInfo_menu_enableData">Povolit datové připojení</string>
-  <string name="radioInfo_menu_getPDP">Získání seznamu PDP</string>
-  <string name="radioInfo_menu_viewADN">Zobrazit adresář karty SIM</string>
-  <string name="radioInfo_menu_viewFDN">Zobrazit povolená čísla</string>
-  <string name="radioInfo_menu_viewSDN">Zobrazit čísla servisu</string>
-  <string name="radioInfo_phone_idle">Nečinný</string>
-  <string name="radioInfo_phone_offhook">Probíhá hovor</string>
-  <string name="radioInfo_phone_ringing">Vyzvánění</string>
-  <string name="radioInfo_roaming_in">Roaming</string>
-  <string name="radioInfo_roaming_not">Bez roamingu</string>
-  <string name="radioInfo_service_emergency">Pouze tísňová volání</string>
-  <string name="radioInfo_service_in">V provozu</string>
-  <string name="radioInfo_service_off">Rádio vypnuto</string>
-  <string name="radioInfo_service_out">Mimo provoz</string>
-  <string name="radioInfo_unknown">neznámý</string>
-  <string name="radio_info_band_mode_label">Vybrat rádiové pásmo</string>
-  <string name="radio_info_call_redirect_label">Přesměrování hovoru:</string>
-  <string name="radio_info_call_status_label">Stav hovoru:</string>
-  <string name="radio_info_current_network_label">Aktuální síť:</string>
-  <string name="radio_info_data_attempts_label">Pokusy o přenos dat:</string>
-  <string name="radio_info_data_successes_label">Úspěšné (data):</string>
-  <string name="radio_info_gprs_service_label">Služba GPRS:</string>
-  <string name="radio_info_gsm_disconnects_label">Odpojení sítě GSM:</string>
-  <string name="radio_info_gsm_service_label">Služba GSM:</string>
-  <string name="radio_info_imei_label">IMEI:</string>
-  <string name="radio_info_imsi_label">IMSI:</string>
-  <string name="radio_info_message_waiting_label">Čekající zpráva:</string>
-  <string name="radio_info_neighboring_location_label">Sousední CID:</string>
-  <string name="radio_info_network_type_label">Typ sítě:</string>
-  <string name="radio_info_phone_number_label">Telefonní číslo:</string>
-  <string name="radio_info_ppp_received_label">Přijaté PPP:</string>
-  <string name="radio_info_ppp_resets_label">Počet resetování PPP od spuštění:</string>
-  <string name="radio_info_ppp_sent_label">Odeslané PPP:</string>
-  <string name="radio_info_radio_resets_label">Resetování rádia:</string>
-  <string name="radio_info_roaming_label">Roaming:</string>
-  <string name="radio_info_set_perferred_label">Nastavte upřednostňovaný typ sítě:</string>
-  <string name="radio_info_signal_location_label">Umístění:</string>
-  <string name="radio_info_signal_strength_label">Síla signálu:</string>
-  <string name="read_only">\u0020(jen pro čtení)</string>
-  <string name="ring_volume_title">Hlasitost vyzvánění</string>
-  <string name="ringer_volume_instructions">Hlasitost vyzvánění lze nastavit tlačítky pro hlasitost</string>
-  <string name="ringer_volume_ringer_mode_label">Režim vyzvánění</string>
-  <string name="ringer_volume_ringtone_label">Vyzv. tón</string>
-  <string name="ringer_volume_screen_increasing_text">Zesilující vyzvánění</string>
-  <string name="ringtone_title">Vyzváněcí tón telefonu</string>
-  <string name="scan_wifi">Vyhledat</string>
-  <string name="screen_off_timeout_label">Časový limit pro vypnutí obrazovky</string>
-  <string name="sd_card_settings_label">Karta SD</string>
-  <string name="sd_unavailable">Nedostupný</string>
-  <string name="sdcard_changes_instructions">Změny se projeví po opětovném připojení kabelu USB</string>
-  <string name="sdcard_removal_alert_ok">OK</string>
-  <string name="sdcard_removal_alert_scolding">Karta SD byla vyjmuta během používání!  
-        Chcete-li zamezit poškození karty SD, před vyjmutím ji odinstalujte na obrazovce Nastavení karty SD</string>
-  <string name="sdcard_removal_alert_title">Nesprávné vyjmutí karty SD</string>
-  <string name="sdcard_setting">Karta SD</string>
-  <string name="sdcard_settings_available_bytes_label">Bajty k dispozici:</string>
-  <string name="sdcard_settings_bad_removal_status">Karta SD byla vyjmuta během používání!</string>
-  <string name="sdcard_settings_mass_storage_status">Karta SD se právě používá jako velkokapacitní paměťové zařízení</string>
-  <string name="sdcard_settings_not_present_status">Karta SD chybí</string>
-  <string name="sdcard_settings_read_only_status">Vložená karta SD je pouze pro čtení</string>
-  <string name="sdcard_settings_scanning_status">Vyhledávání médií na kartě SD\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">Povolit velkokapacitní paměťové zařízení USB</string>
-  <string name="sdcard_settings_total_bytes_label">Celkem bajtů:</string>
-  <string name="sdcard_settings_unmounted_status">Nyní můžete kartu SD bezpečně vyjmout ze zařízení</string>
-  <string name="sdcard_settings_used_bytes_label">Použité bajty:</string>
-  <string name="sdcard_unmount">Odinstalovat kartu SD</string>
-  <string name="sdcard_unmountable_alert_ok">OK</string>
-  <string name="sdcard_unmountable_alert_title">Karta SD je nečitelná</string>
-  <string name="sdcard_unmountable_message">Kartu SD nelze přečíst.  
-        Pravděpodobně je poškozen systém souborů nebo je karta vadná</string>
-  <string name="security">Zabezpečení</string>
-  <string name="security_label">Zabezpečení</string>
-  <string name="settings_chooser_pick_string">
-        Předat dál ikonu nastavení:    
-</string>
-  <string name="settings_label">Nastavení</string>
-  <string name="signal">Síla signálu</string>
-  <string name="silent_mode_title">Tichý režim</string>
-  <string name="sim_bad_pin">Upozornění: Nesprávný kód PIN</string>
-  <string name="sim_change_failed">Změna kódu PIN se nezdařila\nPravděpodobně nesprávný kód PIN</string>
-  <string name="sim_change_pin">Změnit kód PIN karty SIM</string>
-  <string name="sim_change_succeeded">Kód PIN karty SIM úspěšně změněn</string>
-  <string name="sim_disable_sim_lock">Zakázat zámek karty SIM</string>
-  <string name="sim_enable_sim_lock">Povolit zámek karty SIM</string>
-  <string name="sim_enter_cancel">Storno</string>
-  <string name="sim_enter_new">Zadejte nový kód PIN</string>
-  <string name="sim_enter_ok">OK</string>
-  <string name="sim_enter_old">Zadejte původní kód PIN</string>
-  <string name="sim_enter_pin">Zadejte kód PIN karty SIM</string>
-  <string name="sim_lock_failed">Změna stavu zámku karty SIM se nezdařila\nPravděpodobně nesprávný kód PIN</string>
-  <string name="sim_lock_off">Zámek karty SIM je vypnutý</string>
-  <string name="sim_lock_on">Zámek karty SIM je zapnutý</string>
-  <string name="sim_lock_settings">Zámek karty SIM</string>
-  <string name="sim_lock_settings_title">Nastavení zámku karty SIM</string>
-  <string name="sim_pin_change">Změnit kód PIN</string>
-  <string name="sim_pin_toggle">Zámek karty SIM</string>
-  <string name="sim_pins_dont_match">Upozornění: Kódy PIN neodpovídají</string>
-  <string name="sim_reenter_new">Zadejte nový kód PIN znovu</string>
-  <string name="small_font">Malá</string>
-  <string name="software_version">Verze softwaru</string>
-  <string name="sound_and_alerts_settings">Zvuk</string>
-  <string name="status_authenticating">Ověřování</string>
-  <string name="status_awake_time">Čas probuzení</string>
-  <string name="status_connected">Připojeno</string>
-  <string name="status_connecting">Připojování</string>
-  <string name="status_data_state">Přístup k datům</string>
-  <string name="status_disconnected">Odpojeno</string>
-  <string name="status_disconnecting">Odpojování</string>
-  <string name="status_failed">Neúspěch</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Typ sítě</string>
-  <string name="status_number">Telefonní číslo</string>
-  <string name="status_obtaining_ip">Získávání adresy IP</string>
-  <string name="status_operator">Síť</string>
-  <string name="status_roaming">Roaming</string>
-  <string name="status_scanning">Vyhledávání</string>
-  <string name="status_service_state">Stav služby</string>
-  <string name="status_signal_strength">Síla signálu</string>
-  <string name="status_up_time">Doba provozu</string>
-  <string name="stay_on">Během připojení nevypínejte zařízení</string>
-  <string name="summary_not_in_range">Není v dosahu</string>
-  <string name="summary_remembered">Zapamatováno</string>
-  <string name="sync_calendar">Kalendář</string>
-  <string name="sync_contacts">Kontakty</string>
-  <string name="sync_disabled">Vypnuto</string>
-  <string name="sync_enabled">Synchronizace se serverem Google povolena</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_menu_sync_cancel">Zrušit synchronizaci</string>
-  <string name="sync_menu_sync_now">Synchronizovat</string>
-  <string name="sync_settings">Synchronizace</string>
-  <string name="target_build_field_label">Požadované sestavení typu</string>
-  <string name="telephony_apn_label">APN:</string>
-  <string name="telephony_mcc_label">MCC:</string>
-  <string name="telephony_mmsc_label">MMSC:</string>
-  <string name="telephony_mmsport_label">Port MMS:</string>
-  <string name="telephony_mmsproxy_label">Proxy MMS:</string>
-  <string name="telephony_mnc_label">MNC:</string>
-  <string name="telephony_name_label">Jméno:</string>
-  <string name="telephony_password_label">Heslo:</string>
-  <string name="telephony_port_label">Port:</string>
-  <string name="telephony_proxy_label">Proxy:</string>
-  <string name="telephony_server_label">Server:</string>
-  <string name="telephony_user_label">Uživatel:</string>
-  <string name="turn_off_qxdm">Zakázat protokol QXDM SD</string>
-  <string name="turn_off_radio">Vypnout rádio</string>
-  <string name="turn_on_qxdm">Povolit protokol QXDM SD</string>
-  <string name="turn_on_radio">Zapnout rádio</string>
-  <string name="underdeveloped_settings_label">Underdeveloped settings</string>
-  <string name="wallpaper_label">Tapeta</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Sítě</string>
-  <string name="wifi_dns_label">dns:</string>
-  <string name="wifi_gateway_label">brána:</string>
-  <string name="wifi_host_ip">IP hostitele:</string>
-  <string name="wifi_netmask_label">maska sítě:</string>
-  <string name="wifi_prefer_wifi">Upřednostňovat Wi-Fi</string>
-  <string name="wifi_screen_activate_text">Aktivovat</string>
-  <string name="wifi_screen_dhcp_text">automaticky</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">ručně</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wi-Fi je v provozu</string>
-  <string name="wifi_screen_test_text">Test</string>
-  <string name="wifi_settings">Nastavení Wi-Fi</string>
-  <string name="wifi_wlan_id">Id sítě wlan:</string>
+    <string name="device_info_default">"Neznámý"</string>
+    <string name="device_info_uptime">"Doba provozu"</string>
+    <string name="device_info_awaketime">"Čas probuzení"</string>
+    <string name="device_info_asleeptime">"Čas přechodu do režimu spánku"</string>
+    <string name="turn_on_radio">"Zapnout rádio"</string>
+    <string name="turn_off_radio">"Vypnout rádio"</string>
+    <string name="turn_on_qxdm">"Povolit protokol QXDM SD"</string>
+    <string name="turn_off_qxdm">"Zakázat protokol QXDM SD"</string>
+    <string name="radioInfo_menu_viewADN">"Zobrazit adresář karty SIM"</string>
+    <string name="radioInfo_menu_viewFDN">"Zobrazit povolená čísla"</string>
+    <string name="radioInfo_menu_viewSDN">"Zobrazit čísla servisu"</string>
+    <string name="radioInfo_menu_getPDP">"Získání seznamu PDP"</string>
+    <string name="radioInfo_menu_enableData">"Povolit datové připojení"</string>
+    <string name="radioInfo_menu_disableData">"Zakázat datové připojení"</string>
+    <!-- no translation found for radioInfo_menu_enableDataOnBoot (1926825935390738605) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_disableDataOnBoot (1229911918312837466) -->
+    <skip />
+    <string name="radioInfo_service_in">"V provozu"</string>
+    <string name="radioInfo_service_out">"Mimo provoz"</string>
+    <string name="radioInfo_service_emergency">"Pouze tísňová volání"</string>
+    <string name="radioInfo_service_off">"Rádio vypnuto"</string>
+    <string name="radioInfo_roaming_in">"Roaming"</string>
+    <string name="radioInfo_roaming_not">"Bez roamingu"</string>
+    <string name="radioInfo_phone_idle">"Nečinný"</string>
+    <string name="radioInfo_phone_ringing">"Vyzvánění"</string>
+    <string name="radioInfo_phone_offhook">"Probíhá hovor"</string>
+    <string name="radioInfo_data_disconnected">"Odpojeno"</string>
+    <string name="radioInfo_data_connecting">"Připojování"</string>
+    <string name="radioInfo_data_connected">"Připojeno"</string>
+    <!-- no translation found for radioInfo_data_suspended (4953150687356763202) -->
+    <skip />
+    <string name="radioInfo_unknown">"neznámý"</string>
+    <string name="radioInfo_display_packets">"paketů"</string>
+    <string name="radioInfo_display_bytes">"bajtů"</string>
+    <string name="radioInfo_display_dbm">"dBm"</string>
+    <string name="radioInfo_display_asu">"asu"</string>
+    <string name="radioInfo_lac">"LAC"</string>
+    <string name="radioInfo_cid">"CID"</string>
+    <string name="sdcard_unmount">"Odinstalovat kartu SD"</string>
+    <string name="small_font">"Malá"</string>
+    <string name="medium_font">"Střední"</string>
+    <string name="large_font">"Velký"</string>
+    <string name="font_size_save">"OK"</string>
+    <string name="sdcard_setting">"Karta SD"</string>
+    <string name="screen_off_timeout_label">"Časový limit pro vypnutí obrazovky"</string>
+    <string name="stay_on">"Během připojení nevypínejte zařízení"</string>
+    <string name="app_launcher_newView_text">"Nový panel spouštění aplikací"</string>
+    <string name="battery_info_status_label">"Stav baterie:"</string>
+    <string name="battery_info_scale_label">"Stupnice baterie:"</string>
+    <string name="battery_info_level_label">"Úroveň nabití baterie:"</string>
+    <string name="battery_info_health_label">"Stav baterie:"</string>
+    <string name="battery_info_technology_label">"Technologie baterie:"</string>
+    <string name="battery_info_voltage_label">"Napětí baterie:"</string>
+    <string name="battery_info_voltage_units">"mV"</string>
+    <string name="battery_info_temperature_label">"Teplota baterie:"</string>
+    <string name="battery_info_temperature_units">"° C"</string>
+    <!-- no translation found for battery_info_uptime (1195623257533912354) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_battery (1529944627925423756) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_plugged (7272044960586959459) -->
+    <skip />
+    <!-- no translation found for battery_info_screen_on (832651425042656482) -->
+    <skip />
+    <string name="battery_info_status_unknown">"Neznámý"</string>
+    <string name="battery_info_status_charging">"Nabíjení"</string>
+    <string name="battery_info_status_charging_ac">"(STŘ)"</string>
+    <string name="battery_info_status_charging_usb">"(USB)"</string>
+    <string name="battery_info_status_discharging">"Vybíjení"</string>
+    <string name="battery_info_status_not_charging">"Bez nabíjení"</string>
+    <string name="battery_info_status_full">"Plná"</string>
+    <string name="battery_info_health_unknown">"Neznámý"</string>
+    <string name="battery_info_health_good">"Dobrý"</string>
+    <string name="battery_info_health_overheat">"Přehřátí"</string>
+    <string name="battery_info_health_dead">"Vybitá"</string>
+    <string name="battery_info_health_over_voltage">"Přepětí"</string>
+    <string name="battery_info_health_unspecified_failure">"Nespecifikované selhání"</string>
+    <string name="bluetooth">"Bluetooth"</string>
+    <string name="bluetooth_stopping">"Ukončování připojení Bluetooth…"</string>
+    <string name="bluetooth_disabled">"Připojení Bluetooth je vypnuto"</string>
+    <string name="bluetooth_enabled">"Připojení Bluetooth je zapnuto"</string>
+    <string name="bluetooth_enabling">"Aktivace připojení Bluetooth…"</string>
+    <string name="bluetooth_visibility">"Viditelnost"</string>
+    <string name="bluetooth_is_discoverable">"Zařízení je zjistitelné"</string>
+    <string name="bluetooth_not_discoverable">"Zařízení není zjistitelné"</string>
+    <string name="bluetooth_devices">"Zařízení Bluetooth"</string>
+    <string name="bluetooth_device_name">"Název zařízení"</string>
+    <string name="bluetooth_name_not_set">"Název není nastaven, používá se název účtu"</string>
+    <string name="bluetooth_scan_for_devices">"Vyhledat zařízení Bluetooth"</string>
+    <string name="bluetooth_clear_list">"Vymazat seznam zařízení"</string>
+    <string name="bluetooth_disconnect_blank">"Odpojit %1$s?"</string>
+    <string name="bluetooth_connected">"Připojeno"</string>
+    <!-- no translation found for bluetooth_disconnected (779512372559332317) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (613305857810977890) -->
+    <skip />
+    <string name="bluetooth_connecting">"Připojování…"</string>
+    <string name="bluetooth_unknown">"Neznámý"</string>
+    <string name="bluetooth_not_connected">"Nepřipojeno"</string>
+    <!-- no translation found for bluetooth_failed_to_enable (10261849074413402) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing (8284273555047880444) -->
+    <skip />
+    <!-- no translation found for failed_to_pair (5265027255173301781) -->
+    <skip />
+    <string name="failed_to_connect">"Chyba při připojování k "</string>
+    <string name="bluetooth_paired">"Spárováno"</string>
+    <!-- no translation found for bluetooth_paired_not_nearby (2890021978719716438) -->
+    <skip />
+    <string name="bluetooth_device">"handsfree / sluchátko s mikrofonem"</string>
+    <!-- no translation found for bluetooth_disconnect (4070053533691322466) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect (6123567524009555372) -->
+    <skip />
+    <!-- no translation found for bluetooth_unpair (6786377316984999718) -->
+    <skip />
+    <!-- no translation found for bluetooth_pair (6433088623778842494) -->
+    <skip />
+    <string name="progress_scanning">"Vyhledávání"</string>
+    <!-- no translation found for bluetooth_notif_ticker (6269529534945974964) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_title (3790273649365187417) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_message (3713615470961259613) -->
+    <skip />
+    <string name="date_and_time">"Datum a čas"</string>
+    <!-- no translation found for date_time_12_hour_sample (3346099183513673921) -->
+    <skip />
+    <!-- no translation found for date_time_24_hour_sample (2930431568836213699) -->
+    <skip />
+    <string name="choose_timezone">"Vybrat časové pásmo"</string>
+    <string name="display_preview_label">"Náhled:"</string>
+    <string name="display_font_size_label">"Velikost písma:"</string>
+    <string name="intent_sender_data_label">"Data:"</string>
+    <string name="intent_sender_sendbroadcast_text">"Odeslat vysílání"</string>
+    <string name="intent_sender_action_label">"Akce:"</string>
+    <string name="intent_sender_startactivity_text">"Zahájit činnost"</string>
+    <string name="intent_sender_resource_label">"Prostředek:"</string>
+    <string name="intent_sender_account_label">"Účet:"</string>
+    <string name="keyguard_pw_mod_text">"Vybrat vzor pro uzamčení"</string>
+    <string name="keyguard_pin_mod_text">"Změnit kód PIN"</string>
+    <string name="keyguard_label">"Zámek kláves"</string>
+    <string name="keyguard_sim_pin_label">"Kód PIN karty SIM"</string>
+    <string name="keyguard_password_old_password_error_text">"Zadané původní heslo je nesprávné! Opakujte akci"</string>
+    <string name="keyguard_password_button_text">"OK"</string>
+    <string name="keyguard_password_confirm_new_label">"Potvrzení nového hesla:"</string>
+    <string name="keyguard_password_new_label">"Nové heslo:"</string>
+    <string name="keyguard_password_old_label">"Původní heslo:"</string>
+    <string name="keyguard_password_mismatch_error_text">"Zadaná hesla neodpovídají! Zadejte hesla znovu"</string>
+    <string name="proxy_clear_text">"Vymazat"</string>
+    <string name="proxy_port_label">"Port"</string>
+    <string name="proxy_defaultView_text">"Obnovit výchozí"</string>
+    <string name="proxy_action_text">"Uložit"</string>
+    <string name="proxy_hostname_label">"Název hostitele"</string>
+    <string name="proxy_error">"Upozornění!"</string>
+    <string name="proxy_error_dismiss">"OK"</string>
+    <string name="proxy_error_invalid_host">"Zadaný název hostitele není platný"</string>
+    <string name="proxy_error_empty_port">"Je nutné vyplnit pole portu"</string>
+    <string name="proxy_error_empty_host_set_port">"Pokud je pole hostitele prázdné, pole portu musí být rovněž prázdné"</string>
+    <string name="proxy_error_invalid_port">"Zadaný port není platný"</string>
+    <string name="radio_info_signal_location_label">"Umístění:"</string>
+    <string name="radio_info_neighboring_location_label">"Sousední CID:"</string>
+    <string name="radio_info_data_attempts_label">"Pokusy o přenos dat:"</string>
+    <string name="radio_info_imsi_label">"IMSI:"</string>
+    <string name="radio_info_gprs_service_label">"Služba GPRS:"</string>
+    <string name="radio_info_roaming_label">"Roaming:"</string>
+    <string name="radio_info_imei_label">"IMEI:"</string>
+    <string name="radio_info_call_redirect_label">"Přesměrování hovoru:"</string>
+    <string name="radio_info_ppp_resets_label">"Počet resetování PPP od spuštění:"</string>
+    <string name="radio_info_gsm_disconnects_label">"Odpojení sítě GSM:"</string>
+    <string name="radio_info_current_network_label">"Aktuální síť:"</string>
+    <string name="radio_info_data_successes_label">"Úspěšné (data):"</string>
+    <string name="radio_info_ppp_received_label">"Přijaté PPP:"</string>
+    <string name="radio_info_gsm_service_label">"Služba GSM:"</string>
+    <string name="radio_info_signal_strength_label">"Síla signálu:"</string>
+    <string name="radio_info_call_status_label">"Stav hovoru:"</string>
+    <string name="radio_info_ppp_sent_label">"Odeslané PPP:"</string>
+    <string name="radio_info_radio_resets_label">"Resetování rádia:"</string>
+    <string name="radio_info_message_waiting_label">"Čekající zpráva:"</string>
+    <string name="radio_info_phone_number_label">"Telefonní číslo:"</string>
+    <string name="radio_info_band_mode_label">"Vybrat rádiové pásmo"</string>
+    <string name="radio_info_network_type_label">"Typ sítě:"</string>
+    <string name="radio_info_set_perferred_label">"Nastavte upřednostňovaný typ sítě:"</string>
+    <!-- no translation found for radio_info_ping_ipaddr (7229811664688502621) -->
+    <skip />
+    <!-- no translation found for radio_info_ping_hostname (7817617877155199848) -->
+    <skip />
+    <!-- no translation found for radio_info_http_client_test (5100483824350561339) -->
+    <skip />
+    <!-- no translation found for radio_info_toggle_ciph_label (2705975697585878388) -->
+    <skip />
+    <!-- no translation found for ping_test_label (99396772665008247) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_label (6577522217730406517) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_update_label (6471155265532972448) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_refresh_label (4334057389927982364) -->
+    <skip />
+    <string name="band_mode_title">"Nastavit pásmo GSM/UMTS"</string>
+    <string name="band_mode_loading">"Načítá se seznam pásem…"</string>
+    <string name="band_mode_set">"Nastavit"</string>
+    <string name="band_mode_failed">"Neúspěch"</string>
+    <string name="band_mode_succeeded">"Úspěch"</string>
+    <string name="ringer_volume_ringer_mode_label">"Režim vyzvánění"</string>
+    <string name="ringer_volume_screen_increasing_text">"Zesilující vyzvánění"</string>
+    <string name="ringer_volume_ringtone_label">"Vyzv. tón"</string>
+    <string name="ringer_volume_instructions">"Hlasitost vyzvánění lze nastavit tlačítky pro hlasitost"</string>
+    <string name="sdcard_changes_instructions">"Změny se projeví po opětovném připojení kabelu USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text">"Povolit velkokapacitní paměťové zařízení USB"</string>
+    <string name="sdcard_settings_total_bytes_label">"Celkem bajtů:"</string>
+    <string name="sdcard_settings_not_present_status">"Karta SD chybí"</string>
+    <string name="sdcard_settings_available_bytes_label">"Bajty k dispozici:"</string>
+    <string name="sdcard_settings_mass_storage_status">"Karta SD se právě používá jako velkokapacitní paměťové zařízení"</string>
+    <string name="sdcard_settings_unmounted_status">"Nyní můžete kartu SD bezpečně vyjmout ze zařízení"</string>
+    <string name="sdcard_settings_bad_removal_status">"Karta SD byla vyjmuta během používání!"</string>
+    <string name="sdcard_settings_used_bytes_label">"Použité bajty:"</string>
+    <string name="sdcard_settings_scanning_status">"Vyhledávání médií na kartě SD…"</string>
+    <string name="sdcard_settings_read_only_status">"Vložená karta SD je pouze pro čtení"</string>
+    <string name="sdcard_removal_alert_title">"Nesprávné vyjmutí karty SD"</string>
+    <string name="sdcard_unmountable_alert_title">"Karta SD je nečitelná"</string>
+    <string name="telephony_user_label">"Uživatel:"</string>
+    <string name="telephony_server_label">"Server:"</string>
+    <string name="telephony_name_label">"Jméno:"</string>
+    <string name="telephony_mmsc_label">"MMSC:"</string>
+    <string name="telephony_apn_label">"APN:"</string>
+    <string name="telephony_mcc_label">"MCC:"</string>
+    <string name="telephony_port_label">"Port:"</string>
+    <string name="telephony_password_label">"Heslo:"</string>
+    <string name="telephony_proxy_label">"Proxy:"</string>
+    <string name="telephony_mnc_label">"MNC:"</string>
+    <string name="telephony_mmsproxy_label">"Proxy MMS:"</string>
+    <string name="telephony_mmsport_label">"Port MMS:"</string>
+    <string name="next_label">"Další"</string>
+    <string name="language_picker_title">"Jazyk"</string>
+    <!-- no translation found for select_your_language (9081963472187973531) -->
+    <skip />
+    <string name="activity_picker_label">"Vybrat činnost"</string>
+    <string name="device_info_label">"Informace o zařízení"</string>
+    <string name="battery_info_label">"Informace o baterii"</string>
+    <string name="display_label">"Displej"</string>
+    <string name="phone_info_label">"Informace o telefonu"</string>
+    <string name="sd_card_settings_label">"Karta SD"</string>
+    <string name="proxy_settings_label">"Nastavení serveru proxy"</string>
+    <string name="cancel">"Storno"</string>
+    <string name="settings_label">"Nastavení"</string>
+    <string name="airplane_mode">"Režim Letadlo"</string>
+    <!-- no translation found for airplane_mode_summary (3500557633417506553) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_on (1243134862683209663) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_off (2291183932542256190) -->
+    <skip />
+    <!-- no translation found for radio_controls_title (4981652151494753702) -->
+    <skip />
+    <!-- no translation found for radio_controls_summary (9105526969569292926) -->
+    <skip />
+    <string name="date_and_time_settings_title">"Datum a čas"</string>
+    <!-- no translation found for date_and_time_settings_summary (3489093199543794055) -->
+    <skip />
+    <string name="date_time_auto">"Automaticky"</string>
+    <string name="date_time_auto_summaryOn">"Použít hodnoty zjištěné ze sítě"</string>
+    <string name="date_time_auto_summaryOff">"Použít hodnoty vybrané uživatelem"</string>
+    <string name="date_time_24hour">"24hodinový formát"</string>
+    <string name="date_time_set_time">"Nastavit čas"</string>
+    <string name="date_time_set_timezone">"Nastavit časové pásmo"</string>
+    <string name="date_time_set_date">"Nastavit datum"</string>
+    <string name="date_time_date_format">"Nastavit formát data"</string>
+    <!-- no translation found for zone_list_menu_sort_alphabetically (8983103881342552870) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (7025442915093990469) -->
+    <skip />
+    <!-- no translation found for security_settings_title (969550777120624897) -->
+    <skip />
+    <!-- no translation found for security_settings_summary (3202445632951595923) -->
+    <skip />
+    <!-- no translation found for security_passwords_title (4466520735598079063) -->
+    <skip />
+    <string name="bluetooth_quick_toggle_title">"Bluetooth"</string>
+    <!-- no translation found for bluetooth_quick_toggle_summary (2292894901949724405) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings (1545097653816106117) -->
+    <skip />
+    <string name="bluetooth_settings_title">"Nastavení Bluetooth"</string>
+    <!-- no translation found for bluetooth_settings_summary (1419697742707330821) -->
+    <skip />
+    <string name="bluetooth_pin_entry">"Zadání kódu PIN Bluetooth"</string>
+    <string name="bluetooth_device_info">"Informace o zařízení Bluetooth"</string>
+    <string name="bluetooth_pairing_msg">"Párování…"</string>
+    <string name="bluetooth_enter_pin_msg">"Zadejte kód PIN pro"</string>
+    <string name="bluetooth_new_data">"Zadejte nová data"</string>
+    <string name="bluetooth_new_data_confirm">"OK"</string>
+    <string name="bluetooth_new_data_cancel">"Storno"</string>
+    <string name="bluetooth_scan_for_new_devices">"Probíhá vyhledávání nových zařízení…"</string>
+    <string name="bluetooth_discoverability_panel_title">"Zjišťování zařízení…"</string>
+    <string name="bluetooth_discoverable">"Zjistitelné a připojitelné"</string>
+    <string name="bluetooth_connectable">"Pouze připojitelné"</string>
+    <string name="bluetooth_neither">"Nezjistitelné a nepřipojitelné"</string>
+    <!-- no translation found for bluetooth_preference_scan_title (5457824526570506576) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (4169248439102381141) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (1360133741981139570) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (3848550418295778426) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (3526057462723016574) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (1842004154350000288) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (302606151874724466) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (5004355397163127842) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (8557599374974072579) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (6848174297822591204) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (8660680578951214915) -->
+    <skip />
+    <string name="wifi">"Wi-Fi"</string>
+    <!-- no translation found for wifi_quick_toggle_title (4404851801229148146) -->
+    <skip />
+    <!-- no translation found for wifi_quick_toggle_summary (5254705029759236850) -->
+    <skip />
+    <string name="wifi_settings">"Nastavení Wi-Fi"</string>
+    <!-- no translation found for wifi_settings_category (610287013958209636) -->
+    <skip />
+    <!-- no translation found for wifi_settings_summary (8789964612748859011) -->
+    <skip />
+    <string name="forget_network">"Zapomenout"</string>
+    <!-- no translation found for wifi_status (4374358089273446404) -->
+    <skip />
+    <!-- no translation found for wifi_link_speed (8766462457818203791) -->
+    <skip />
+    <!-- no translation found for wifi_signal_3 (1264702582845283580) -->
+    <skip />
+    <!-- no translation found for wifi_signal_2 (3765197678751351272) -->
+    <skip />
+    <!-- no translation found for wifi_signal_1 (3469786868912545422) -->
+    <skip />
+    <!-- no translation found for wifi_signal_0 (7285670709111185231) -->
+    <skip />
+    <string name="security">"Zabezpečení"</string>
+    <!-- no translation found for wifi_security_open (6529463996240023139) -->
+    <skip />
+    <!-- no translation found for wifi_security_wep (8543279149057388909) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa (7229647924366572707) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa2 (641020427516679969) -->
+    <skip />
+    <!-- no translation found for wifi_security_unknown (7700764937580224930) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_open (7105261201983314526) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wep (2018232984976185738) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa (7240649761750328761) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa2 (5470387821577814216) -->
+    <skip />
+    <string name="ip_address">"Adresa IP"</string>
+    <string name="signal">"Síla signálu"</string>
+    <!-- no translation found for wifi_starting (380585178092358776) -->
+    <skip />
+    <!-- no translation found for wifi_stopping (1130828572786743854) -->
+    <skip />
+    <!-- no translation found for wifi_error (7223451684597210919) -->
+    <skip />
+    <string name="error_starting">"Chyba při spouštění Wi-Fi"</string>
+    <string name="error_stopping">"Chyba při ukončování Wi-Fi"</string>
+    <string name="error_scanning">"Chyba při vyhledávání sítí"</string>
+    <string name="error_connecting">"Chyba při připojování k síti"</string>
+    <string name="error_saving">"Chyba při ukládání sítě"</string>
+    <string name="connect">"Připojit"</string>
+    <string name="connect_to_blank">"Připojit k %1$s"</string>
+    <string name="please_type_passphrase">"Zadejte heslo bezdrátového připojení"</string>
+    <!-- no translation found for please_type_hex_key (3792966437690051423) -->
+    <skip />
+    <!-- no translation found for wifi_show_password (2142204324333077532) -->
+    <skip />
+    <string name="scan_wifi">"Vyhledat"</string>
+    <string name="summary_not_in_range">"Není v dosahu"</string>
+    <string name="summary_remembered">"Zapamatováno"</string>
+    <!-- no translation found for summary_connection_failed (5466501123715222542) -->
+    <skip />
+    <string name="wifi_access_points">"Sítě"</string>
+    <!-- no translation found for wifi_type_ssid (4389276980911820577) -->
+    <skip />
+    <!-- no translation found for wifi_security (8115513846744543151) -->
+    <skip />
+    <!-- no translation found for wifi_save_config (1041957548332322297) -->
+    <skip />
+    <!-- no translation found for wifi_password_unchanged (5583782979192657008) -->
+    <skip />
+    <!-- no translation found for wifi_add_other_network (914072465709281633) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks (3091942233631075516) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1793737931132127488) -->
+    <skip />
+    <!-- no translation found for wifi_password_incorrect_error (8656138222468900361) -->
+    <skip />
+    <!-- no translation found for wifi_generic_connection_error (4414845075108763948) -->
+    <skip />
+    <!-- no translation found for wifi_menu_advanced (7729886219986221918) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_titlebar (6646153875184353089) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_save (5525488681356054899) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_cancel (4123436217014637229) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_invalid_ip (1648124374575025870) -->
+    <skip />
+    <!-- no translation found for wifi_use_static_ip (4076793026334955338) -->
+    <skip />
+    <!-- no translation found for wifi_ip_address (6067958502872259392) -->
+    <skip />
+    <!-- no translation found for wifi_dns1 (7502077213876989613) -->
+    <skip />
+    <!-- no translation found for wifi_dns2 (3296825469895827273) -->
+    <skip />
+    <!-- no translation found for wifi_gateway (393330487055540831) -->
+    <skip />
+    <!-- no translation found for wifi_netmask (6024777305439519433) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_connect (3348366738100644008) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_forget (5844111744505938081) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_change_password (7074463790535015442) -->
+    <skip />
+    <!-- no translation found for wifi_advanced_titlebar (7352048185262676955) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_title (4302664253747096207) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_summary (5137058932628594680) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_error (581404310349899492) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_channel_phrase (8341967925173918983) -->
+    <skip />
+    <string name="fragment_status_scanning">"Vyhledávání"</string>
+    <string name="fragment_status_connecting">"Připojování k %1$s"</string>
+    <string name="fragment_status_authenticating">"Ověřování u %1$s"</string>
+    <string name="fragment_status_obtaining_ip">"Získávání adresy IP od %1$s"</string>
+    <string name="fragment_status_connected">"Připojeno k %1$s"</string>
+    <string name="fragment_status_disconnecting">"Odpojování od %1$s"</string>
+    <string name="fragment_status_disconnected">"Odpojeno"</string>
+    <string name="fragment_status_failed">"Neúspěch"</string>
+    <string name="status_scanning">"Vyhledávání"</string>
+    <string name="status_connecting">"Připojování"</string>
+    <string name="status_authenticating">"Ověřování"</string>
+    <string name="status_obtaining_ip">"Získávání adresy IP"</string>
+    <string name="status_connected">"Připojeno"</string>
+    <string name="status_disconnecting">"Odpojování"</string>
+    <string name="status_disconnected">"Odpojeno"</string>
+    <string name="status_failed">"Neúspěch"</string>
+    <!-- no translation found for sound_and_display_settings (4749118288236939460) -->
+    <skip />
+    <!-- no translation found for sound_settings (2706184235211157339) -->
+    <skip />
+    <!-- no translation found for sound_and_display_settings_summary (3672623202659031178) -->
+    <skip />
+    <string name="silent_mode_title">"Tichý režim"</string>
+    <!-- no translation found for silent_mode_summary (6135093989634963053) -->
+    <skip />
+    <string name="ringtone_title">"Vyzváněcí tón telefonu"</string>
+    <!-- no translation found for ringtone_summary (1766080371183553822) -->
+    <skip />
+    <string name="ring_volume_title">"Hlasitost vyzvánění"</string>
+    <!-- no translation found for ring_volume_summary (8107485240454889544) -->
+    <skip />
+    <!-- no translation found for vibrate_title (4376574310180696114) -->
+    <skip />
+    <!-- no translation found for vibrate_summary (6788068739601216797) -->
+    <skip />
+    <string name="notification_sound_title">"Vyzváněcí tóny oznámení"</string>
+    <!-- no translation found for notification_sound_summary (7617168477811163700) -->
+    <skip />
+    <string name="notification_sound_dialog_title">"Vybrat vyzváněcí tóny oznámení"</string>
+    <!-- no translation found for media_volume_title (1693540506432790482) -->
+    <skip />
+    <!-- no translation found for media_volume_summary (7399719776785079493) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_title (5173416183471867551) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_on (7206798183944836534) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_off (1555390648905350809) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_title (1955885794556255214) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_on (1491009278452582375) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_off (1932117674347216086) -->
+    <skip />
+    <string name="sync_settings">"Synchronizace"</string>
+    <!-- no translation found for sync_settings_summary (2105151329390814783) -->
+    <skip />
+    <!-- no translation found for sync_too_many_deletes (5404332736593108449) -->
+    <skip />
+    <!-- no translation found for sync_automatically (1757054007777364379) -->
+    <skip />
+    <string name="sync_enabled">"Synchronizace se serverem Google povolena"</string>
+    <string name="sync_disabled">"Vypnuto"</string>
+    <string name="sync_menu_sync_now">"Synchronizovat"</string>
+    <string name="sync_menu_sync_cancel">"Zrušit synchronizaci"</string>
+    <string name="sync_gmail">"Gmail"</string>
+    <string name="sync_calendar">"Kalendář"</string>
+    <string name="sync_contacts">"Kontakty"</string>
+    <!-- no translation found for sync_too_many_deletes_desc (4152554451720380120) -->
+    <skip />
+    <!-- no translation found for sync_really_delete (8529530859370540061) -->
+    <skip />
+    <!-- no translation found for sync_undo_deletes (5506677219430968015) -->
+    <skip />
+    <!-- no translation found for sync_do_nothing (8346666920786786758) -->
+    <skip />
+    <!-- no translation found for sync_is_failing (427555999473172925) -->
+    <skip />
+    <!-- no translation found for sync_plug (7544937220884084907) -->
+    <skip />
+    <string name="display_settings">"Displej"</string>
+    <!-- no translation found for animations_title (8735876378664711924) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (4910047473170373768) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (7454248311417075336) -->
+    <skip />
+    <string name="brightness">"Jas"</string>
+    <!-- no translation found for screen_timeout (8939204183998677539) -->
+    <skip />
+    <string name="dim_screen">"Ztlumit obrazovku"</string>
+    <string name="sim_lock_settings">"Zámek karty SIM"</string>
+    <!-- no translation found for sim_lock_settings_category (5039441655358781230) -->
+    <skip />
+    <string name="sim_lock_settings_title">"Nastavení zámku karty SIM"</string>
+    <string name="sim_pin_toggle">"Zámek karty SIM"</string>
+    <string name="sim_lock_on">"Zámek karty SIM je zapnutý"</string>
+    <string name="sim_lock_off">"Zámek karty SIM je vypnutý"</string>
+    <string name="sim_pin_change">"Změnit kód PIN"</string>
+    <string name="sim_enter_pin">"Zadejte kód PIN karty SIM"</string>
+    <string name="sim_enable_sim_lock">"Povolit zámek karty SIM"</string>
+    <string name="sim_disable_sim_lock">"Zakázat zámek karty SIM"</string>
+    <string name="sim_enter_old">"Zadejte původní kód PIN"</string>
+    <string name="sim_enter_new">"Zadejte nový kód PIN"</string>
+    <string name="sim_reenter_new">"Zadejte nový kód PIN znovu"</string>
+    <string name="sim_change_pin">"Změnit kód PIN karty SIM"</string>
+    <string name="sim_bad_pin">"Upozornění: Nesprávný kód PIN"</string>
+    <string name="sim_pins_dont_match">"Upozornění: Kódy PIN neodpovídají"</string>
+    <string name="sim_change_failed">"Změna kódu PIN se nezdařila"\n"Pravděpodobně nesprávný kód PIN"</string>
+    <string name="sim_change_succeeded">"Kód PIN karty SIM úspěšně změněn"</string>
+    <string name="sim_lock_failed">"Změna stavu zámku karty SIM se nezdařila"\n"Pravděpodobně nesprávný kód PIN"</string>
+    <string name="sim_enter_ok">"OK"</string>
+    <string name="sim_enter_cancel">"Storno"</string>
+    <string name="device_info_settings">"Informace o zařízení"</string>
+    <!-- no translation found for system_update_settings_list_item_title (6730200310196695815) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_summary (6739352515982816664) -->
+    <skip />
+    <string name="firmware_version">"Verze firmwaru"</string>
+    <!-- no translation found for model_number (4107796374489189882) -->
+    <skip />
+    <string name="baseband_version">"Verze základního pásma"</string>
+    <!-- no translation found for kernel_version (55378504731737055) -->
+    <skip />
+    <!-- no translation found for build_number (1198654854394859525) -->
+    <skip />
+    <!-- no translation found for device_info_not_available (6218382614449625943) -->
+    <skip />
+    <!-- no translation found for device_status_activity_title (7855799759928692423) -->
+    <skip />
+    <string name="device_status">"Stav"</string>
+    <string name="device_status_summary">"IMEI, telefonní číslo, signál atd."</string>
+    <!-- no translation found for storage_settings_title (7861753874184164833) -->
+    <skip />
+    <!-- no translation found for storage_settings_summary (1416818376253802300) -->
+    <skip />
+    <string name="status_number">"Telefonní číslo"</string>
+    <string name="status_network_type">"Typ sítě"</string>
+    <string name="status_data_state">"Přístup k datům"</string>
+    <string name="status_service_state">"Stav služby"</string>
+    <string name="status_signal_strength">"Síla signálu"</string>
+    <string name="status_roaming">"Roaming"</string>
+    <string name="status_operator">"Síť"</string>
+    <!-- no translation found for status_wifi_mac_address (6992831729694423293) -->
+    <skip />
+    <!-- no translation found for status_bt_address (504373592762785867) -->
+    <skip />
+    <!-- no translation found for status_unavailable (6051510065892966154) -->
+    <skip />
+    <string name="status_up_time">"Doba provozu"</string>
+    <string name="status_awake_time">"Čas probuzení"</string>
+    <!-- no translation found for internal_memory (7561409402817962159) -->
+    <skip />
+    <!-- no translation found for sd_memory (1795406535114313767) -->
+    <skip />
+    <!-- no translation found for memory_available (2899158225295363424) -->
+    <skip />
+    <!-- no translation found for memory_size (427803224818498885) -->
+    <skip />
+    <!-- no translation found for sd_eject (5921913949386442101) -->
+    <skip />
+    <string name="sd_unavailable">"Nedostupný"</string>
+    <string name="read_only">" (jen pro čtení)"</string>
+    <!-- no translation found for battery_status_title (4908729478929871241) -->
+    <skip />
+    <!-- no translation found for battery_level_title (7696801820825704716) -->
+    <skip />
+    <string name="apn_settings">"APN"</string>
+    <string name="apn_edit">"Upravit přístupový bod"</string>
+    <string name="apn_not_set">"&lt;Nenastaveno&gt;"</string>
+    <string name="apn_name">"Název"</string>
+    <string name="apn_apn">"APN"</string>
+    <string name="apn_http_proxy">"Proxy"</string>
+    <string name="apn_http_port">"Port"</string>
+    <string name="apn_user">"Uživatelské jméno"</string>
+    <string name="apn_password">"Heslo"</string>
+    <string name="apn_server">"Server"</string>
+    <string name="apn_mmsc">"MMSC"</string>
+    <string name="apn_mms_proxy">"Proxy MMS"</string>
+    <string name="apn_mms_port">"Port MMS"</string>
+    <string name="apn_mcc">"MCC"</string>
+    <string name="apn_mnc">"MNC"</string>
+    <!-- no translation found for apn_type (2506383481268652319) -->
+    <skip />
+    <string name="menu_delete">"Odstranit APN"</string>
+    <string name="menu_new">"Nový APN"</string>
+    <string name="menu_save">"Uložit"</string>
+    <string name="menu_cancel">"Zrušit"</string>
+    <string name="error_title">"Neplatná data"</string>
+    <string name="error_name_empty">"Název nemůže být prázdný"</string>
+    <string name="error_apn_empty">"Název přístupového bodu nemůže být prázdný"</string>
+    <string name="error_mcc_not3">"Pole MCC musí obsahovat 3 číslice"</string>
+    <string name="error_mnc_not23">"Pole MNC musí obsahovat 2 nebo 3 číslice"</string>
+    <string name="master_clear_title">"Hlavní vymazání"</string>
+    <!-- no translation found for master_clear_summary (2468534382451112879) -->
+    <skip />
+    <string name="master_clear_desc">"Resetuje zařízení do původního stavu z výroby, vymaže všechna data a stažené aplikace"</string>
+    <string name="master_clear_button_text">"Resetujte zařízení"</string>
+    <string name="master_clear_final_desc">"Chcete resetovat zařízení a vymazat všechna data a aplikace? Tuto akci nelze vrátit zpět!"</string>
+    <string name="master_clear_final_button_text">"Vymazat vše"</string>
+    <string name="master_clear_gesture_prompt">"Nakreslete vzor pro uzamčení"</string>
+    <string name="master_clear_gesture_explanation">"Reset zařízení je nutné potvrdit nakreslením vzoru pro uzamčení"</string>
+    <string name="master_clear_failed">"Reset nebyl proveden, protože služba Vymazání systému není k dispozici"</string>
+    <string name="call_settings_title">"Nastavení volání"</string>
+    <!-- no translation found for call_settings_summary (3446216896482844237) -->
+    <skip />
+    <string name="network_settings_title">"Nastavení sítě"</string>
+    <!-- no translation found for network_settings_summary (8031949240036716110) -->
+    <skip />
+    <!-- no translation found for location_title (4501749309437121375) -->
+    <skip />
+    <string name="location_network_based">"Podle sítě"</string>
+    <!-- no translation found for location_networks_disabled (7048471014395968941) -->
+    <skip />
+    <string name="location_neighborhood_level">"Přesnost na úroveň okolí"</string>
+    <string name="location_gps">"Podle GPS"</string>
+    <string name="location_street_level">"Přesnost na úroveň ulic"</string>
+    <!-- no translation found for location_gps_disabled (4004885356658024277) -->
+    <skip />
+    <!-- no translation found for about_settings (1468182090257585152) -->
+    <skip />
+    <!-- no translation found for about_settings_summary (7669309646592260587) -->
+    <skip />
+    <!-- no translation found for legal_information (6712607847710471677) -->
+    <skip />
+    <!-- no translation found for contributors_title (4798193298012318879) -->
+    <skip />
+    <!-- no translation found for copyright_title (2179228277436615247) -->
+    <skip />
+    <!-- no translation found for license_title (819526735187376873) -->
+    <skip />
+    <!-- no translation found for terms_title (7807601861320706623) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_title (7912723098716795094) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_unavailable (2081311778550755077) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_loading (1663818560123999889) -->
+    <skip />
+    <string name="lock_settings_title">"Speciální tah pro uzamčení"</string>
+    <string name="lockpattern_change_lock_pattern_label">"Změnit vzor pro uzamčení"</string>
+    <string name="lockpattern_need_to_unlock">"Potvrzení uloženého vzoru:"</string>
+    <string name="lockpattern_need_to_unlock_wrong">"Nesprávně! Opakujte akci:"</string>
+    <string name="lockpattern_recording_intro_header">"Nakreslete vzor, který bude použit jako kódový zámek:"</string>
+    <string name="lockpattern_recording_intro_footer">"Stisknutím tlačítka Nabídka zobrazíte nápovědu"</string>
+    <string name="lockpattern_recording_inprogress">"Po skončení uvolněte prst"</string>
+    <!-- no translation found for lockpattern_recording_incorrect_too_short (8234374450664107990) -->
+    <skip />
+    <string name="lockpattern_pattern_entered_header">"Vybrali jste:"</string>
+    <!-- no translation found for lockpattern_need_to_confirm (6414172006294337771) -->
+    <skip />
+    <string name="lockpattern_pattern_confirmed_header">"Nový vzor pro uzamčení:"</string>
+    <string name="lockpattern_confirm_button_text">"Potvrdit"</string>
+    <string name="lockpattern_restart_button_text">"Restartovat"</string>
+    <!-- no translation found for lockpattern_retry_button_text (7695474740059017745) -->
+    <skip />
+    <!-- no translation found for lockpattern_continue_button_text (1077275957953266837) -->
+    <skip />
+    <string name="lockpattern_settings_title">"Speciální tah pro uzamčení"</string>
+    <string name="lockpattern_settings_enable_title">"Speciální tah pro uzamčení"</string>
+    <string name="lockpattern_settings_enable_summary">"K odemčení požadovat speciální tah"</string>
+    <string name="lockpattern_settings_enable_visible_pattern_title">"Použít viditelný vzor"</string>
+    <string name="lockpattern_settings_choose_lock_pattern">"Vybrat vzor speciálního tahu pro uzamčení"</string>
+    <string name="lockpattern_settings_change_lock_pattern">"Změnit vzor speciálního tahu pro uzamčení"</string>
+    <string name="lockpattern_settings_help_how_to_record">"Jak zaznamenat vzor pro uzamčení"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_header">"Příliš mnoho nesprávných pokusů o potvrzení"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_footer">"Opakujte akci za <xliff:g id="NUMBER">%d</xliff:g> sekund"</string>
+    <!-- no translation found for skip_button_label (4850708311344393218) -->
+    <skip />
+    <!-- no translation found for next_button_label (3149701380025478958) -->
+    <skip />
+    <!-- no translation found for lock_title (999106562425756837) -->
+    <skip />
+    <!-- no translation found for lock_intro_message (2382351248538397170) -->
+    <skip />
+    <!-- no translation found for lock_example_title (6261868148302088973) -->
+    <skip />
+    <!-- no translation found for lock_example_message (2583534765034914458) -->
+    <skip />
+    <!-- no translation found for manageapplications_settings_title (3359899792647354589) -->
+    <skip />
+    <!-- no translation found for applications_settings (6104314134883460574) -->
+    <skip />
+    <!-- no translation found for applications_settings_summary (7666960391957493763) -->
+    <skip />
+    <!-- no translation found for applications_settings_header (6167136604757235210) -->
+    <skip />
+    <!-- no translation found for install_applications (8586540661161378543) -->
+    <skip />
+    <!-- no translation found for install_unknown_applications (8694019339326383901) -->
+    <skip />
+    <!-- no translation found for install_all_warning (5826871395153503952) -->
+    <skip />
+    <!-- no translation found for manage_applications_title (8288310040777485758) -->
+    <skip />
+    <!-- no translation found for application_info_label (605192869687093760) -->
+    <skip />
+    <!-- no translation found for storage_label (8765276782501761971) -->
+    <skip />
+    <!-- no translation found for auto_launch_label (3546876666453498673) -->
+    <skip />
+    <!-- no translation found for permissions_label (3244346920180368862) -->
+    <skip />
+    <!-- no translation found for total_size_label (5016115699600749568) -->
+    <skip />
+    <!-- no translation found for application_size_label (5378963933449396413) -->
+    <skip />
+    <!-- no translation found for data_size_label (6038126657652457179) -->
+    <skip />
+    <!-- no translation found for uninstall_text (2322009518449651787) -->
+    <skip />
+    <!-- no translation found for clear_user_data_text (3586758620250813061) -->
+    <skip />
+    <!-- no translation found for auto_launch_enable_text (8228619838865933982) -->
+    <skip />
+    <!-- no translation found for auto_launch_disable_text (4696687016762486484) -->
+    <skip />
+    <!-- no translation found for clear_activities (2399981667625036009) -->
+    <skip />
+    <!-- no translation found for unknown (7966307317466394761) -->
+    <skip />
+    <!-- no translation found for sort_order_alpha (210746743398042077) -->
+    <skip />
+    <!-- no translation found for sort_order_size (2716777274377923612) -->
+    <skip />
+    <!-- no translation found for manage_space_text (3118726017144542336) -->
+    <skip />
+    <!-- no translation found for filter_apps_all (5819127882791374920) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (8693065498520334174) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (2019159142681656258) -->
+    <skip />
+    <!-- no translation found for loading (5170696093820794830) -->
+    <skip />
+    <!-- no translation found for recompute_size (8376294373548662083) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_title (2115093619616088799) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_text (3004273956481932846) -->
+    <skip />
+    <!-- no translation found for dlg_ok (2225130755859653348) -->
+    <skip />
+    <!-- no translation found for dlg_cancel (8597172015374919396) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_title (6649900521951617898) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_text (6893475426667174751) -->
+    <skip />
+    <!-- no translation found for clear_data_failed (3040984234884359027) -->
+    <skip />
+    <!-- no translation found for security_settings_desc (5898339748632998613) -->
+    <skip />
+    <!-- no translation found for default_app_desc (3475613003133497043) -->
+    <skip />
+    <!-- no translation found for computing_size (7350089935999085554) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (3054945647487201471) -->
+    <skip />
+    <!-- no translation found for language_settings (7247557040404006341) -->
+    <skip />
+    <!-- no translation found for language_settings_summary (721948806318958691) -->
+    <skip />
+    <!-- no translation found for language_category (6646529166552376418) -->
+    <skip />
+    <!-- no translation found for text_category (3133311779500246731) -->
+    <skip />
+    <!-- no translation found for phone_language (4084332836028530631) -->
+    <skip />
+    <!-- no translation found for auto_replace (6134508433464846627) -->
+    <skip />
+    <!-- no translation found for auto_replace_summary (1016177921245107750) -->
+    <skip />
+    <!-- no translation found for auto_caps (6021984352657087728) -->
+    <skip />
+    <!-- no translation found for auto_caps_summary (4783973594319542220) -->
+    <skip />
+    <!-- no translation found for auto_punctuate (2819742922158924703) -->
+    <skip />
+    <!-- no translation found for auto_punctuate_summary (2664143621323054924) -->
+    <skip />
+    <!-- no translation found for show_password (2353636034424349266) -->
+    <skip />
+    <!-- no translation found for show_password_summary (3920555488855590831) -->
+    <skip />
+    <!-- no translation found for testing (555268605244514909) -->
+    <skip />
+    <!-- no translation found for testing_phone_info (8718517606602144606) -->
+    <skip />
+    <!-- no translation found for testing_battery_info (3826036256683980425) -->
+    <skip />
+    <!-- no translation found for quick_launch_title (5423323579273213815) -->
+    <skip />
+    <!-- no translation found for quick_launch_summary (1272194567210324017) -->
+    <skip />
+    <!-- no translation found for quick_launch_assign_application (5949445664563354321) -->
+    <skip />
+    <!-- no translation found for quick_launch_no_shortcut (5958195604101558965) -->
+    <skip />
+    <!-- no translation found for quick_launch_shortcut (1115195051591830635) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_title (5217130241215296612) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_message (3420665419624963430) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_ok_button (2442832413597511429) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_cancel_button (1437354385792055993) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_applications (6570683843184675363) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_shortcuts (6642750364678074004) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_title (1752662012056721926) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (5481367119142131313) -->
+    <skip />
+    <!-- no translation found for development_settings_title (4671731485005432632) -->
+    <skip />
+    <!-- no translation found for development_settings_summary (5518361138194831299) -->
+    <skip />
+    <!-- no translation found for enable_adb (7770070343289262572) -->
+    <skip />
+    <!-- no translation found for enable_adb_summary (1498997582065835981) -->
+    <skip />
+    <!-- no translation found for keep_screen_on (5805533478834516956) -->
+    <skip />
+    <!-- no translation found for keep_screen_on_summary (5703353541069794974) -->
+    <skip />
+    <!-- no translation found for allow_mock_location (6204808904743157937) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (3154837501223277592) -->
+    <skip />
 </resources>
diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml
deleted file mode 100644
index c6940e9..0000000
--- a/res/values-de-rDE/strings.xml
+++ /dev/null
@@ -1,700 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="about_settings">Telefon Info</string>
-  <string name="about_settings_summary">Rechtliche Hinweise, Telefonstatus und Softwareversion anzeigen</string>
-  <string name="activity_picker_label">Aktivität auswählen</string>
-  <string name="airplane_mode">Flugmodus</string>
-  <string name="airplane_mode_summary">Wählen Sie dies, um alle Drahtlosverbindungen zu deaktivieren</string>
-  <string name="airplane_mode_turning_off">Drahtlosverbindungen werden aktiviert\u2026</string>
-  <string name="airplane_mode_turning_on">Drahtlosverbindungen werden deaktiviert\u2026</string>
-  <string name="android_id_label">Android-ID</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Zugangspunkt bearbeiten</string>
-  <string name="apn_http_port">Anschluss</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">MMS-Anschluss</string>
-  <string name="apn_mms_proxy">MMS-Proxy</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Name</string>
-  <string name="apn_not_set">&lt;Nicht eingestellt&gt;</string>
-  <string name="apn_password">Kennwort</string>
-  <string name="apn_server">Server</string>
-  <string name="apn_settings">APNs</string>
-  <string name="apn_type">APN-Typ</string>
-  <string name="apn_user">Benutzername</string>
-  <string name="app_launcher_newView_text">Neuer AppLauncher</string>
-  <string name="app_not_found_dlg_text"> Die Anwendung wurde nicht
-in der Liste installierter Anwendungen gefunden.</string>
-  <string name="app_not_found_dlg_title">Anwendung nicht gefunden</string>
-  <string name="application_info_label">Anwendungsinformationen</string>
-  <string name="application_size_label">Anwendung</string>
-  <string name="applications_settings">Anwendungen</string>
-  <string name="applications_settings_header">Anwendungseinstellungen</string>
-  <string name="applications_settings_summary">Anwendungen verwalten und Startverknüpfungen einrichten</string>
-  <string name="auto_caps">Automatische Großschreibung</string>
-  <string name="auto_caps_summary">Ersten Buchstaben in Sätzen großschreiben</string>
-  <string name="auto_launch_disable_text">Keine Standardwerte eingestellt.</string>
-  <string name="auto_launch_enable_text">Sie haben ausgewählt, diese Anwendungen für bestimmte Aktionen automatisch zu starten.</string>
-  <string name="auto_launch_label">Standardmäßig starten</string>
-  <string name="auto_punctuate">Automatisch interpunktieren</string>
-  <string name="auto_punctuate_summary">Für Eingabe Leertaste zweimal drücken \u0022.\u0022</string>
-  <string name="auto_replace">Automatisch ersetzen</string>
-  <string name="auto_replace_summary">Falsch geschriebene Wörter korrigieren</string>
-  <string name="autorotate">Automatisch drehen</string>
-  <string name="autorotate_summary_off">Bei Änderung der Displayausrichtung die Anwendung nicht drehen</string>
-  <string name="autorotate_summary_on">Bei Änderung der Displayausrichtung die Anwendung drehen</string>
-  <string name="b_text">B</string>
-  <string name="band_mode_failed">Nicht erfolgreich</string>
-  <string name="band_mode_loading">Laden von Bandliste\u2026</string>
-  <string name="band_mode_set">Einstellen</string>
-  <string name="band_mode_succeeded">Erfolgreich</string>
-  <string name="band_mode_title">GSM/UMTS-Band einstellen</string>
-  <string name="baseband_version">Basisbandversion</string>
-  <string name="basic_settings_title">Telefongrundlagen</string>
-  <string name="battery_info_awake_battery">Wachzeit für Akku:</string>
-  <string name="battery_info_awake_plugged">Wachzeit beim Laden:</string>
-  <string name="battery_info_health_dead">Nicht aktiv</string>
-  <string name="battery_info_health_good">Gut</string>
-  <string name="battery_info_health_label">Akkuzustand:</string>
-  <string name="battery_info_health_over_voltage">Überspannung</string>
-  <string name="battery_info_health_overheat">Überhitzung</string>
-  <string name="battery_info_health_unknown">Unbekannt</string>
-  <string name="battery_info_health_unspecified_failure">Unbekannter Fehler</string>
-  <string name="battery_info_label">Akkuinfo</string>
-  <string name="battery_info_level_label">Akkuladung:</string>
-  <string name="battery_info_scale_label">Akkuskala:</string>
-  <string name="battery_info_screen_on">Display-Ein-Zeit:</string>
-  <string name="battery_info_status_charging">Lädt</string>
-  <string name="battery_info_status_charging_ac">(Netzstrom)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">Entladung</string>
-  <string name="battery_info_status_full">Voll</string>
-  <string name="battery_info_status_label">Akkustatus:</string>
-  <string name="battery_info_status_not_charging">Kein Laden</string>
-  <string name="battery_info_status_unknown">Unbekannt</string>
-  <string name="battery_info_technology_label">Akkutechnologie:</string>
-  <string name="battery_info_temperature_label">Akkutemperatur:</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_uptime">Zeit seit Start:</string>
-  <string name="battery_info_voltage_label">Akkuspannung:</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="battery_level_title">Akkuladung</string>
-  <string name="battery_status_title">Akkustatus</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Geräteliste löschen</string>
-  <string name="bluetooth_connect">Verbinden</string>
-  <string name="bluetooth_connectable">Nur verbindbar</string>
-  <string name="bluetooth_connected">Verbunden</string>
-  <string name="bluetooth_connecting">Verbindet\u2026</string>
-  <string name="bluetooth_device">Freisprechen/Headset</string>
-  <string name="bluetooth_device_info">Bluetooth-Geräteinfo</string>
-  <string name="bluetooth_device_info_alias">Anderer Gerätename</string>
-  <string name="bluetooth_device_info_delete">Dieses Gerät entfernen</string>
-  <string name="bluetooth_device_info_no_alias">Anderen Namen hier eingeben\u2026</string>
-  <string name="bluetooth_device_info_sdp">Unterstützte Dienste auflisten</string>
-  <string name="bluetooth_device_name">Gerätename</string>
-  <string name="bluetooth_devices">Bluetooth-Geräte</string>
-  <string name="bluetooth_disabled">Auswählen, um Bluetooth zu aktivieren</string>
-  <string name="bluetooth_disconnect">Trennen</string>
-  <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> wird getrennt</string>
-  <string name="bluetooth_discoverability_panel_title">Folgenden Zustand aktivieren\u2026</string>
-  <string name="bluetooth_discoverable">Erkennbar für %1$s Sekunden</string>
-  <string name="bluetooth_enable_text">Leere Taste\u2026</string>
-  <string name="bluetooth_enabled">Auswählen, um Bluetooth zu aktivieren</string>
-  <string name="bluetooth_enabling">Bluetooth einschalten\u2026</string>
-  <string name="bluetooth_enter_pin_msg">PIN-Eingabe für\u0020</string>
-  <string name="bluetooth_failed_to_enable">Bluetooth kann nicht aktiviert werden</string>
-  <string name="bluetooth_is_discoverable">Erkennbar für %1$s Sekunden\u2026</string>
-  <string name="bluetooth_name_not_set">Keine Name eingestellt; Kontoname wird verwendet</string>
-  <string name="bluetooth_neither">Weder auffindbar noch verbindbar</string>
-  <string name="bluetooth_new_data">Neue Daten eingeben</string>
-  <string name="bluetooth_new_data_cancel">Abbrechen</string>
-  <string name="bluetooth_new_data_confirm">OK</string>
-  <string name="bluetooth_not_connected">Mit diesem Gerät koppeln</string>
-  <string name="bluetooth_not_discoverable">Auswählen, um Gerät erkennbar zu machen</string>
-  <string name="bluetooth_notif_message">Auswahl zur Kopplung mit\u0020</string>
-  <string name="bluetooth_notif_ticker">Anfrage für Bluetooth-Kopplung</string>
-  <string name="bluetooth_notif_title">Anfrage für Bluetooth-Kopplung</string>
-  <string name="bluetooth_pair">Koppeln</string>
-  <string name="bluetooth_paired">Gekoppelt</string>
-  <string name="bluetooth_paired_not_nearby">Gekoppelt</string>
-  <string name="bluetooth_pairing">Wird gekoppelt\u2026</string>
-  <string name="bluetooth_pairing_msg">Wird gekoppelt\u2026</string>
-  <string name="bluetooth_pin_entry">Bluetooth-PIN-Eingabe</string>
-  <string name="bluetooth_quick_toggle_summary">Auswählen, um Bluetooth zu aktivieren</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Nach Geräten suchen</string>
-  <string name="bluetooth_scan_for_new_devices">Nach neuen Geräten suchen\u2026</string>
-  <string name="bluetooth_scan_text">Leere Taste\u2026</string>
-  <string name="bluetooth_settings">Bluetooth-Einstellungen</string>
-  <string name="bluetooth_settings_summary">Verbindungen verwalten, Gerätenamen und Erkennbarkeit einstellen</string>
-  <string name="bluetooth_settings_text">Leere Taste\u2026</string>
-  <string name="bluetooth_settings_title">Bluetooth-Einstellungen</string>
-  <string name="bluetooth_starting">Starten von Bluetooth\u2026</string>
-  <string name="bluetooth_stopping">Stoppen von Bluetooth\u2026</string>
-  <string name="bluetooth_unknown">Unbekannt</string>
-  <string name="bluetooth_unpair">Entkoppeln</string>
-  <string name="bluetooth_visibility">Erkennbar</string>
-  <string name="bootloader_version">Boot-Loader-Version</string>
-  <string name="brightness">Helligkeit</string>
-  <string name="build_date_label">Herstellungsdatum</string>
-  <string name="build_description_label">Herstellungsbeschreibung</string>
-  <string name="build_host_label">Herstellungshost</string>
-  <string name="build_id_label">Herstellungs-ID</string>
-  <string name="build_number">Herstellungsnummer</string>
-  <string name="build_type_label">Herstellungstyp</string>
-  <string name="build_user_label">Herstellungsanwender</string>
-  <string name="call_settings_summary">Mobilbox, Rufumleitung, Anklopfen, Anrufer-ID einrichten</string>
-  <string name="call_settings_title">Anrufeinstellungen</string>
-  <string name="cancel">Abbrechen</string>
-  <string name="checkin_button_label">Nach Upgrade suchen</string>
-  <string name="checkin_download_failed">Nicht erfolgreich</string>
-  <string name="checkin_download_label">Status Herunterladen</string>
-  <string name="checkin_download_ongoing">Wird heruntergeladen</string>
-  <string name="checkin_download_pending">Hängend</string>
-  <string name="checkin_download_succeeded">Abgeschlossen</string>
-  <string name="checkin_download_suspended">Ausgesetzt</string>
-  <string name="checkin_download_unknown">Unbekannter Status</string>
-  <string name="checkin_failures_label">Fehler seit letztem Erfolg</string>
-  <string name="checkin_last_time_label">Letzter erfolgreicher Check-in</string>
-  <string name="checkin_started_message">Check-in gestartet\u2026</string>
-  <string name="checkin_status_label">Check-in-Status</string>
-  <string name="checkin_time_never">(nie)</string>
-  <string name="checkin_upgrade_label">Ausstehendes Upgrade</string>
-  <string name="choose_timezone">Zeitzone auswählen</string>
-  <string name="choose_timezone_region">Region auswählen</string>
-  <string name="clear_activities">Standardwerte löschen</string>
-  <string name="clear_data_dlg_text">Alle Daten, die Sie in dieser Anwendung gespeichert haben, werden dauerhaft gelöscht.</string>
-  <string name="clear_data_dlg_title">Löschen</string>
-  <string name="clear_data_failed">Anwendungsdaten können nicht gelöscht werden.</string>
-  <string name="clear_user_data_text">Daten löschen</string>
-  <string name="computing_size">Berechung von Anwendungsgrößen\u2026</string>
-  <string name="connect">Verbinden</string>
-  <string name="connect_to_blank">Verbinden mit <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="contributors_title">Tragen bei</string>
-  <string name="copyright_title">Copyright</string>
-  <string name="data_settings">Dateneinstellungen</string>
-  <string name="data_settings_summary">SD-Karte und Telefonspeicher, Datensynchronisierung</string>
-  <string name="data_settings_title">Daten</string>
-  <string name="data_size_label">Daten</string>
-  <string name="date_and_time">Datum- &amp; Uhrzeit-Einstellungen</string>
-  <string name="date_and_time_settings_summary">Datum, Uhrzeit, Zeitzone und Formate einstellen</string>
-  <string name="date_and_time_settings_title">Datum &amp; Uhrzeit</string>
-  <string name="date_time_24hour">24-Stunden-Format verwenden</string>
-  <string name="date_time_auto">Automatisch</string>
-  <string name="date_time_auto_summaryOff">Vom Netz bereitgestellte Werte verwenden</string>
-  <string name="date_time_auto_summaryOn">Vom Netz bereitgestellte Werte verwenden</string>
-  <string name="date_time_changeDate_text">Datum ändern</string>
-  <string name="date_time_changeTime_text">Uhrzeit ändern</string>
-  <string name="date_time_dateDisplay_text">3. Nov. 1997</string>
-  <string name="date_time_date_format">Datumsformat auswählen</string>
-  <string name="date_time_set_date">Datum einstellen</string>
-  <string name="date_time_set_time">Uhrzeit einstellen</string>
-  <string name="date_time_set_timezone">Zeitzone einstellen</string>
-  <string name="date_time_setzone_text">Zeitzone ändern</string>
-  <string name="date_time_timeDisplay_text">11 Uhr 45 </string>
-  <string name="date_time_timezone_label">Zeitzone:</string>
-  <string name="debug_intent_sender_label">Debug-Intent-Sender</string>
-  <string name="default_date_format">TT/MM/JJJJ</string>
-  <string name="default_keyboard_device_label">Standard-Tastatur</string>
-  <string name="development_settings_summary">Einstellungen für Anwendungsentwicklung</string>
-  <string name="development_settings_title">Entwicklung</string>
-  <string name="device_info_asleeptime">Schlafzeit</string>
-  <string name="device_info_awaketime">Wachzeit</string>
-  <string name="device_info_default">Unbekannt</string>
-  <string name="device_info_label">Geräteinfo</string>
-  <string name="device_info_not_available">Nicht verfügbar</string>
-  <string name="device_info_settings">Telefonstatus</string>
-  <string name="device_info_uptime">Auf-Zeit</string>
-  <string name="device_status">Status</string>
-  <string name="device_status_summary">IMEI, Telefonnummer, Signal usw.</string>
-  <string name="dim_screen">Display abdunkeln</string>
-  <string name="disconnect_ums">USB-Massenspeicher trennen</string>
-  <string name="display_font_size_label">Schriftgröße:</string>
-  <string name="display_label">Anzeige</string>
-  <string name="display_preview_label">Vorschau:</string>
-  <string name="display_settings">Anzeigeeinstellungen</string>
-  <string name="dlg_cancel">Abbrechen</string>
-  <string name="dlg_ok">OK</string>
-  <string name="done">OK</string>
-  <string name="dtmf_tone_enable_summary_off">Bei Verwendung der Wähltastatur Töne wiedergeben</string>
-  <string name="dtmf_tone_enable_summary_on">Bei Verwendung der Wähltastatur Töne wiedergeben</string>
-  <string name="dtmf_tone_enable_title">Töne beim Touch-Screen-Tippen</string>
-  <string name="enable_adb">USB-Debugging</string>
-  <string name="enable_adb_summary">Debug-Modus wenn USB angeschlossen ist</string>
-  <string name="error_apn_empty">Der APN (Zugangspunkt-Name) darf nicht leer sein.</string>
-  <string name="error_connecting">Verbindung mit dem Netz nicht möglich</string>
-  <string name="error_mcc_not3">MCC-Feld muss aus drei Stellen bestehen.</string>
-  <string name="error_mnc_not23">MNC-Feld muss aus zwei oder drei Stellen bestehen.</string>
-  <string name="error_name_empty">Das Namensfeld darf nicht leer sein.</string>
-  <string name="error_saving">Netz kann nicht gespeichert werden</string>
-  <string name="error_scanning">Suche nach Netzen nicht möglich</string>
-  <string name="error_starting">Starten von Wi-Fi nicht möglich</string>
-  <string name="error_stopping">Stoppen von Wi-Fi nicht möglich</string>
-  <string name="error_title">Achtung</string>
-  <string name="failed_to_connect">Verbindung zu <xliff:g id="device_name">%1$s</xliff:g> kann nicht hergestellt werden</string>
-  <string name="failed_to_pair">Kopplung mit <xliff:g id="device_name">%1$s</xliff:g> nicht möglich</string>
-  <string name="favorites_label">Favoriten</string>
-  <string name="firmware_version">Firmwareversion</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">OK</string>
-  <string name="forget_network">Vergessen</string>
-  <string name="fragment_status_authenticating">Authentifizieren mit <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_connected">Verbunden mit <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="fragment_status_connecting">Verbinden mit <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_disconnected">Getrennt</string>
-  <string name="fragment_status_disconnecting">Trennen von <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_failed">Nicht erfolgreich</string>
-  <string name="fragment_status_obtaining_ip">Beziehen von IP-Adresse von <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_scanning">Durchsuchen\u2026</string>
-  <string name="gsm_version_baseband_label">Basisbandversion</string>
-  <string name="gsm_version_ril_impl_label">RIL-(Firmware-)Impl-Version</string>
-  <string name="install_all_warning">Das Telefon und persönliche Daten können leichter von Anwendungen
- unbekannter Quellen angegriffen werden. Sie erklären hiermit, dass Sie allein für jegliche
- Schäden am Telefon oder Verlust an Daten verantwortlich sind, die auf die Verwendung
- dieser Anwendungen zurückgeführt werden können.</string>
-  <string name="install_applications">Unbekannte Quellen</string>
-  <string name="install_unknown_applications">Installation von Anwendungen erlauben, die nicht aus dem Markt stammen</string>
-  <string name="intent_sender_account_label">Konto: </string>
-  <string name="intent_sender_action_label">Aktion:</string>
-  <string name="intent_sender_data_label">Daten:</string>
-  <string name="intent_sender_resource_label">Ressource: </string>
-  <string name="intent_sender_sendbroadcast_text">Übertragung senden</string>
-  <string name="intent_sender_startactivity_text">Aktivität starten</string>
-  <string name="internal_memory">Interner Telefonspeicher</string>
-  <string name="ip_address">IP-Adresse</string>
-  <string name="kb_text">KB</string>
-  <string name="keep_screen_on">Aktiv bleiben</string>
-  <string name="keep_screen_on_summary">Display während Ladevorgang stets aktiv</string>
-  <string name="kernel_version">Kernel-Version</string>
-  <string name="kernel_version_label">Linux-Kernel-Version</string>
-  <string name="keyguard_label">Keyguard</string>
-  <string name="keyguard_password_button_text">OK</string>
-  <string name="keyguard_password_confirm_new_label">Neues Kennwort bestätigen:</string>
-  <string name="keyguard_password_mismatch_error_text">Die zwei Kennworte stimmen nicht überein. Geben Sie sie erneut ein.</string>
-  <string name="keyguard_password_new_label">Neues Kennwort:</string>
-  <string name="keyguard_password_old_label">Altes Kennwort:</string>
-  <string name="keyguard_password_old_password_error_text">Das eingegebene alte Kennwort ist nicht korrekt. Versuchen Sie es noch einmal.</string>
-  <string name="keyguard_pin_mod_text">PIN ändern</string>
-  <string name="keyguard_pw_mod_text">Sperrmuster auswählen</string>
-  <string name="keyguard_sim_pin_label">SIM PIN</string>
-  <string name="language_category">Spracheinstellung</string>
-  <string name="language_picker_title">Ort</string>
-  <string name="language_settings">Text</string>
-  <string name="language_settings_summary">Optionen für automatische Textkorrektur auswählen</string>
-  <string name="large_font">Groß</string>
-  <string name="legal_information">Rechtliche Hinweise</string>
-  <string name="legal_information_summary">Bestimmungen und Bedingungen anzeigen</string>
-  <string name="license_title">Lizenz</string>
-  <string name="location_gps">GPS-Satelliten aktivieren</string>
-  <string name="location_gps_disabled">Lokalisierung auf Straßenebene (benötigt zusätzlichen Akkustrom und eine freie Sicht zum Himmel)</string>
-  <string name="location_label">Sitz des Anbieters:</string>
-  <string name="location_neighborhood_level">Ort wird über Wi-Fi und/oder Mobilnetze ermittelt</string>
-  <string name="location_network_based">Drahtlosnetze verwenden</string>
-  <string name="location_networks_disabled">Ort in Anwendungen (z. B. Karten) mit Hilfe drahtlose Netze ansehen</string>
-  <string name="location_source">Hier bin ich</string>
-  <string name="location_source_summary">Quellen für Ortsbestimmung auswählen</string>
-  <string name="location_status">Status:</string>
-  <string name="location_street_level">Bei Ortsbestimmung auf Straßenebene genau (Auswahl aufheben, um Akkustrom zu speichern)</string>
-  <string name="location_title">Quellen für eigenen Ort</string>
-  <string name="lock_example_message">Verbinden Sie mindestens vier Punkte.\n
-    \nWählen Sie \u201CWeiter\u201D, wenn Sie zum Zeichnen Ihres eigenen Musters bereit sind.
-    </string>
-  <string name="lock_example_title">Beispielmuster</string>
-  <string name="lock_settings_title">Entsperrmuster für Display</string>
-  <string name="lock_title">Sicherung Ihre Telefons</string>
-  <string name="lockpattern_change_lock_pattern_label">Entsperrmuster ändern</string>
-  <string name="lockpattern_confirm_button_text">Bestätigen</string>
-  <string name="lockpattern_continue_button_text">Fortfahren</string>
-  <string name="lockpattern_need_to_confirm">Muster zur Bestätigung neu zeichnen:</string>
-  <string name="lockpattern_need_to_unlock">Gespeichertes Muster bestätigen:</string>
-  <string name="lockpattern_need_to_unlock_wrong">Versuchen Sie es bitte erneut:</string>
-  <string name="lockpattern_pattern_confirmed_header">Neues Entsperrmuster:</string>
-  <string name="lockpattern_pattern_entered_header">Muster aufgenommen!</string>
-  <string name="lockpattern_recording_incorrect_too_short">Verbinden Sie mindestens <xliff:g id="number">%d</xliff:g> Punkte. Versuchen Sie es erneut:</string>
-  <string name="lockpattern_recording_inprogress">Heben Sie den Finger ab, wenn Sie fertig sind.</string>
-  <string name="lockpattern_recording_intro_footer">Drücken Sie auf Menü für Hilfe.</string>
-  <string name="lockpattern_recording_intro_header">Zeichnen Sie ein Entsperrmuster:</string>
-  <string name="lockpattern_restart_button_text">Neu zeichnen</string>
-  <string name="lockpattern_retry_button_text">Erneut versuchen</string>
-  <string name="lockpattern_settings_change_lock_pattern">Entsperrmuster ändern</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Entsperrmuster einrichten</string>
-  <string name="lockpattern_settings_enable_summary">Muster zeichnen, um Display zu entsperren</string>
-  <string name="lockpattern_settings_enable_title">Muster erforderlich</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Sichtbares Muster verwenden</string>
-  <string name="lockpattern_settings_help_how_to_record">Wie man ein Entsperrmuster zeichnet:</string>
-  <string name="lockpattern_settings_title">Entsperrmuster</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Versuchen Sie es in <xliff:g id="number">%d</xliff:g> Sekunden erneut.</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">Zu viele Fehlversuche!</string>
-  <string name="manage_applications_title">Anwendungen verwalten</string>
-  <string name="manage_space_text">Speicherplatz verwalten</string>
-  <string name="manageapplications_settings_title">Anwendungen verwalten</string>
-  <string name="mass_storage">Für USB-Speicher verwenden</string>
-  <string name="master_clear_button_text">Telefon zurücksetzen</string>
-  <string name="master_clear_desc">Diese Aktion setzt das Telefon auf die Werkseinstellungen zurück. Dabei werden alle Daten und heruntergeladenen Anwendungen gelöscht!</string>
-  <string name="master_clear_failed">Es wurde keine Zurücksetzung durchgeführt, da der System Clear-Dienst nicht verfügbar ist.</string>
-  <string name="master_clear_final_button_text">Alles löschen</string>
-  <string name="master_clear_final_desc">Telefon zurücksetzen und alle Daten und Anwendungen löschen? Aktion kann nicht rückgängig gemacht werden!</string>
-  <string name="master_clear_gesture_explanation">Sie müssen das Entsperrmuster zeichnen, um eine Telefonzurücksetzung zu bestätigen.</string>
-  <string name="master_clear_gesture_prompt">Zeichnen Sie das Entsperrmuster:</string>
-  <string name="master_clear_summary">Löscht alle Daten auf dem Telefon</string>
-  <string name="master_clear_title">Auf Werkseinstellung zurücksetzen</string>
-  <string name="mb_text">MB</string>
-  <string name="media_volume_summary">Lautstärke für Musik und Videos einstellen</string>
-  <string name="media_volume_title">Medienlautstärke</string>
-  <string name="medium_font">Mittel</string>
-  <string name="memory_available">Verfügbarer Speicherplatz</string>
-  <string name="memory_size">Gesamtspeicherplatz</string>
-  <string name="menu_cancel">Verwerfen</string>
-  <string name="menu_delete">APN löschen</string>
-  <string name="menu_new">Neuer APN</string>
-  <string name="menu_save">Speichern</string>
-  <string name="model_number">Modellnummer</string>
-  <string name="network_settings_summary">Optionen für Roaming, Netze, APNs einstellen</string>
-  <string name="network_settings_title">Mobile Netze</string>
-  <string name="networks">Betreiberauswahl</string>
-  <string name="networks_title">Netzeinstellungen</string>
-  <string name="next_button_label">Weiter</string>
-  <string name="next_label">Weiter</string>
-  <string name="notification_sound_dialog_title">Klingelton für Benachrichtigung auswählen</string>
-  <string name="notification_sound_summary">Standard-Klingelton für Benachrichtigungen einrichten</string>
-  <string name="notification_sound_title">Klingelton für Benachrichtigungen</string>
-  <string name="permissions_label">Genehmigungen</string>
-  <string name="phone_info_label">Telefoninfo</string>
-  <string name="phone_language">Sprache auswählen</string>
-  <string name="ping_test_label">Ping-Test durchführen</string>
-  <string name="please_type_hex_key">WEP-Hex-Schlüssel (0-9, A-F)</string>
-  <string name="please_type_passphrase">Drahtloskennwort</string>
-  <string name="product_brand_label">Produktmarke</string>
-  <string name="product_device_label">Telefontyp</string>
-  <string name="progress_scanning">Suchen</string>
-  <string name="proxy_action_text">Speichern</string>
-  <string name="proxy_clear_text">Löschen</string>
-  <string name="proxy_defaultView_text">Standardwerte wiederherstellen</string>
-  <string name="proxy_error">Achtung</string>
-  <string name="proxy_error_dismiss">OK</string>
-  <string name="proxy_error_empty_host_set_port">Das Anschluss-Feld muss leer sein, wenn dass Host-Feld leer ist.</string>
-  <string name="proxy_error_empty_port">Sie müssen das Anschluss-Feld ausfüllen.</string>
-  <string name="proxy_error_invalid_host">Sie haben einen ungültigen Hostnamen eingegeben.</string>
-  <string name="proxy_error_invalid_port">Sie haben einen ungültigen Anschluss eingegeben.</string>
-  <string name="proxy_hostname_label">Hostname</string>
-  <string name="proxy_port_label">Anschluss</string>
-  <string name="proxy_settings_label">Proxy-Einstellungen</string>
-  <string name="quick_launch_assign_application">Anwendung zuweisen</string>
-  <string name="quick_launch_clear_cancel_button">Abbrechen</string>
-  <string name="quick_launch_clear_dialog_message">Ihre Verknüpfung für <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) wird gelöscht.</string>
-  <string name="quick_launch_clear_dialog_title">Löschen</string>
-  <string name="quick_launch_clear_ok_button">OK</string>
-  <string name="quick_launch_display_mode_applications">Anwendungen</string>
-  <string name="quick_launch_display_mode_shortcuts">Schnellaufruf</string>
-  <string name="quick_launch_no_shortcut">Kein Schnellaufruf</string>
-  <string name="quick_launch_shortcut">Suchen + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-  <string name="quick_launch_summary">Tastaturkürzel für Start von Anwendungen einrichten</string>
-  <string name="quick_launch_title">Schellstart</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Verbunden</string>
-  <string name="radioInfo_data_connecting">Verbinden</string>
-  <string name="radioInfo_data_disconnected">Getrennt</string>
-  <string name="radioInfo_data_suspended">Ausgesetzt</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">Bytes</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">pkts</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Datenverbindung deaktivieren</string>
-  <string name="radioInfo_menu_disableDataOnBoot">Daten beim Hochfahren deaktivieren</string>
-  <string name="radioInfo_menu_enableData">Datenverbindung aktivieren</string>
-  <string name="radioInfo_menu_enableDataOnBoot">Daten beim Hochfahren aktivieren</string>
-  <string name="radioInfo_menu_getPDP">PDP-Liste einlesen</string>
-  <string name="radioInfo_menu_viewADN">SIM-Adressbuch anzeigen</string>
-  <string name="radioInfo_menu_viewFDN">Feste Rufnummern anzeigen</string>
-  <string name="radioInfo_menu_viewSDN">Rufnummern für Dienste anzeigen</string>
-  <string name="radioInfo_phone_idle">Leerlauf</string>
-  <string name="radioInfo_phone_offhook">Aktiver Anruf</string>
-  <string name="radioInfo_phone_ringing">Klingeln</string>
-  <string name="radioInfo_roaming_in">Roaming</string>
-  <string name="radioInfo_roaming_not">Kein Roaming</string>
-  <string name="radioInfo_service_emergency">Nur Notrufe</string>
-  <string name="radioInfo_service_in">Im Dienst</string>
-  <string name="radioInfo_service_off">Funkempfang aus</string>
-  <string name="radioInfo_service_out">Kein Dienst</string>
-  <string name="radioInfo_unknown">unbekannt</string>
-  <string name="radio_controls_summary">Wi-Fi, Bluetooth, Flugmodus  &amp; mobile Netze verwalten</string>
-  <string name="radio_controls_title">Drahtlos-Bedienelemente</string>
-  <string name="radio_info_band_mode_label">Funkband auswählen</string>
-  <string name="radio_info_call_redirect_label">Anruf umleiten:</string>
-  <string name="radio_info_call_status_label">Anrufstatus:</string>
-  <string name="radio_info_current_network_label">Aktuelles Netz:</string>
-  <string name="radio_info_data_attempts_label">Datenversuche:</string>
-  <string name="radio_info_data_successes_label">Datenerfolge:</string>
-  <string name="radio_info_gprs_service_label">GPRS-Dienst:</string>
-  <string name="radio_info_gsm_disconnects_label">GSM wird getrennt:</string>
-  <string name="radio_info_gsm_service_label">GSM-Dienst:</string>
-  <string name="radio_info_http_client_test">HTTP-Client-Test:</string>
-  <string name="radio_info_imei_label">IMEI:</string>
-  <string name="radio_info_imsi_label">IMSI:</string>
-  <string name="radio_info_message_waiting_label">Wartende Nachricht:</string>
-  <string name="radio_info_neighboring_location_label">Benachbarte CID:</string>
-  <string name="radio_info_network_type_label">Netztyp:</string>
-  <string name="radio_info_phone_number_label">Telefonnummer:</string>
-  <string name="radio_info_ping_hostname">Ping-Hostname (www.google.com):</string>
-  <string name="radio_info_ping_ipaddr">Ping-IpAddr:</string>
-  <string name="radio_info_ppp_received_label">PPP empfangen:</string>
-  <string name="radio_info_ppp_resets_label">Anzahl von PPP-Zurücksetzungen seit Booten:</string>
-  <string name="radio_info_ppp_sent_label">PPP gesendet:</string>
-  <string name="radio_info_radio_resets_label">Funkzurücksetzungen:</string>
-  <string name="radio_info_roaming_label">Roaming:</string>
-  <string name="radio_info_set_perferred_label">Bevorzugten Netztyp einstellen:</string>
-  <string name="radio_info_signal_location_label">Ort:</string>
-  <string name="radio_info_signal_strength_label">Signalstärke:</string>
-  <string name="radio_info_smsc_label">SMSC (SMS-Centre):</string>
-  <string name="radio_info_smsc_refresh_label">Aktualisieren</string>
-  <string name="radio_info_smsc_update_label">Aktualisieren</string>
-  <string name="radio_info_toggle_ciph_label">Verschlüsselung wechseln</string>
-  <string name="read_only">\u0020(Schreibgeschützt)</string>
-  <string name="recompute_size">Neuberechnung der Größe\u2026</string>
-  <string name="ring_volume_summary">Lautstärke für eingehende Anrufe einrichten</string>
-  <string name="ring_volume_title">Klingellautstärke</string>
-  <string name="ringer_volume_instructions">Klingellautstärke mit Lautstärkentasten einstellen</string>
-  <string name="ringer_volume_ringer_mode_label">Klingelmodus</string>
-  <string name="ringer_volume_ringtone_label">Klingelton</string>
-  <string name="ringer_volume_screen_increasing_text">Ansteigendes Klingeln</string>
-  <string name="ringtone_summary">Standard-Klingelton für eingehende Anrufe einrichten</string>
-  <string name="ringtone_title">Telefonklingelton</string>
-  <string name="roaming">Datenroaming</string>
-  <string name="roaming_disable">Verbindung herstellen  zu Datendiensten während Roaming</string>
-  <string name="roaming_enable">Verbindung herstellen  zu Datendiensten während Roaming</string>
-  <string name="roaming_reenable_message">Sie haben die Datenverbindung verloren, da Sie das Heimatnetz mit ausgeschaltetem Datenroaming verlassen haben.</string>
-  <string name="roaming_reenable_title">Achtung</string>
-  <string name="roaming_turn_it_on_button">Schalten Sie es ein</string>
-  <string name="roaming_warning">Datenroaming erlauben? Dabei können erhebliche Gebühren anfallen!</string>
-  <string name="scan_wifi">Suchen</string>
-  <string name="screen_off_timeout_label">Niemals Timeout während Ladevorgang</string>
-  <string name="screen_timeout">Display-Timeout</string>
-  <string name="sd_card_settings_label">SD-Karte</string>
-  <string name="sd_eject">SD-Karte entnehmen</string>
-  <string name="sd_memory">SD-Karte</string>
-  <string name="sd_unavailable">Nicht verfügbar</string>
-  <string name="sdcard_changes_instructions">Änderungen werden wirksam, wenn das USB-Kabel wieder angeschlossen wird.</string>
-  <string name="sdcard_removal_alert_ok">OK</string>
-  <string name="sdcard_removal_alert_scolding">Die SD-Karte wurde entfernt, während sie noch benutzt wurde!
-        Um eine Beschädigung der Karte zu vermeiden, deaktivieren Sie die Karte im Fenster SD-Karten-Einstellungen, bevor Sie sie entfernen.</string>
-  <string name="sdcard_removal_alert_title">Unsicheres Entfernen der SD-Karte!</string>
-  <string name="sdcard_setting">SD-Karte</string>
-  <string name="sdcard_settings_available_bytes_label">Verfügbare Bytes:</string>
-  <string name="sdcard_settings_bad_removal_status">SD-Karte wurde während ihrer Verwendung entfernt!</string>
-  <string name="sdcard_settings_mass_storage_status">SD-Karte wird als  Massenspeicher verwendet</string>
-  <string name="sdcard_settings_not_present_status">Keine SD-Karte</string>
-  <string name="sdcard_settings_read_only_status">Eingesetzte SD-Karte ist schreibgeschützt</string>
-  <string name="sdcard_settings_scanning_status">Suche nach Medien auf SD-Karte\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">USB-Massenspeicher aktivieren</string>
-  <string name="sdcard_settings_total_bytes_label">Bytes insgesamt:</string>
-  <string name="sdcard_settings_unmounted_status">Die SD-Karte kann jetzt sicher entfernt werden</string>
-  <string name="sdcard_settings_used_bytes_label">Genutzte Bytes:</string>
-  <string name="sdcard_unmount">SD-Karte deaktivieren</string>
-  <string name="sdcard_unmountable_alert_ok">OK</string>
-  <string name="sdcard_unmountable_alert_title">SD-Karte nicht lesbar</string>
-  <string name="sdcard_unmountable_message">Die SD-Karte konnte nicht gelesen werden.
-        Das Dateisystem ist möglicherweise fehlerhaft oder die Karte ist beschädigt.</string>
-  <string name="security">Sicherheit</string>
-  <string name="security_and_data_label">Sicherheit &amp; Daten</string>
-  <string name="security_passwords_title">Kennwort</string>
-  <string name="security_settings_desc">Diese Anwendung kann auf Folgendes auf dem Telefon zugreifen:</string>
-  <string name="security_settings_summary">Eigener Aufenthalt, Display-Entsperrung, SIM-Karten-Sperre</string>
-  <string name="security_settings_title">Sicherheit &amp; Ort</string>
-  <string name="select_your_language">Wählen Sie eine Sprache aus</string>
-  <string name="set_lock_pattern_label">Zeichnen Sie Ihr Entsperrmuster:</string>
-  <string name="settings_chooser_pick_string">
-        Einstellungen-Symbol sollte vorgehen nach:
-    </string>
-  <string name="settings_label">Einstellungen</string>
-  <string name="settings_license_activity_loading">Ladung\u2026</string>
-  <string name="settings_license_activity_title">Quellenlizenzen öffnen</string>
-  <string name="settings_license_activity_unavailable">Es gibt ein Problem beim Laden der Lizenzen.</string>
-  <string name="show_password">Sichtbare Kennworte</string>
-  <string name="show_password_summary">Kennwort bei Eingabe anzeigen</string>
-  <string name="signal">Signalstärke</string>
-  <string name="silent_mode_summary">Alle Töne außer für Medien sind deaktiviert</string>
-  <string name="silent_mode_title">Lautlosmodus</string>
-  <string name="sim_bad_pin">Falsche PIN!</string>
-  <string name="sim_change_failed">PIN kann nicht geändert werden.\nMöglicherweise falsche PIN.</string>
-  <string name="sim_change_pin">SIM PIN ändern</string>
-  <string name="sim_change_succeeded">SIM PIN wurde erfolgreich geändert</string>
-  <string name="sim_disable_sim_lock">SIM-Karten-Sperre deaktivieren</string>
-  <string name="sim_enable_sim_lock">SIM-Karten-Sperre aktivieren</string>
-  <string name="sim_enter_cancel">Abbrechen</string>
-  <string name="sim_enter_new">Neue PIN eingeben</string>
-  <string name="sim_enter_ok">OK</string>
-  <string name="sim_enter_old">Alte PIN eingeben</string>
-  <string name="sim_enter_pin">SIM PIN eingeben</string>
-  <string name="sim_lock_failed">SIM-Karten-Sperrzustand kann nicht geändert werden.\nMöglicherweise falsche PIN.</string>
-  <string name="sim_lock_off">PIN für Verwendung des Telefons erforderlich</string>
-  <string name="sim_lock_on">PIN für Verwendung des Telefons erforderlich</string>
-  <string name="sim_lock_settings">Einstellungen für SIM-Karten-Sperre</string>
-  <string name="sim_lock_settings_category">SIM-Karten-Sperre einrichten</string>
-  <string name="sim_lock_settings_title">SIM-Karten-Sperre</string>
-  <string name="sim_pin_change">PIN-Code ändern</string>
-  <string name="sim_pin_toggle">SIM-Karte sperren</string>
-  <string name="sim_pins_dont_match">PINs stimmen nicht überein!</string>
-  <string name="sim_reenter_new">PIN neu eingeben</string>
-  <string name="skip_button_label">Abbrechen</string>
-  <string name="small_font">Klein</string>
-  <string name="software_version">Softwareversion</string>
-  <string name="sort_order_alpha">Alphabetisch sortieren</string>
-  <string name="sort_order_size">Nach Größe sortieren (absteigend)</string>
-  <string name="sound_and_display_settings">Ton &amp; Display</string>
-  <string name="sound_and_display_settings_summary">Klingeltöne, Benachrichtigungen, Displayhelligkeit einstellen</string>
-  <string name="sound_effects_enable_summary_off">Sound bei Auswahl auf Display</string>
-  <string name="sound_effects_enable_summary_on">Sound bei Auswahl auf Display</string>
-  <string name="sound_effects_enable_title">Hörbare Auswahl</string>
-  <string name="sound_settings">Klangeinstellungen</string>
-  <string name="status_authenticating">Authentifizieren\u2026</string>
-  <string name="status_awake_time">Wachzeit</string>
-  <string name="status_bt_address">Bluetooth-Adresse</string>
-  <string name="status_connected">Verbunden</string>
-  <string name="status_connecting">Verbindet\u2026</string>
-  <string name="status_data_state">Datenzugriff</string>
-  <string name="status_disconnected">Getrennt</string>
-  <string name="status_disconnecting">Trennt\u2026</string>
-  <string name="status_failed">Nicht erfolgreich</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imei_sv">IMEI SV</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Netztyp</string>
-  <string name="status_number">Telefonnummer</string>
-  <string name="status_obtaining_ip">Adresse beziehen\u2026</string>
-  <string name="status_operator">Netz</string>
-  <string name="status_roaming">Roaming</string>
-  <string name="status_scanning">Scannen\u2026</string>
-  <string name="status_service_state">Dienststatus</string>
-  <string name="status_signal_strength">Signalstärke</string>
-  <string name="status_unavailable">Nicht verfügbar</string>
-  <string name="status_up_time">Auf-Zeit</string>
-  <string name="status_wifi_mac_address">Wi-Fi MAC-Adresse</string>
-  <string name="stay_on">Display während Ladevorgang immer aktiv</string>
-  <string name="storage_label">Speicher</string>
-  <string name="storage_settings_summary">SD-Karte entnehmen, verfügbaren Speicher anzeigen</string>
-  <string name="storage_settings_title">SD-Karte &amp; Telefonspeicher</string>
-  <string name="sum_carrier_select">Wählen Sie einen Netzbetreiber aus</string>
-  <string name="summary_connection_failed">Verbindung fehlgeschlagen; auswählen, um es erneut zu versuchen</string>
-  <string name="summary_not_in_range">Nicht in Reichweite</string>
-  <string name="summary_remembered">Erinnert</string>
-  <string name="sync_automatically">Automatische Synchronisierung</string>
-  <string name="sync_calendar">Kalender</string>
-  <string name="sync_contacts">Kontakte</string>
-  <string name="sync_disabled">Auswählen, um Daten automatisch zu synchronisieren</string>
-  <string name="sync_do_nothing">Diesmal nichts tun.</string>
-  <string name="sync_enabled">Daten automatisch synchronisieren</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_is_failing">Bei der Synchronisierung gibt es derzeit Probleme. Wird in Kürze fortgesetzt.</string>
-  <string name="sync_menu_sync_cancel">Synchr. abbrechen</string>
-  <string name="sync_menu_sync_now">Jetzt synchronisieren</string>
-  <string name="sync_really_delete">Diese Elemente löschen.</string>
-  <string name="sync_settings">Datensynchronisierung</string>
-  <string name="sync_settings_summary">Auswählen, welche Anwendungen synchronisiert werden</string>
-  <string name="sync_too_many_deletes">Limit für Löschung überschritten</string>
-  <string name="sync_too_many_deletes_desc">Es gibt %d gelöschte Elemente für %s, Konto %s. Was möchten Sie tun?</string>
-  <string name="sync_undo_deletes">Löschungen rückgängig machen.</string>
-  <string name="target_build_field_label">Geforderter Herstellungstyp</string>
-  <string name="team_title">Team</string>
-  <string name="telephony_apn_label">APN:</string>
-  <string name="telephony_mcc_label">MCC:</string>
-  <string name="telephony_mmsc_label">MMSC:</string>
-  <string name="telephony_mmsport_label">MMS-Anschluss:</string>
-  <string name="telephony_mmsproxy_label">MMS-Proxy:</string>
-  <string name="telephony_mnc_label">MNC:</string>
-  <string name="telephony_name_label">Name:</string>
-  <string name="telephony_password_label">Kennwort:</string>
-  <string name="telephony_port_label">Anschluss:</string>
-  <string name="telephony_proxy_label">Proxy:</string>
-  <string name="telephony_server_label">Server:</string>
-  <string name="telephony_user_label">Benutzer:</string>
-  <string name="terms_title">Bestimmungen und Bedingungen</string>
-  <string name="testing">Test</string>
-  <string name="testing_battery_info">Akkuinformationen</string>
-  <string name="testing_phone_info">Telefoninformationen</string>
-  <string name="testing_sim_toolkit">SIM-Toolkit</string>
-  <string name="text_category">Texteinstellungen</string>
-  <string name="total_size_label">Gesamt</string>
-  <string name="turn_off_qxdm">QXDM SD-Log deaktivieren</string>
-  <string name="turn_off_radio">Mobilfunk ausschalten</string>
-  <string name="turn_on_qxdm">QXDM SD-Log aktivieren</string>
-  <string name="turn_on_radio">Mobilfunk einschalten</string>
-  <string name="underdeveloped_settings_label">Nicht ausreichende Einstellungen</string>
-  <string name="uninstall_failed">Anwendung kann nicht deinstalliert werden.</string>
-  <string name="uninstall_text">Deinstallieren</string>
-  <string name="unknown">Unbekannt</string>
-  <string name="vibrate_summary">Telefon bei eingehenden Anrufen vibrieren</string>
-  <string name="vibrate_title">Telefonvibrierung</string>
-  <string name="wallpaper_label">Bildschirmhintergrund</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Wi-Fi-Netze</string>
-  <string name="wifi_add_other_network">Wi-Fi-Netz hinzufügen</string>
-  <string name="wifi_context_menu_change_password">Kennwort ändern</string>
-  <string name="wifi_context_menu_connect">Verbindung mit Netz</string>
-  <string name="wifi_context_menu_forget">Netz vergessen</string>
-  <string name="wifi_dhcp_timeout_error">Es gibt ein Problem beim Beziehen der IP-Adresse.</string>
-  <string name="wifi_dns1">DNS 1</string>
-  <string name="wifi_dns2">DNS 2</string>
-  <string name="wifi_dns3">DNS 3</string>
-  <string name="wifi_dns_label">Dns:</string>
-  <string name="wifi_error">Fehler</string>
-  <string name="wifi_gateway">Gateway</string>
-  <string name="wifi_gateway_label">Gateway:</string>
-  <string name="wifi_generic_connection_error">Es gibt ein Problem bei der Verbindungsherstellung mit dem Netz. Versuchen Sie es erneut.</string>
-  <string name="wifi_host_ip">Host-IP:</string>
-  <string name="wifi_ip_address">IP-Adresse</string>
-  <string name="wifi_ip_settings_invalid_ip">Geben Sie eine gültige IP-Adresse an.</string>
-  <string name="wifi_ip_settings_menu_cancel">Abbrechen</string>
-  <string name="wifi_ip_settings_menu_save">Speichern</string>
-  <string name="wifi_ip_settings_titlebar">IP-Einstellungen</string>
-  <string name="wifi_link_speed">Geschwindigkeit</string>
-  <string name="wifi_menu_advanced">Erweitert</string>
-  <string name="wifi_netmask">Netzmaske</string>
-  <string name="wifi_netmask_label">Netzmaske:</string>
-  <string name="wifi_notify_open_networks">Netzbenachrichtigung</string>
-  <string name="wifi_notify_open_networks_summary">Benachrichtigen, wenn offenes Netz verfügbar ist</string>
-  <string name="wifi_password_incorrect_error">Das eingegeben Netzkennwort ist falsch. Versuchen Sie es noch einmal.</string>
-  <string name="wifi_password_unchanged">(unverändert)</string>
-  <string name="wifi_prefer_wifi">Wi-Fi bevorzugen</string>
-  <string name="wifi_quick_toggle_summary">Auswählen, um Wi-Fi einzuschalten</string>
-  <string name="wifi_quick_toggle_title">Wi-Fi</string>
-  <string name="wifi_save_config">Speichern</string>
-  <string name="wifi_screen_activate_text">Aktivieren</string>
-  <string name="wifi_screen_dhcp_text">Automatisch</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">Manuell</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wi-Fi ist aktiv</string>
-  <string name="wifi_screen_test_text">Test</string>
-  <string name="wifi_security">Sicherheit</string>
-  <string name="wifi_security_open">Öffnen</string>
-  <string name="wifi_security_unknown">Unbekannt</string>
-  <string name="wifi_security_verbose_open">Offenes Netz</string>
-  <string name="wifi_security_verbose_wep">Gesichert mit WEP</string>
-  <string name="wifi_security_verbose_wpa">Gesichert mit WPA</string>
-  <string name="wifi_security_verbose_wpa2">Gesichert mit WPA2</string>
-  <string name="wifi_security_wep">WEP</string>
-  <string name="wifi_security_wpa">WPA</string>
-  <string name="wifi_security_wpa2">WPA2</string>
-  <string name="wifi_settings">Wi-Fi-Einstellungen</string>
-  <string name="wifi_settings_category">Wi-Fi-Einstellungen</string>
-  <string name="wifi_settings_summary">Drahtlos-Zugangspunkte einrichten und verwalten</string>
-  <string name="wifi_show_password">Kennwort anzeigen.</string>
-  <string name="wifi_signal_0">Schlecht</string>
-  <string name="wifi_signal_1">Befriedigend</string>
-  <string name="wifi_signal_2">Gut</string>
-  <string name="wifi_signal_3">Hervorragend</string>
-  <string name="wifi_starting">Einschalten\u2026</string>
-  <string name="wifi_status">Status</string>
-  <string name="wifi_stopping">Ausschalten\u2026</string>
-  <string name="wifi_type_ssid">Netz-SSID eingeben:</string>
-  <string name="wifi_use_static_ip">Statische IP verwenden</string>
-  <string name="wifi_wlan_id">WLAN-ID:</string>
-</resources>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
new file mode 100644
index 0000000..959f1bd
--- /dev/null
+++ b/res/values-de/arrays.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+  <string-array name="timezone_filters">
+    <item>"Amerika"</item>
+    <item>"Europa"</item>
+    <item>"Afrika"</item>
+    <item>"Asien"</item>
+    <item>"Australien"</item>
+    <item>"Pacific"</item>
+    <item>"Alle"</item>
+  </string-array>
+  <string-array name="screen_timeout_entries">
+    <item>"15 Sekunden"</item>
+    <item>"30 Sekunden"</item>
+    <item>"1 Minute"</item>
+    <item>"2 Minuten"</item>
+    <item>"10 Minuten"</item>
+    <item>"Kein Timeout"</item>
+  </string-array>
+  <string-array name="wifi_security_entries">
+    <item>"Autom."</item>
+    <item>"Keine"</item>
+    <item>"WEP"</item>
+    <item>"WPA Personal"</item>
+    <item>"WPA2 Personal"</item>
+  </string-array>
+  <string-array name="wifi_security_without_auto_entries">
+    <item>"Keine"</item>
+    <item>"WEP"</item>
+    <item>"WPA Personal"</item>
+    <item>"WPA2 Personal"</item>
+  </string-array>
+  <string-array name="wifi_wep_type">
+    <item>"Autom."</item>
+    <item>"WEP ASCII"</item>
+    <item>"WEP hexadezimal"</item>
+  </string-array>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
new file mode 100644
index 0000000..d73f8cd
--- /dev/null
+++ b/res/values-de/strings.xml
@@ -0,0 +1,729 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="device_info_default">"Unbekannt"</string>
+    <string name="device_info_uptime">"Betriebszeit"</string>
+    <string name="device_info_awaketime">"Aktivzeit"</string>
+    <string name="device_info_asleeptime">"Inaktivzeit"</string>
+    <string name="turn_on_radio">"Radio einschalten"</string>
+    <string name="turn_off_radio">"Radio ausschalten"</string>
+    <string name="turn_on_qxdm">"QXDM-SD-Protokoll aktivieren"</string>
+    <string name="turn_off_qxdm">"QXDM-SD-Protokoll deaktivieren"</string>
+    <string name="radioInfo_menu_viewADN">"SIM-Adressbuch anzeigen"</string>
+    <string name="radioInfo_menu_viewFDN">"Feste Rufnummern anzeigen"</string>
+    <string name="radioInfo_menu_viewSDN">"Servicerufnummern anzeigen"</string>
+    <string name="radioInfo_menu_getPDP">"PDP-Liste abrufen"</string>
+    <string name="radioInfo_menu_enableData">"Datenverbindung aktivieren"</string>
+    <string name="radioInfo_menu_disableData">"Datenverbindung deaktivieren"</string>
+    <string name="radioInfo_menu_enableDataOnBoot">"Daten beim Start aktivieren"</string>
+    <string name="radioInfo_menu_disableDataOnBoot">"Daten beim Start deaktivieren"</string>
+    <string name="radioInfo_service_in">"In Betrieb"</string>
+    <string name="radioInfo_service_out">"Außer Betrieb"</string>
+    <string name="radioInfo_service_emergency">"Nur Notrufe"</string>
+    <string name="radioInfo_service_off">"Radio aus"</string>
+    <string name="radioInfo_roaming_in">"Roaming"</string>
+    <string name="radioInfo_roaming_not">"Kein Roaming"</string>
+    <string name="radioInfo_phone_idle">"Inaktiv"</string>
+    <string name="radioInfo_phone_ringing">"Klingelton"</string>
+    <string name="radioInfo_phone_offhook">"Anruf wird getätigt"</string>
+    <string name="radioInfo_data_disconnected">"Nicht verbunden"</string>
+    <string name="radioInfo_data_connecting">"Verbindung wird hergestellt"</string>
+    <string name="radioInfo_data_connected">"Verbunden"</string>
+    <string name="radioInfo_data_suspended">"Angehalten"</string>
+    <string name="radioInfo_unknown">"unbekannt"</string>
+    <string name="radioInfo_display_packets">"Pakete"</string>
+    <string name="radioInfo_display_bytes">"Bytes"</string>
+    <string name="radioInfo_display_dbm">"dBm"</string>
+    <string name="radioInfo_display_asu">"ASU"</string>
+    <string name="radioInfo_lac">"LAC"</string>
+    <string name="radioInfo_cid">"CID"</string>
+    <string name="sdcard_unmount">"SD-Karte entnehmen"</string>
+    <string name="small_font">"Klein"</string>
+    <string name="medium_font">"Mittel"</string>
+    <string name="large_font">"Groß"</string>
+    <string name="font_size_save">"OK"</string>
+    <string name="sdcard_setting">"SD-Karte"</string>
+    <string name="screen_off_timeout_label">"Kein Timeout beim Laden"</string>
+    <string name="stay_on">"Display wird beim Laden nie ausgeschaltet"</string>
+    <string name="app_launcher_newView_text">"Neuer AppLauncher"</string>
+    <string name="battery_info_status_label">"Akkustatus:"</string>
+    <string name="battery_info_scale_label">"Akkuanzeige:"</string>
+    <string name="battery_info_level_label">"Akkuladung:"</string>
+    <string name="battery_info_health_label">"Akkuzustand:"</string>
+    <string name="battery_info_technology_label">"Akkutechnologie:"</string>
+    <string name="battery_info_voltage_label">"Akkuspannung:"</string>
+    <string name="battery_info_voltage_units">"mV"</string>
+    <string name="battery_info_temperature_label">"Akkutemperatur:"</string>
+    <string name="battery_info_temperature_units">"° C"</string>
+    <string name="battery_info_uptime">"Zeit seit Start:"</string>
+    <string name="battery_info_awake_battery">"Aktivzeit bei Akku:"</string>
+    <string name="battery_info_awake_plugged">"Aktivzeit beim Laden:"</string>
+    <string name="battery_info_screen_on">"Display eingeschaltet:"</string>
+    <string name="battery_info_status_unknown">"Unbekannt"</string>
+    <string name="battery_info_status_charging">"Wird geladen"</string>
+    <string name="battery_info_status_charging_ac">"(AC)"</string>
+    <string name="battery_info_status_charging_usb">"(USB)"</string>
+    <string name="battery_info_status_discharging">"Entladung"</string>
+    <string name="battery_info_status_not_charging">"Wird nicht geladen"</string>
+    <string name="battery_info_status_full">"Voll"</string>
+    <string name="battery_info_health_unknown">"Unbekannt"</string>
+    <string name="battery_info_health_good">"OK"</string>
+    <string name="battery_info_health_overheat">"Überhitzung"</string>
+    <string name="battery_info_health_dead">"Leer"</string>
+    <string name="battery_info_health_over_voltage">"Überspannung"</string>
+    <string name="battery_info_health_unspecified_failure">"Unbekannter Fehler"</string>
+    <string name="bluetooth">"Bluetooth"</string>
+    <string name="bluetooth_stopping">"Bluetooth wird beendet..."</string>
+    <!-- no translation found for bluetooth_disabled (3281654100455454605) -->
+    <skip />
+    <!-- no translation found for bluetooth_enabled (314506563815464155) -->
+    <skip />
+    <string name="bluetooth_enabling">"Bluetooth wird aktiviert..."</string>
+    <string name="bluetooth_visibility">"Erkennbar"</string>
+    <string name="bluetooth_is_discoverable">"Für <xliff:g id="DISCOVERABLE_TIME_PERIOD">%1$s</xliff:g> Sekunden sichtbar..."</string>
+    <!-- no translation found for bluetooth_not_discoverable (128269993123955177) -->
+    <skip />
+    <string name="bluetooth_devices">"Bluetooth-Geräte"</string>
+    <string name="bluetooth_device_name">"Gerätename"</string>
+    <string name="bluetooth_name_not_set">"Kein Name festgelegt, Kontoname wird verwendet"</string>
+    <string name="bluetooth_scan_for_devices">"Scannen nach Geräten"</string>
+    <string name="bluetooth_clear_list">"Geräteliste löschen"</string>
+    <!-- no translation found for bluetooth_disconnect_blank (8102076504922229274) -->
+    <skip />
+    <string name="bluetooth_connected">"Verbunden"</string>
+    <!-- no translation found for bluetooth_disconnected (6557104142667339895) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (8913264760027764974) -->
+    <skip />
+    <string name="bluetooth_connecting">"Verbindung wird hergestellt..."</string>
+    <!-- no translation found for bluetooth_unknown (644716244548801421) -->
+    <skip />
+    <string name="bluetooth_not_connected">"Pairing mit diesem Gerät"</string>
+    <string name="bluetooth_failed_to_enable">"Bluetooth kann nicht aktiviert werden"</string>
+    <string name="bluetooth_pairing">"Pairing…"</string>
+    <!-- no translation found for failed_to_pair (7648018965110976948) -->
+    <skip />
+    <!-- no translation found for failed_to_connect (4770209428036813667) -->
+    <skip />
+    <string name="bluetooth_paired">"Gepaart"</string>
+    <string name="bluetooth_paired_not_nearby">"Gepaart"</string>
+    <string name="bluetooth_device">"Freisprechfunktion/Headset"</string>
+    <string name="bluetooth_disconnect">"Verbindung trennen"</string>
+    <string name="bluetooth_connect">"Verbinden"</string>
+    <string name="bluetooth_unpair">"Pairing aufheben"</string>
+    <string name="bluetooth_pair">"Paaren"</string>
+    <string name="progress_scanning">"Scannen..."</string>
+    <string name="bluetooth_notif_ticker">"Bluetooth-Pairing-Anfrage"</string>
+    <!-- no translation found for bluetooth_notif_title (2485175521845371514) -->
+    <skip />
+    <string name="bluetooth_notif_message">"Zum Pairing auswählen"</string>
+    <string name="date_and_time">"Einstellungen"</string>
+    <string name="date_time_12_hour_sample">"1:00"</string>
+    <string name="date_time_24_hour_sample">"13:00"</string>
+    <string name="choose_timezone">"Zeitzone auswählen"</string>
+    <string name="display_preview_label">"Vorschau:"</string>
+    <string name="display_font_size_label">"Schriftgröße:"</string>
+    <!-- no translation found for intent_sender_data_label (6332324780477289261) -->
+    <skip />
+    <string name="intent_sender_sendbroadcast_text">"<xliff:g id="BROADCAST">broadcast</xliff:g> senden"</string>
+    <string name="intent_sender_action_label">"<xliff:g id="ACTION">Action</xliff:g>:"</string>
+    <string name="intent_sender_startactivity_text">"<xliff:g id="ACTIVITY">activity</xliff:g> starten"</string>
+    <string name="intent_sender_resource_label">"<xliff:g id="RESOURCE">Resource</xliff:g>:"</string>
+    <string name="intent_sender_account_label">"Konto:"</string>
+    <string name="keyguard_pw_mod_text">"Sperrmuster auswählen"</string>
+    <string name="keyguard_pin_mod_text">"PIN ändern"</string>
+    <string name="keyguard_label">"Keyguard"</string>
+    <string name="keyguard_sim_pin_label">"SIM-PIN"</string>
+    <string name="keyguard_password_old_password_error_text">"Das alte Passwort ist falsch. Bitte versuchen Sie es erneut."</string>
+    <string name="keyguard_password_button_text">"OK"</string>
+    <string name="keyguard_password_confirm_new_label">"Neues Passwort bestätigen:"</string>
+    <string name="keyguard_password_new_label">"Neues Passwort:"</string>
+    <string name="keyguard_password_old_label">"Altes Passwort:"</string>
+    <string name="keyguard_password_mismatch_error_text">"Die beiden Passwörter stimmen nicht überein. Bitte geben Sie sie erneut ein."</string>
+    <string name="proxy_clear_text">"Löschen"</string>
+    <string name="proxy_port_label">"Port"</string>
+    <string name="proxy_defaultView_text">"Standard wiederherstellen"</string>
+    <string name="proxy_action_text">"Speichern"</string>
+    <string name="proxy_hostname_label">"Hostname"</string>
+    <string name="proxy_error">"Achtung"</string>
+    <string name="proxy_error_dismiss">"OK"</string>
+    <string name="proxy_error_invalid_host">"Der eingegebene Hostname ist ungültig."</string>
+    <string name="proxy_error_empty_port">"Sie müssen das Feld für den Port ausfüllen."</string>
+    <string name="proxy_error_empty_host_set_port">"Das Feld für den Port muss leer sein, wenn das Feld für den Host leer ist."</string>
+    <string name="proxy_error_invalid_port">"Der eingegebene Port ist ungültig."</string>
+    <string name="radio_info_signal_location_label">"Standort:"</string>
+    <string name="radio_info_neighboring_location_label">"Benachbarte CID:"</string>
+    <string name="radio_info_data_attempts_label">"Datenversuche:"</string>
+    <string name="radio_info_imsi_label">"IMSI:"</string>
+    <string name="radio_info_gprs_service_label">"GPRS-Service:"</string>
+    <string name="radio_info_roaming_label">"Roaming:"</string>
+    <string name="radio_info_imei_label">"IMEI:"</string>
+    <string name="radio_info_call_redirect_label">"Rufumleitung:"</string>
+    <string name="radio_info_ppp_resets_label">"Anzahl der PPP-Zurücksetzungen seit dem Start:"</string>
+    <string name="radio_info_gsm_disconnects_label">"GSM-Trennungen:"</string>
+    <string name="radio_info_current_network_label">"Aktuelles Netzwerk:"</string>
+    <string name="radio_info_data_successes_label">"Datenerfolge:"</string>
+    <string name="radio_info_ppp_received_label">"PPP empfangen:"</string>
+    <string name="radio_info_gsm_service_label">"GSM-Service"</string>
+    <string name="radio_info_signal_strength_label">"Signalstärke:"</string>
+    <string name="radio_info_call_status_label">"Rufstatus:"</string>
+    <string name="radio_info_ppp_sent_label">"PPP gesendet:"</string>
+    <string name="radio_info_radio_resets_label">"Radiozurücksetzung:"</string>
+    <string name="radio_info_message_waiting_label">"Nachricht liegt vor:"</string>
+    <string name="radio_info_phone_number_label">"Telefonnummer:"</string>
+    <string name="radio_info_band_mode_label">"Frequenzbereich auswählen"</string>
+    <string name="radio_info_network_type_label">"Netzwerktyp:"</string>
+    <string name="radio_info_set_perferred_label">"Bevorzugten Netzwerktyp festlegen:"</string>
+    <string name="radio_info_ping_ipaddr">"IP-Adresse pingen:"</string>
+    <string name="radio_info_ping_hostname">"Hostnamen pingen (www.google.com):"</string>
+    <string name="radio_info_http_client_test">"HTTP Client-Test:"</string>
+    <string name="radio_info_toggle_ciph_label">"Verschlüsselung wechseln"</string>
+    <string name="ping_test_label">"Pingtest ausführen"</string>
+    <string name="radio_info_smsc_label">"SMSC:"</string>
+    <string name="radio_info_smsc_update_label">"Aktualisierung"</string>
+    <string name="radio_info_smsc_refresh_label">"Aktualisieren"</string>
+    <string name="band_mode_title">"GSM-/UMTS-Band festlegen"</string>
+    <string name="band_mode_loading">"Bandliste wird geladen..."</string>
+    <string name="band_mode_set">"Festlegen"</string>
+    <string name="band_mode_failed">"Fehlgeschlagen"</string>
+    <string name="band_mode_succeeded">"Erfolgreich"</string>
+    <string name="ringer_volume_ringer_mode_label">"Klingeltonmodus"</string>
+    <string name="ringer_volume_screen_increasing_text">"Ansteigender Klingelton"</string>
+    <string name="ringer_volume_ringtone_label">"Klingelton"</string>
+    <string name="ringer_volume_instructions">"Klingeltonlautstärke mithilfe der Lautstärketasten anpassen"</string>
+    <string name="sdcard_changes_instructions">"Die Änderungen werden nach dem erneuten Anschließen des USB-Kabels übernommen."</string>
+    <string name="sdcard_settings_screen_mass_storage_text">"USB-Massenspeicher aktivieren"</string>
+    <string name="sdcard_settings_total_bytes_label">"Bytes insgesamt:"</string>
+    <string name="sdcard_settings_not_present_status">"Keine SD-Karte"</string>
+    <string name="sdcard_settings_available_bytes_label">"Verfügbare Bytes:"</string>
+    <string name="sdcard_settings_mass_storage_status">"SD-Karte wird als Massenspeichergerät verwendet"</string>
+    <string name="sdcard_settings_unmounted_status">"Die SD-Karte kann jetzt entfernt werden."</string>
+    <string name="sdcard_settings_bad_removal_status">"Die SD-Karte wurde während der Verwendung entfernt!"</string>
+    <string name="sdcard_settings_used_bytes_label">"Verwendete Bytes:"</string>
+    <string name="sdcard_settings_scanning_status">"SD-Karte wird auf Medien gescannt..."</string>
+    <string name="sdcard_settings_read_only_status">"SD-Karte schreibgeschützt aktiviert"</string>
+    <string name="sdcard_removal_alert_title">"Unsichere Entfernung der SD-Karte!"</string>
+    <string name="sdcard_unmountable_alert_title">"SD-Karte nicht lesbar"</string>
+    <string name="telephony_user_label">"Nutzer:"</string>
+    <string name="telephony_server_label">"Server:"</string>
+    <string name="telephony_name_label">"Name:"</string>
+    <string name="telephony_mmsc_label">"MMSC:"</string>
+    <string name="telephony_apn_label">"APN:"</string>
+    <string name="telephony_mcc_label">"MCC:"</string>
+    <string name="telephony_port_label">"Port:"</string>
+    <string name="telephony_password_label">"Passwort:"</string>
+    <string name="telephony_proxy_label">"Proxy:"</string>
+    <string name="telephony_mnc_label">"MNC:"</string>
+    <string name="telephony_mmsproxy_label">"MMS-Proxy:"</string>
+    <string name="telephony_mmsport_label">"MMS-Port:"</string>
+    <string name="next_label">"Weiter"</string>
+    <string name="language_picker_title">"Sprache"</string>
+    <string name="select_your_language">"Sprache auswählen"</string>
+    <string name="activity_picker_label">"Aktion auswählen"</string>
+    <string name="device_info_label">"Geräteinfo"</string>
+    <string name="battery_info_label">"Akkuinfo"</string>
+    <string name="display_label">"Display"</string>
+    <string name="phone_info_label">"Telefoninfo"</string>
+    <string name="sd_card_settings_label">"SD-Karte"</string>
+    <string name="proxy_settings_label">"Proxy-Einstellungen"</string>
+    <string name="cancel">"Abbrechen"</string>
+    <string name="settings_label">"Einstellungen"</string>
+    <string name="airplane_mode">"Flugmodus"</string>
+    <!-- no translation found for airplane_mode_summary (3154817401368780988) -->
+    <skip />
+    <string name="airplane_mode_turning_on">"Wireless-Verbindungen werden deaktiviert..."</string>
+    <string name="airplane_mode_turning_off">"Wireless-Verbindungen werden aktiviert..."</string>
+    <string name="radio_controls_title">"Wireless"</string>
+    <string name="radio_controls_summary">"WLAN, Bluetooth, Flugmodus und mobile Netzwerke verwalten"</string>
+    <string name="date_and_time_settings_title">"Datum und Uhrzeit"</string>
+    <string name="date_and_time_settings_summary">"Datum, Uhrzeit, Zeitzone und Formate festlegen"</string>
+    <string name="date_time_auto">"Automatisch"</string>
+    <string name="date_time_auto_summaryOn">"Vom Netzwerk bereitgestellte Werte verwenden"</string>
+    <string name="date_time_auto_summaryOff">"Vom Netzwerk bereitgestellte Werte verwenden"</string>
+    <string name="date_time_24hour">"24-Stunden-Format"</string>
+    <string name="date_time_set_time">"Uhrzeit festlegen"</string>
+    <!-- no translation found for date_time_set_timezone (5045627174274377814) -->
+    <skip />
+    <string name="date_time_set_date">"Datum festlegen"</string>
+    <string name="date_time_date_format">"Datumsformat auswählen"</string>
+    <!-- no translation found for zone_list_menu_sort_alphabetically (5683377702671088588) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (2720190443744884114) -->
+    <skip />
+    <string name="security_settings_title">"Sicherheit und Standort"</string>
+    <!-- no translation found for security_settings_summary (8145883103362174000) -->
+    <skip />
+    <string name="security_passwords_title">"Passwörter"</string>
+    <string name="bluetooth_quick_toggle_title">"Bluetooth"</string>
+    <!-- no translation found for bluetooth_quick_toggle_summary (5293641680139873341) -->
+    <skip />
+    <string name="bluetooth_settings">"Bluetooth-Einstellungen"</string>
+    <string name="bluetooth_settings_title">"Bluetooth-Einstellungen"</string>
+    <string name="bluetooth_settings_summary">"Verbindungen, Gerätenamen und Erkennbarkeit verwalten"</string>
+    <!-- no translation found for bluetooth_pin_entry (5627349871303455279) -->
+    <skip />
+    <string name="bluetooth_device_info">"Bluetooth-Geräteinfo"</string>
+    <string name="bluetooth_pairing_msg">"Pairing…"</string>
+    <!-- no translation found for bluetooth_enter_pin_msg (7551139612735632370) -->
+    <skip />
+    <!-- no translation found for bluetooth_error_title (538287072376677166) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_error_message (2852744547246910349) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_alternate_error_message (1731286765420671521) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_pin_error_message (6938408362011024289) -->
+    <skip />
+    <!-- no translation found for bluetooth_connecting_error_message (1779660510084746802) -->
+    <skip />
+    <string name="bluetooth_new_data">"Neue Daten eingeben"</string>
+    <string name="bluetooth_new_data_confirm">"OK"</string>
+    <string name="bluetooth_new_data_cancel">"Abbrechen"</string>
+    <string name="bluetooth_scan_for_new_devices">"Scannen nach neuen Geräten..."</string>
+    <string name="bluetooth_discoverability_panel_title">"Aktion:"</string>
+    <string name="bluetooth_discoverable">"Für <xliff:g id="DISCOVERABLE_TIME_PERIOD">%1$s</xliff:g> Sekunden sichtbar"</string>
+    <string name="bluetooth_connectable">"Verbindung möglich"</string>
+    <string name="bluetooth_neither">"Erkennung und Verbindung nicht möglich"</string>
+    <!-- no translation found for bluetooth_preference_scan_title (2277464653118896016) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (2368330460781052669) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (3997659895003244941) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (8220072022970148683) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (7611522504813927727) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (662992425948536144) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (7644014238070043798) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (2643129703569788771) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (6952214406025825164) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (3259633293424539529) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (1874975688666658946) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_a2dp (510833839847758664) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_headset (4876496372728623918) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_a2dp_headset (3045032710457800891) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_title (528816860793581131) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_online_mode_title (3689050071425683114) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_online_mode_summary (1204424107263248336) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_profile_header_title (3764437426089639639) -->
+    <skip />
+    <!-- no translation found for bluetooth_a2dp_profile_summary_connected (963376081347721598) -->
+    <skip />
+    <!-- no translation found for bluetooth_headset_profile_summary_connected (7661070206715520671) -->
+    <skip />
+    <!-- no translation found for bluetooth_a2dp_profile_summary_use_for (4630849022250168427) -->
+    <skip />
+    <!-- no translation found for bluetooth_headset_profile_summary_use_for (8705753622443862627) -->
+    <skip />
+    <string name="wifi">"WLAN"</string>
+    <string name="wifi_quick_toggle_title">"WLAN"</string>
+    <!-- no translation found for wifi_quick_toggle_summary (1047950931623694366) -->
+    <skip />
+    <string name="wifi_settings">"WLAN-Einstellungen"</string>
+    <string name="wifi_settings_category">"WLAN-Einstellungen"</string>
+    <string name="wifi_settings_summary">"Wireless-Zugangspunkte festlegen und verwalten"</string>
+    <string name="forget_network">"Entfernen"</string>
+    <string name="wifi_status">"Status"</string>
+    <string name="wifi_link_speed">"Geschwindigkeit"</string>
+    <string name="wifi_signal_3">"Ausgezeichnet"</string>
+    <string name="wifi_signal_2">"OK"</string>
+    <string name="wifi_signal_1">"Gut"</string>
+    <string name="wifi_signal_0">"Schwach"</string>
+    <string name="security">"Sicherheit"</string>
+    <string name="wifi_security_open">"Öffnen"</string>
+    <string name="wifi_security_wep">"WEP"</string>
+    <string name="wifi_security_wpa">"WPA"</string>
+    <string name="wifi_security_wpa2">"WPA2"</string>
+    <string name="wifi_security_unknown">"Unbekannt"</string>
+    <string name="wifi_security_verbose_open">"Offenes Netzwerk"</string>
+    <string name="wifi_security_verbose_wep">"Gesichert mit WEP"</string>
+    <string name="wifi_security_verbose_wpa">"Gesichert mit WPA"</string>
+    <string name="wifi_security_verbose_wpa2">"Gesichert mit WPA2"</string>
+    <string name="ip_address">"IP-Adresse"</string>
+    <string name="signal">"Signalstärke"</string>
+    <string name="wifi_starting">"Aktivierung..."</string>
+    <string name="wifi_stopping">"Wird beendet..."</string>
+    <string name="wifi_error">"Fehler"</string>
+    <string name="error_starting">"WLAN kann nicht gestartet werden"</string>
+    <string name="error_stopping">"WLAN kann nicht beendet werden"</string>
+    <string name="error_scanning">"Netzwerkscan nicht möglich"</string>
+    <string name="error_connecting">"Netzwerkverbindung kann nicht hergestellt werden"</string>
+    <string name="error_saving">"Netzwerk kann nicht gespeichert werden"</string>
+    <string name="connect">"Verbinden"</string>
+    <string name="connect_to_blank">"Mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g> verbinden"</string>
+    <string name="please_type_passphrase">"Passwort für Wireless-Zugang"</string>
+    <string name="please_type_hex_key">"WEP Hexadezimalschlüssel (0-9, A-F)"</string>
+    <string name="wifi_show_password">"Passwort anzeigen"</string>
+    <string name="scan_wifi">"Scannen"</string>
+    <string name="summary_not_in_range">"Nicht in Reichweite"</string>
+    <string name="summary_remembered">"Gespeichert"</string>
+    <string name="summary_connection_failed">"Verbindung fehlgeschlagen, versuchen Sie es erneut."</string>
+    <string name="wifi_access_points">"WLAN-Netzwerke"</string>
+    <!-- no translation found for wifi_type_ssid (1326839657083292017) -->
+    <skip />
+    <string name="wifi_security">"Sicherheit"</string>
+    <string name="wifi_save_config">"Speichern"</string>
+    <string name="wifi_password_unchanged">"(nicht geändert)"</string>
+    <!-- no translation found for wifi_add_other_network (5499063300755575893) -->
+    <skip />
+    <string name="wifi_notify_open_networks">"Netzwerkhinweis"</string>
+    <string name="wifi_notify_open_networks_summary">"Benachrichtigen, wenn ein offenes Netzwerk verfügbar ist"</string>
+    <string name="wifi_password_incorrect_error">"Das eingegebene Netzwerkpasswort ist falsch. Bitte versuchen Sie es erneut."</string>
+    <string name="wifi_generic_connection_error">"Beim Herstellen der Netzwerkverbindung ist ein Problem aufgetreten. Bitte versuchen Sie es erneut."</string>
+    <string name="wifi_menu_advanced">"Erweitert"</string>
+    <string name="wifi_ip_settings_titlebar">"IP-Einstellungen"</string>
+    <string name="wifi_ip_settings_menu_save">"Speichern"</string>
+    <string name="wifi_ip_settings_menu_cancel">"Abbrechen"</string>
+    <string name="wifi_ip_settings_invalid_ip">"Bitte geben Sie eine gültige IP-Adresse ein."</string>
+    <string name="wifi_use_static_ip">"Statische IP verwenden"</string>
+    <string name="wifi_ip_address">"IP-Adresse"</string>
+    <string name="wifi_dns1">"DNS 1"</string>
+    <string name="wifi_dns2">"DNS 2"</string>
+    <string name="wifi_gateway">"Gateway"</string>
+    <string name="wifi_netmask">"Netmask"</string>
+    <string name="wifi_context_menu_connect">"Mit Netzwerk verbinden"</string>
+    <string name="wifi_context_menu_forget">"Netzwerk entfernen"</string>
+    <string name="wifi_context_menu_change_password">"Passwort ändern"</string>
+    <!-- no translation found for wifi_advanced_titlebar (5419052271935350999) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_title (694031537019656132) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_summary (4889355096717099141) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_error (5765443843427870721) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_channel_phrase (1269381923672908636) -->
+    <skip />
+    <!-- no translation found for wifi_advanced_mac_address_title (6571335466330978393) -->
+    <skip />
+    <string name="fragment_status_scanning">"Scannen…"</string>
+    <string name="fragment_status_connecting">"Verbindung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g> wird hergestellt..."</string>
+    <string name="fragment_status_authenticating">"Authentifizierung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</string>
+    <string name="fragment_status_obtaining_ip">"IP-Adresse wird von <xliff:g id="NETWORK_NAME">%1$s</xliff:g> abgerufen..."</string>
+    <string name="fragment_status_connected">"Verbunden mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</string>
+    <string name="fragment_status_disconnecting">"Verbindung mit <xliff:g id="NETWORK_NAME">%1$s</xliff:g> wird getrennt..."</string>
+    <string name="fragment_status_disconnected">"Nicht verbunden"</string>
+    <string name="fragment_status_failed">"Fehlgeschlagen"</string>
+    <string name="status_scanning">"Scannen…"</string>
+    <string name="status_connecting">"Verbindung wird hergestellt..."</string>
+    <string name="status_authenticating">"Authentifizierung..."</string>
+    <string name="status_obtaining_ip">"Adresse wird abgerufen..."</string>
+    <string name="status_connected">"Verbunden"</string>
+    <string name="status_disconnecting">"Verbindung wird getrennt..."</string>
+    <string name="status_disconnected">"Nicht verbunden"</string>
+    <string name="status_failed">"Fehlgeschlagen"</string>
+    <string name="sound_and_display_settings">"Sound und Display"</string>
+    <string name="sound_settings">"Soundeinstellungen"</string>
+    <string name="sound_and_display_settings_summary">"Klingeltöne, Benachrichtigungen und Helligkeit festlegen"</string>
+    <string name="silent_mode_title">"Lautlosmodus"</string>
+    <!-- no translation found for silent_mode_summary (9081534746589616108) -->
+    <skip />
+    <string name="ringtone_title">"Klingelton"</string>
+    <string name="ringtone_summary">"Standardklingelton für eingehende Anrufe festlegen"</string>
+    <string name="ring_volume_title">"Klingeltonlautstärke"</string>
+    <string name="ring_volume_summary">"Lautstärke für eingehende Anrufe festlegen"</string>
+    <string name="vibrate_title">"Vibration"</string>
+    <string name="vibrate_summary">"Vibration für eingehende Anrufe"</string>
+    <string name="notification_sound_title">"Benachrichtigungston"</string>
+    <string name="notification_sound_summary">"Standard-Benachrichtigungston festlegen"</string>
+    <string name="notification_sound_dialog_title">"Benachrichtigungston auswählen"</string>
+    <string name="media_volume_title">"Medienlautstärke"</string>
+    <string name="media_volume_summary">"Lautstärke für Musik und Videos festlegen"</string>
+    <string name="dtmf_tone_enable_title">"Akustische Tastensounds"</string>
+    <string name="dtmf_tone_enable_summary_on">"Bei Verwendung der Wähltastatur Sound abspielen"</string>
+    <string name="dtmf_tone_enable_summary_off">"Bei Verwendung der Wähltastatur Sound abspielen"</string>
+    <string name="sound_effects_enable_title">"Akustische Auswahl"</string>
+    <string name="sound_effects_enable_summary_on">"Bei Display-Auswahl Sound abspielen"</string>
+    <string name="sound_effects_enable_summary_off">"Bei Display-Auswahl Sound abspielen"</string>
+    <string name="sync_settings">"Datensynchronisierung"</string>
+    <string name="sync_settings_summary">"Auswählen, welche Anwendungen synchronisiert werden"</string>
+    <!-- no translation found for sync_settings_header_general_settings (1940413055002651212) -->
+    <skip />
+    <!-- no translation found for sync_settings_header_application_settings (7055646124074397344) -->
+    <skip />
+    <string name="sync_too_many_deletes">"Löschbegrenzung überschritten"</string>
+    <string name="sync_automatically">"Autom. Synchronisierung"</string>
+    <string name="sync_enabled">"Daten automatisch synchronisieren"</string>
+    <string name="sync_disabled">"Zur automatischen Datensynchronisierung auswählen"</string>
+    <string name="sync_menu_sync_now">"Jetzt synchronisieren"</string>
+    <string name="sync_menu_sync_cancel">"Synchronisierung abbrechen"</string>
+    <string name="sync_gmail">"Google Mail"</string>
+    <string name="sync_calendar">"Google Kalender"</string>
+    <string name="sync_contacts">"Kontakte"</string>
+    <string name="sync_too_many_deletes_desc">"Für <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, Konto <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>, liegen <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> gelöschte Elemente vor. Was möchten Sie tun?"</string>
+    <string name="sync_really_delete">"Elemente löschen"</string>
+    <string name="sync_undo_deletes">"Löschen rückgängig machen"</string>
+    <string name="sync_do_nothing">"Im Moment nichts unternehmen"</string>
+    <string name="sync_is_failing">"Bei der Synchronisierung treten derzeit Probleme auf. Sie wird in Kürze fortgesetzt."</string>
+    <string name="sync_plug"><font fgcolor="#ffffffff">"Willkommen bei Google Sync!"</font>\n"Mit dieser Funktion von Google können Sie Ihre Daten synchronisieren, um auf Ihre Kontakte, Termine und vieles mehr zuzugreifen - wo immer Sie auch sind!"</string>
+    <string name="display_settings">"Display-Einstellungen"</string>
+    <!-- no translation found for animations_title (1062189037402346023) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (5690787466633824737) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (8847573219383668092) -->
+    <skip />
+    <string name="brightness">"Helligkeit"</string>
+    <string name="screen_timeout">"Display-Timeout"</string>
+    <string name="dim_screen">"Display dimmen"</string>
+    <string name="sim_lock_settings">"Einstellungen"</string>
+    <string name="sim_lock_settings_category">"SIM-Kartensperrung einrichten"</string>
+    <string name="sim_lock_settings_title">"SIM-Kartensperrung"</string>
+    <string name="sim_pin_toggle">"SIM-Karte sperren"</string>
+    <string name="sim_lock_on">"PIN zur Verwendung des Telefons erforderlich"</string>
+    <string name="sim_lock_off">"PIN zur Verwendung des Telefons erforderlich"</string>
+    <!-- no translation found for sim_pin_change (6311414184279932368) -->
+    <skip />
+    <!-- no translation found for sim_enter_pin (6608715137008508432) -->
+    <skip />
+    <!-- no translation found for sim_enable_sim_lock (4517742794997166918) -->
+    <skip />
+    <!-- no translation found for sim_disable_sim_lock (7664729528754784824) -->
+    <skip />
+    <!-- no translation found for sim_enter_old (6074196344494634348) -->
+    <skip />
+    <!-- no translation found for sim_enter_new (8742727032729243562) -->
+    <skip />
+    <string name="sim_reenter_new">"Neue PIN erneut eingeben"</string>
+    <!-- no translation found for sim_change_pin (7328607264898359112) -->
+    <skip />
+    <string name="sim_bad_pin">"Falsche PIN!"</string>
+    <string name="sim_pins_dont_match">"Die PINs stimmen nicht überein!"</string>
+    <string name="sim_change_failed">"PIN kann nicht geändert werden."\n"Möglicherweise falsche Eingabe."</string>
+    <string name="sim_change_succeeded">"SIM-PIN erfolgreich geändert"</string>
+    <string name="sim_lock_failed">"Status der SIM-Kartensperrung kann nicht geändert werden."\n"Möglicherweise falsche PIN."</string>
+    <string name="sim_enter_ok">"OK"</string>
+    <string name="sim_enter_cancel">"Abbrechen"</string>
+    <string name="device_info_settings">"Telefonstatus"</string>
+    <!-- no translation found for system_update_settings_list_item_title (3342887311059985961) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_summary (9164660818865695219) -->
+    <skip />
+    <string name="firmware_version">"Firmware-Version"</string>
+    <string name="model_number">"Modellnummer"</string>
+    <string name="baseband_version">"Basisband-Version"</string>
+    <string name="kernel_version">"Kernel-Version"</string>
+    <string name="build_number">"Build-Nummer"</string>
+    <string name="device_info_not_available">"Nicht verfügbar"</string>
+    <string name="device_status_activity_title">"Status"</string>
+    <string name="device_status">"Status"</string>
+    <string name="device_status_summary">"IMEI, Telefonnummer, Signal usw."</string>
+    <string name="storage_settings_title">"SD-Karte und Speicher"</string>
+    <string name="storage_settings_summary">"SD-Karte entnehmen, verfügbaren Speicher anzeigen"</string>
+    <string name="status_number">"Telefonnummer"</string>
+    <string name="status_network_type">"Netzwerktyp"</string>
+    <string name="status_data_state">"Datenzugang"</string>
+    <string name="status_service_state">"Servicestatus"</string>
+    <string name="status_signal_strength">"Signalstärke"</string>
+    <string name="status_roaming">"Roaming"</string>
+    <string name="status_operator">"Netzwerk"</string>
+    <string name="status_wifi_mac_address">"WLAN-MAC-Adresse"</string>
+    <string name="status_bt_address">"Bluetooth-Adresse"</string>
+    <string name="status_unavailable">"Nicht verfügbar"</string>
+    <string name="status_up_time">"Betriebszeit"</string>
+    <string name="status_awake_time">"Aktivzeit"</string>
+    <string name="internal_memory">"Interner Telefonspeicher"</string>
+    <string name="sd_memory">"SD-Karte"</string>
+    <string name="memory_available">"Verfügbarer Speicher"</string>
+    <string name="memory_size">"Gesamtspeicher"</string>
+    <string name="sd_eject">"SD-Karte entnehmen"</string>
+    <string name="sd_unavailable">"Nicht verfügbar"</string>
+    <string name="read_only">"(schreibgeschützt)"</string>
+    <string name="battery_status_title">"Akkustatus"</string>
+    <string name="battery_level_title">"Akkuladung"</string>
+    <string name="apn_settings">"APNs"</string>
+    <string name="apn_edit">"Zugangspunkt bearbeiten"</string>
+    <string name="apn_not_set">"Nicht festgelegt"</string>
+    <string name="apn_name">"Name"</string>
+    <string name="apn_apn">"APN"</string>
+    <string name="apn_http_proxy">"Proxy"</string>
+    <string name="apn_http_port">"Port"</string>
+    <string name="apn_user">"Nutzername"</string>
+    <string name="apn_password">"Passwort"</string>
+    <string name="apn_server">"Server"</string>
+    <string name="apn_mmsc">"MMSC"</string>
+    <string name="apn_mms_proxy">"MMS-Proxy"</string>
+    <string name="apn_mms_port">"MMS-Port"</string>
+    <string name="apn_mcc">"MCC"</string>
+    <string name="apn_mnc">"MNC"</string>
+    <string name="apn_type">"APN-Typ"</string>
+    <string name="menu_delete">"APN löschen"</string>
+    <string name="menu_new">"Neuer APN"</string>
+    <string name="menu_save">"Speichern"</string>
+    <string name="menu_cancel">"Verwerfen"</string>
+    <string name="error_title">"Achtung"</string>
+    <string name="error_name_empty">"Das Namensfeld darf nicht leer sein."</string>
+    <string name="error_apn_empty">"Der APN darf nicht leer sein."</string>
+    <string name="error_mcc_not3">"Das MCC-Feld muss 3 Zeichen enthalten."</string>
+    <string name="error_mnc_not23">"Das MNC-Feld muss 2 oder 3 Zeichen enthalten."</string>
+    <string name="master_clear_title">"Auf Werkszustand zurück"</string>
+    <string name="master_clear_summary">"Löscht alle Daten auf dem Telefon"</string>
+    <string name="master_clear_desc">"Durch diese Aktion wird das Telefon auf den Werkszustand zurückgesetzt. Alle Daten und heruntergeladenen Anwendungen werden gelöscht!"</string>
+    <string name="master_clear_button_text">"Telefon zurücksetzen"</string>
+    <string name="master_clear_final_desc">"Telefon zurücksetzen und alle Ihre Daten und Anwendungen löschen? Die Aktion kann nicht rückgängig gemacht werden!"</string>
+    <string name="master_clear_final_button_text">"Alles löschen"</string>
+    <!-- no translation found for master_clear_gesture_prompt (1428645764883536750) -->
+    <skip />
+    <string name="master_clear_gesture_explanation">"Sie müssen Ihr Entsperrungsmuster eingeben, um das Zurücksetzen des Telefons zu bestätigen."</string>
+    <string name="master_clear_failed">"Die Zurücksetzung konnte nicht durchgeführt werden, da der Service zur Systembereinigung nicht verfügbar ist."</string>
+    <string name="call_settings_title">"Anrufeinstellungen"</string>
+    <string name="call_settings_summary">"Mailbox, Anrufweiterleitung, Anklopfen, Anruferkennung einrichten"</string>
+    <string name="network_settings_title">"Mobile Netzwerke"</string>
+    <string name="network_settings_summary">"Optionen für Roaming, Netzwerke, APNs festlegen"</string>
+    <string name="location_title">"Standortquellen"</string>
+    <string name="location_network_based">"Wireless nutzen"</string>
+    <string name="location_networks_disabled">"Standort über Wireless-Netzwerke anzeigen (z.B. in Google Maps)"</string>
+    <string name="location_neighborhood_level">"Standort bestimmt von WLAN und/oder mobilen Netzwerken"</string>
+    <string name="location_gps">"GPS-Satelliten aktivieren"</string>
+    <string name="location_street_level">"Auf Straßenebene lokalisieren (deaktivieren, um Akku zu sparen)"</string>
+    <string name="location_gps_disabled">"Auf Straßenebene lokalisieren (höhere Akkuleistung, zusätzl. Himmelsansicht)"</string>
+    <string name="about_settings">"Telefoninfo"</string>
+    <string name="about_settings_summary">"Rechtliche Hinweise, Telefonstatus und Softwareversion anzeigen"</string>
+    <string name="legal_information">"Rechtliche Hinweise"</string>
+    <string name="contributors_title">"Mitwirkende"</string>
+    <string name="copyright_title">"Urheberrecht"</string>
+    <string name="license_title">"Lizenz"</string>
+    <string name="terms_title">"Nutzungsbedingungen"</string>
+    <string name="settings_license_activity_title">"Open Source-Lizenzen"</string>
+    <string name="settings_license_activity_unavailable">"Beim Laden der Lizenzen ist ein Problem aufgetreten."</string>
+    <string name="settings_license_activity_loading">"Wird geladen..."</string>
+    <string name="lock_settings_title">"Display-Entsperrungsmuster"</string>
+    <string name="lockpattern_change_lock_pattern_label">"Entsperrungsmuster ändern"</string>
+    <!-- no translation found for lockpattern_need_to_unlock (757935356911054465) -->
+    <skip />
+    <string name="lockpattern_need_to_unlock_wrong">"Versuchen Sie es bitte erneut:"</string>
+    <!-- no translation found for lockpattern_recording_intro_header (308287052221942814) -->
+    <skip />
+    <string name="lockpattern_recording_intro_footer">"Menütaste drücken, um die Hilfe aufzurufen"</string>
+    <string name="lockpattern_recording_inprogress">"Lassen Sie die Tasten los, wenn Sie fertig sind."</string>
+    <string name="lockpattern_recording_incorrect_too_short">"Verbinden Sie mindestens <xliff:g id="NUMBER">%d</xliff:g> Punkte. Versuchen Sie es erneut:"</string>
+    <string name="lockpattern_pattern_entered_header">"Muster wurde aufgezeichnet!"</string>
+    <string name="lockpattern_need_to_confirm">"Zeichnen Sie das Muster zur Bestätigung erneut:"</string>
+    <string name="lockpattern_pattern_confirmed_header">"Ihr neues Entsperrungsmuster:"</string>
+    <string name="lockpattern_confirm_button_text">"Bestätigen"</string>
+    <string name="lockpattern_restart_button_text">"Neu aufzeichnen"</string>
+    <string name="lockpattern_retry_button_text">"Erneut versuchen"</string>
+    <string name="lockpattern_continue_button_text">"Weiter"</string>
+    <string name="lockpattern_settings_title">"Entsperrungsmuster"</string>
+    <string name="lockpattern_settings_enable_title">"Muster erforderlich"</string>
+    <string name="lockpattern_settings_enable_summary">"Zum Entsperren muss ein Muster gezeichnet werden"</string>
+    <string name="lockpattern_settings_enable_visible_pattern_title">"Muster sichtbar"</string>
+    <!-- no translation found for lockpattern_settings_enable_tactile_feedback_title (972174133075372341) -->
+    <skip />
+    <string name="lockpattern_settings_choose_lock_pattern">"Entsperrungsmuster"</string>
+    <string name="lockpattern_settings_change_lock_pattern">"Muster ändern"</string>
+    <!-- no translation found for lockpattern_settings_help_how_to_record (2614673439060830433) -->
+    <skip />
+    <string name="lockpattern_too_many_failed_confirmation_attempts_header">"Zu viele fehlgeschlagene Versuche!"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_footer">"In <xliff:g id="NUMBER">%d</xliff:g> Sekunden erneut versuchen."</string>
+    <string name="skip_button_label">"Abbrechen"</string>
+    <string name="next_button_label">"Weiter"</string>
+    <string name="lock_title">"Sichern Ihres Telefons"</string>
+    <string name="lock_intro_message"><font size="17">"Schützen Sie Ihr Telefon vor unerlaubter Verwendung, indem Sie ein persönliches Entsperrungsmuster erstellen. "\n<font height="17">\n</font><b>"1"</b>"  Auf dem nächsten Bildschirm sehen Sie, wie ein Beispielmuster gezeichnet wird. "\n<font height="17">\n</font><b>"2"</b>"  Anschließend können Sie Ihr eigenes Entsperrungsmuster aufzeichnen. Sie können verschiedene Muster ausprobieren, müssen jedoch immer mindestens vier Punkte miteinander verbinden. "\n<font height="17">\n</font><b>"3"</b>"  Zeichnen Sie Ihr Muster zur Bestätigung erneut. "\n<font height="17">\n</font><b>"Bereit? Wählen Sie “Weiter”"</b>". "\n<font height="3">\n</font>"Wählen Sie “Abbrechen”, wenn Sie Ihr Telefon nicht schützen möchten."</font></string>
+    <string name="lock_example_title">"Beispielmuster"</string>
+    <string name="lock_example_message">"Verbinden Sie mindestens vier Punkte."\n" "\n"Wählen Sie \"Weiter\", um ein eigenes Muster aufzuzeichnen."</string>
+    <string name="manageapplications_settings_title">"Anwendungen verwalten"</string>
+    <string name="applications_settings">"Anwendungen"</string>
+    <string name="applications_settings_summary">"Anwendungen verwalten, Tastenkombinationen für Schnellstart einrichten"</string>
+    <string name="applications_settings_header">"Anwendungen"</string>
+    <string name="install_applications">"Unbekannte Quellen"</string>
+    <string name="install_unknown_applications">"Installation von Nicht-Market-Anwendungen zulassen"</string>
+    <string name="install_all_warning">"Anwendungen aus unbekannten Quellen können gefährlich für Ihr Telefon und Ihre persönlichen Daten sein. Sie stimmen zu, dass Sie die Verantwortung für alle Schäden an Ihrem Telefon oder jegliche Datenverluste tragen, die aus der Verwendung dieser Anwendungen entstehen können."</string>
+    <string name="manage_applications_title">"Anwendungen verwalten"</string>
+    <string name="application_info_label">"Anwendungsinfo"</string>
+    <string name="storage_label">"Speicher"</string>
+    <string name="auto_launch_label">"Standardmäßig starten"</string>
+    <string name="permissions_label">"Berechtigungen"</string>
+    <string name="total_size_label">"Insgesamt"</string>
+    <string name="application_size_label">"Anwendung"</string>
+    <string name="data_size_label">"Daten"</string>
+    <string name="uninstall_text">"Deinstallieren"</string>
+    <string name="clear_user_data_text">"Daten löschen"</string>
+    <string name="auto_launch_enable_text">"Sie haben diese Anwendung für einige Aktionen als Standard festgelegt."</string>
+    <string name="auto_launch_disable_text">"Kein Standard"</string>
+    <string name="clear_activities">"Standardeinstellungen löschen"</string>
+    <string name="unknown">"Unbekannt"</string>
+    <string name="sort_order_alpha">"Alphabetisch sortieren"</string>
+    <string name="sort_order_size">"Nach Größe sortieren (absteigend)"</string>
+    <string name="manage_space_text">"Speicherplatz verwalten"</string>
+    <!-- no translation found for filter_apps_all (5362458533526576243) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (6478735462006756182) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (4508709081284629440) -->
+    <skip />
+    <!-- no translation found for loading (3200408047793887917) -->
+    <skip />
+    <string name="recompute_size">"Größe wird neu berechnet..."</string>
+    <string name="clear_data_dlg_title">"Löschen"</string>
+    <string name="clear_data_dlg_text">"Alle in dieser Anwendung gespeicherten Informationen werden endgültig gelöscht."</string>
+    <string name="dlg_ok">"OK"</string>
+    <string name="dlg_cancel">"Abbrechen"</string>
+    <string name="app_not_found_dlg_title">"Anwendung nicht gefunden"</string>
+    <string name="app_not_found_dlg_text">"Diese Anwendung wurde in der Liste der installierten Anwendungen nicht gefunden."</string>
+    <string name="clear_data_failed">"Anwendungsdaten können nicht gelöscht werden."</string>
+    <!-- no translation found for security_settings_desc (3116027624526915561) -->
+    <skip />
+    <!-- no translation found for computing_size (8865983009275200301) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (1901940003700269523) -->
+    <skip />
+    <!-- no translation found for empty_list_msg (723420725041278150) -->
+    <skip />
+    <string name="language_settings">"Gebietsschema und Text"</string>
+    <!-- no translation found for language_settings_summary (595647729475399987) -->
+    <skip />
+    <string name="language_category">"Ländereinstellung"</string>
+    <string name="text_category">"Texteinstellungen"</string>
+    <string name="phone_language">"Sprache wählen"</string>
+    <string name="auto_replace">"Autom. Ersetzung"</string>
+    <string name="auto_replace_summary">"Tippfehler korrigieren"</string>
+    <string name="auto_caps">"Autom. Großschreibung"</string>
+    <string name="auto_caps_summary">"Jeden Satz mit einem Großbuchstaben beginnen"</string>
+    <string name="auto_punctuate">"Autom. Zeichensetzung"</string>
+    <string name="auto_punctuate_summary">"Leertaste zweimal drücken, um \".\" hinzuzufügen"</string>
+    <string name="show_password">"Sichtbare Passwörter"</string>
+    <string name="show_password_summary">"Passwort bei der Eingabe anzeigen"</string>
+    <string name="testing">"Test"</string>
+    <string name="testing_phone_info">"Telefoninformation"</string>
+    <string name="testing_battery_info">"Akkuinformationen"</string>
+    <string name="quick_launch_title">"Schnellstart"</string>
+    <string name="quick_launch_summary">"Tastenkombinationen zum Starten von Anwendungen festlegen"</string>
+    <string name="quick_launch_assign_application">"Anwendung zuweisen"</string>
+    <string name="quick_launch_no_shortcut">"Keine Tastenkombination"</string>
+    <string name="quick_launch_shortcut">"Suchen + <xliff:g id="SHORTCUT_LETTER">%1$s</xliff:g>"</string>
+    <string name="quick_launch_clear_dialog_title">"Löschen"</string>
+    <string name="quick_launch_clear_dialog_message">"Die Tastenkombination für <xliff:g id="SHORTCUT_LETTER">%1$s</xliff:g> (<xliff:g id="APPLICATION_NAME">%2$s</xliff:g>) wird gelöscht."</string>
+    <string name="quick_launch_clear_ok_button">"OK"</string>
+    <string name="quick_launch_clear_cancel_button">"Abbrechen"</string>
+    <string name="quick_launch_display_mode_applications">"Anwendungen"</string>
+    <string name="quick_launch_display_mode_shortcuts">"Tastenkombinationen"</string>
+    <!-- no translation found for input_methods_settings_title (6800066636850553887) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (7571173442946675205) -->
+    <skip />
+    <string name="development_settings_title">"Entwicklung"</string>
+    <!-- no translation found for development_settings_summary (2151320488701538355) -->
+    <skip />
+    <string name="enable_adb">"USB-Debugging"</string>
+    <string name="enable_adb_summary">"Debugmodus bei Anschluss eines USB-Geräts"</string>
+    <string name="keep_screen_on">"Aktiv bleiben"</string>
+    <string name="keep_screen_on_summary">"Display wird beim Laden nie in den Ruhezustand versetzt"</string>
+    <!-- no translation found for allow_mock_location (2787962564578664888) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (317615105156345626) -->
+    <skip />
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index db6f9a7..a6ede63 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1,23 +1,1235 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2007 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.
- */
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Sync settings -->
-    <string name="sync_gmail">Google Mail</string>
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for device_info_default (7590614823249081756) -->
+    <skip />
+    <!-- no translation found for device_info_uptime (5770997070401578853) -->
+    <skip />
+    <!-- no translation found for device_info_awaketime (8786872485906712469) -->
+    <skip />
+    <!-- no translation found for device_info_asleeptime (7521071877583454145) -->
+    <skip />
+    <!-- no translation found for turn_on_radio (5921500147111366100) -->
+    <skip />
+    <!-- no translation found for turn_off_radio (8265991390836235521) -->
+    <skip />
+    <!-- no translation found for turn_on_qxdm (1929680250960586568) -->
+    <skip />
+    <!-- no translation found for turn_off_qxdm (2231700509067037981) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_viewADN (6360358040101027165) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_viewFDN (1156525488415146391) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_viewSDN (1621957874826137326) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_getPDP (5262139039274516177) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_enableData (7421444646018525501) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_disableData (747895994197436038) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_enableDataOnBoot (1926825935390738605) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_disableDataOnBoot (1229911918312837466) -->
+    <skip />
+    <!-- no translation found for radioInfo_service_in (5924630304105370132) -->
+    <skip />
+    <!-- no translation found for radioInfo_service_out (8851866705716243370) -->
+    <skip />
+    <!-- no translation found for radioInfo_service_emergency (3716022424799582775) -->
+    <skip />
+    <!-- no translation found for radioInfo_service_off (1327997868238966135) -->
+    <skip />
+    <!-- no translation found for radioInfo_roaming_in (500733867700442877) -->
+    <skip />
+    <!-- no translation found for radioInfo_roaming_not (6396563258833262032) -->
+    <skip />
+    <!-- no translation found for radioInfo_phone_idle (1313192484166377407) -->
+    <skip />
+    <!-- no translation found for radioInfo_phone_ringing (3719782771670214311) -->
+    <skip />
+    <!-- no translation found for radioInfo_phone_offhook (8240719545096222282) -->
+    <skip />
+    <!-- no translation found for radioInfo_data_disconnected (2529875822215485897) -->
+    <skip />
+    <!-- no translation found for radioInfo_data_connecting (4072774006290747959) -->
+    <skip />
+    <!-- no translation found for radioInfo_data_connected (3226955374690346958) -->
+    <skip />
+    <!-- no translation found for radioInfo_data_suspended (4953150687356763202) -->
+    <skip />
+    <!-- no translation found for radioInfo_unknown (1459640470009191283) -->
+    <skip />
+    <!-- no translation found for radioInfo_display_packets (6240096759326286933) -->
+    <skip />
+    <!-- no translation found for radioInfo_display_bytes (2316664594612332324) -->
+    <skip />
+    <!-- no translation found for radioInfo_display_dbm (5976249140663971321) -->
+    <skip />
+    <!-- no translation found for radioInfo_display_asu (4744317576791439328) -->
+    <skip />
+    <!-- no translation found for radioInfo_lac (9132851392756929560) -->
+    <skip />
+    <!-- no translation found for radioInfo_cid (8104441740986410116) -->
+    <skip />
+    <!-- no translation found for sdcard_unmount (4883209407806765776) -->
+    <skip />
+    <!-- no translation found for small_font (8358552488649514689) -->
+    <skip />
+    <!-- no translation found for medium_font (6883565794450338865) -->
+    <skip />
+    <!-- no translation found for large_font (4017618214361207193) -->
+    <skip />
+    <!-- no translation found for font_size_save (4680809224019179332) -->
+    <skip />
+    <!-- no translation found for sdcard_setting (7947032805424916049) -->
+    <skip />
+    <!-- no translation found for screen_off_timeout_label (3108465509533969105) -->
+    <skip />
+    <!-- no translation found for stay_on (5096027063517994119) -->
+    <skip />
+    <!-- no translation found for app_launcher_newView_text (2571672805191261300) -->
+    <skip />
+    <!-- no translation found for battery_info_status_label (7241771617541550021) -->
+    <skip />
+    <!-- no translation found for battery_info_scale_label (909568629374595124) -->
+    <skip />
+    <!-- no translation found for battery_info_level_label (2159203680331429485) -->
+    <skip />
+    <!-- no translation found for battery_info_health_label (5980664882115222930) -->
+    <skip />
+    <!-- no translation found for battery_info_technology_label (6228148669526755511) -->
+    <skip />
+    <!-- no translation found for battery_info_voltage_label (365003754672592412) -->
+    <skip />
+    <!-- no translation found for battery_info_voltage_units (8263071212648651338) -->
+    <skip />
+    <!-- no translation found for battery_info_temperature_label (7870244240851501404) -->
+    <skip />
+    <!-- no translation found for battery_info_temperature_units (7487929303685158981) -->
+    <skip />
+    <!-- no translation found for battery_info_uptime (1195623257533912354) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_battery (1529944627925423756) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_plugged (7272044960586959459) -->
+    <skip />
+    <!-- no translation found for battery_info_screen_on (832651425042656482) -->
+    <skip />
+    <!-- no translation found for battery_info_status_unknown (7415613412429160329) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging (8335298083353102727) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_ac (1872629416053266802) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_usb (4168539986397505310) -->
+    <skip />
+    <!-- no translation found for battery_info_status_discharging (4135855918830635792) -->
+    <skip />
+    <!-- no translation found for battery_info_status_not_charging (6393478667336118628) -->
+    <skip />
+    <!-- no translation found for battery_info_status_full (1825476891715419962) -->
+    <skip />
+    <!-- no translation found for battery_info_health_unknown (6950446031686941336) -->
+    <skip />
+    <!-- no translation found for battery_info_health_good (1730818926670939022) -->
+    <skip />
+    <!-- no translation found for battery_info_health_overheat (2159805591547843144) -->
+    <skip />
+    <!-- no translation found for battery_info_health_dead (1685986976493052835) -->
+    <skip />
+    <!-- no translation found for battery_info_health_over_voltage (3071909274422372159) -->
+    <skip />
+    <!-- no translation found for battery_info_health_unspecified_failure (6654089753274800002) -->
+    <skip />
+    <!-- no translation found for bluetooth (5458557266931413390) -->
+    <skip />
+    <!-- no translation found for bluetooth_stopping (2884449642912216721) -->
+    <skip />
+    <!-- no translation found for bluetooth_disabled (1391447030022958043) -->
+    <skip />
+    <!-- no translation found for bluetooth_enabled (5765634385322070565) -->
+    <skip />
+    <!-- no translation found for bluetooth_enabling (2387811926440795477) -->
+    <skip />
+    <!-- no translation found for bluetooth_visibility (7070140108792119698) -->
+    <skip />
+    <!-- no translation found for bluetooth_is_discoverable (8979781589253468104) -->
+    <skip />
+    <!-- no translation found for bluetooth_not_discoverable (4136294765906418294) -->
+    <skip />
+    <!-- no translation found for bluetooth_devices (2263213941869967836) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_name (6673408408534978327) -->
+    <skip />
+    <!-- no translation found for bluetooth_name_not_set (3250022629948561003) -->
+    <skip />
+    <!-- no translation found for bluetooth_scan_for_devices (6460816609454316693) -->
+    <skip />
+    <!-- no translation found for bluetooth_clear_list (6618471329960568682) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnect_blank (6129414878545273731) -->
+    <skip />
+    <!-- no translation found for bluetooth_connected (7380272173205834342) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnected (779512372559332317) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (613305857810977890) -->
+    <skip />
+    <!-- no translation found for bluetooth_connecting (424814598663613104) -->
+    <skip />
+    <!-- no translation found for bluetooth_unknown (5984480705609238684) -->
+    <skip />
+    <!-- no translation found for bluetooth_not_connected (1000422792621268295) -->
+    <skip />
+    <!-- no translation found for bluetooth_failed_to_enable (10261849074413402) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing (8284273555047880444) -->
+    <skip />
+    <!-- no translation found for failed_to_pair (5265027255173301781) -->
+    <skip />
+    <!-- no translation found for failed_to_connect (1409075183242262956) -->
+    <skip />
+    <!-- no translation found for bluetooth_paired (5011854699437682723) -->
+    <skip />
+    <!-- no translation found for bluetooth_paired_not_nearby (2890021978719716438) -->
+    <skip />
+    <!-- no translation found for bluetooth_device (4077191291193332167) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnect (4070053533691322466) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect (6123567524009555372) -->
+    <skip />
+    <!-- no translation found for bluetooth_unpair (6786377316984999718) -->
+    <skip />
+    <!-- no translation found for bluetooth_pair (6433088623778842494) -->
+    <skip />
+    <!-- no translation found for progress_scanning (7119295261222935963) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_ticker (6269529534945974964) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_title (3790273649365187417) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_message (3713615470961259613) -->
+    <skip />
+    <!-- no translation found for date_and_time (7561144940603232653) -->
+    <skip />
+    <!-- no translation found for date_time_12_hour_sample (3346099183513673921) -->
+    <skip />
+    <!-- no translation found for date_time_24_hour_sample (2930431568836213699) -->
+    <skip />
+    <!-- no translation found for choose_timezone (5417013900989552917) -->
+    <skip />
+    <!-- no translation found for display_preview_label (165196289151559072) -->
+    <skip />
+    <!-- no translation found for display_font_size_label (6263623549052165912) -->
+    <skip />
+    <!-- no translation found for intent_sender_data_label (1882888392709072340) -->
+    <skip />
+    <!-- no translation found for intent_sender_sendbroadcast_text (6655878781657210463) -->
+    <skip />
+    <!-- no translation found for intent_sender_action_label (5488427871152834830) -->
+    <skip />
+    <!-- no translation found for intent_sender_startactivity_text (7612120772998972749) -->
+    <skip />
+    <!-- no translation found for intent_sender_resource_label (2764211719287875308) -->
+    <skip />
+    <!-- no translation found for intent_sender_account_label (5895797962518760165) -->
+    <skip />
+    <!-- no translation found for keyguard_pw_mod_text (4628095162019973491) -->
+    <skip />
+    <!-- no translation found for keyguard_pin_mod_text (3916277193756089917) -->
+    <skip />
+    <!-- no translation found for keyguard_label (6105620776700897730) -->
+    <skip />
+    <!-- no translation found for keyguard_sim_pin_label (3165230979848342096) -->
+    <skip />
+    <!-- no translation found for keyguard_password_old_password_error_text (7825167921425875782) -->
+    <skip />
+    <!-- no translation found for keyguard_password_button_text (5583216611767587916) -->
+    <skip />
+    <!-- no translation found for keyguard_password_confirm_new_label (3049924245089700462) -->
+    <skip />
+    <!-- no translation found for keyguard_password_new_label (6886321134396839613) -->
+    <skip />
+    <!-- no translation found for keyguard_password_old_label (2625226322160389164) -->
+    <skip />
+    <!-- no translation found for keyguard_password_mismatch_error_text (5590439742407960684) -->
+    <skip />
+    <!-- no translation found for proxy_clear_text (7462018343861464800) -->
+    <skip />
+    <!-- no translation found for proxy_port_label (454764249950408469) -->
+    <skip />
+    <!-- no translation found for proxy_defaultView_text (477956555946955188) -->
+    <skip />
+    <!-- no translation found for proxy_action_text (7237648202287106053) -->
+    <skip />
+    <!-- no translation found for proxy_hostname_label (8172724402202502926) -->
+    <skip />
+    <!-- no translation found for proxy_error (2368838777443712514) -->
+    <skip />
+    <!-- no translation found for proxy_error_dismiss (1009576670609260537) -->
+    <skip />
+    <!-- no translation found for proxy_error_invalid_host (5818723835453265444) -->
+    <skip />
+    <!-- no translation found for proxy_error_empty_port (738670302600971696) -->
+    <skip />
+    <!-- no translation found for proxy_error_empty_host_set_port (3522768877312466087) -->
+    <skip />
+    <!-- no translation found for proxy_error_invalid_port (5852740817449746242) -->
+    <skip />
+    <!-- no translation found for radio_info_signal_location_label (6790461877981061839) -->
+    <skip />
+    <!-- no translation found for radio_info_neighboring_location_label (5882264988461015003) -->
+    <skip />
+    <!-- no translation found for radio_info_data_attempts_label (5718604146991711306) -->
+    <skip />
+    <!-- no translation found for radio_info_imsi_label (2317524657274819091) -->
+    <skip />
+    <!-- no translation found for radio_info_gprs_service_label (5420684247059811667) -->
+    <skip />
+    <!-- no translation found for radio_info_roaming_label (1523999234094211876) -->
+    <skip />
+    <!-- no translation found for radio_info_imei_label (7478845477154345609) -->
+    <skip />
+    <!-- no translation found for radio_info_call_redirect_label (9152188915373483603) -->
+    <skip />
+    <!-- no translation found for radio_info_ppp_resets_label (7827917501324472951) -->
+    <skip />
+    <!-- no translation found for radio_info_gsm_disconnects_label (50196516231035865) -->
+    <skip />
+    <!-- no translation found for radio_info_current_network_label (7900537487294471382) -->
+    <skip />
+    <!-- no translation found for radio_info_data_successes_label (7535159054935678976) -->
+    <skip />
+    <!-- no translation found for radio_info_ppp_received_label (4691560024942688416) -->
+    <skip />
+    <!-- no translation found for radio_info_gsm_service_label (4136951864496199626) -->
+    <skip />
+    <!-- no translation found for radio_info_signal_strength_label (5563094068800111446) -->
+    <skip />
+    <!-- no translation found for radio_info_call_status_label (1954322409156881789) -->
+    <skip />
+    <!-- no translation found for radio_info_ppp_sent_label (4787832417770220813) -->
+    <skip />
+    <!-- no translation found for radio_info_radio_resets_label (6419704529083057732) -->
+    <skip />
+    <!-- no translation found for radio_info_message_waiting_label (3693034295049688916) -->
+    <skip />
+    <!-- no translation found for radio_info_phone_number_label (1169287873766331522) -->
+    <skip />
+    <!-- no translation found for radio_info_band_mode_label (492995374341164385) -->
+    <skip />
+    <!-- no translation found for radio_info_network_type_label (6136190660604370025) -->
+    <skip />
+    <!-- no translation found for radio_info_set_perferred_label (7678318715915926899) -->
+    <skip />
+    <!-- no translation found for radio_info_ping_ipaddr (7229811664688502621) -->
+    <skip />
+    <!-- no translation found for radio_info_ping_hostname (7817617877155199848) -->
+    <skip />
+    <!-- no translation found for radio_info_http_client_test (5100483824350561339) -->
+    <skip />
+    <!-- no translation found for radio_info_toggle_ciph_label (2705975697585878388) -->
+    <skip />
+    <!-- no translation found for ping_test_label (99396772665008247) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_label (6577522217730406517) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_update_label (6471155265532972448) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_refresh_label (4334057389927982364) -->
+    <skip />
+    <!-- no translation found for band_mode_title (7821227842056223251) -->
+    <skip />
+    <!-- no translation found for band_mode_loading (410937385710103955) -->
+    <skip />
+    <!-- no translation found for band_mode_set (8014088359589034048) -->
+    <skip />
+    <!-- no translation found for band_mode_failed (7344139594454779293) -->
+    <skip />
+    <!-- no translation found for band_mode_succeeded (6743326367601528579) -->
+    <skip />
+    <!-- no translation found for ringer_volume_ringer_mode_label (1267680012888226403) -->
+    <skip />
+    <!-- no translation found for ringer_volume_screen_increasing_text (5641107274996825316) -->
+    <skip />
+    <!-- no translation found for ringer_volume_ringtone_label (8507276140935496895) -->
+    <skip />
+    <!-- no translation found for ringer_volume_instructions (7430796981440362113) -->
+    <skip />
+    <!-- no translation found for sdcard_changes_instructions (7539994899295940230) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_screen_mass_storage_text (2709793645616209242) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_total_bytes_label (4695007104428377476) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_not_present_status (8273854904691436051) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_available_bytes_label (8728724492013578100) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_mass_storage_status (5462257162856618607) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_unmounted_status (4993156749793936182) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_bad_removal_status (6987436040423897460) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_used_bytes_label (1097524397345356686) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_scanning_status (7123981757360169583) -->
+    <skip />
+    <!-- no translation found for sdcard_settings_read_only_status (4474146266994176505) -->
+    <skip />
+    <!-- no translation found for sdcard_removal_alert_title (5360030372146492494) -->
+    <skip />
+    <!-- no translation found for sdcard_unmountable_alert_title (2457327813571875941) -->
+    <skip />
+    <!-- no translation found for telephony_user_label (3662067259022076855) -->
+    <skip />
+    <!-- no translation found for telephony_server_label (2958905930463255443) -->
+    <skip />
+    <!-- no translation found for telephony_name_label (3239206851237697815) -->
+    <skip />
+    <!-- no translation found for telephony_mmsc_label (3129572752790593204) -->
+    <skip />
+    <!-- no translation found for telephony_apn_label (1269355797700328878) -->
+    <skip />
+    <!-- no translation found for telephony_mcc_label (2358690342050148082) -->
+    <skip />
+    <!-- no translation found for telephony_port_label (1664109599163228850) -->
+    <skip />
+    <!-- no translation found for telephony_password_label (2790168704218175016) -->
+    <skip />
+    <!-- no translation found for telephony_proxy_label (4480701121030721391) -->
+    <skip />
+    <!-- no translation found for telephony_mnc_label (6250035410010841498) -->
+    <skip />
+    <!-- no translation found for telephony_mmsproxy_label (5927157452625472941) -->
+    <skip />
+    <!-- no translation found for telephony_mmsport_label (151112465984611435) -->
+    <skip />
+    <!-- no translation found for next_label (485332588250947062) -->
+    <skip />
+    <!-- no translation found for language_picker_title (4327847825278760846) -->
+    <skip />
+    <!-- no translation found for select_your_language (9081963472187973531) -->
+    <skip />
+    <!-- no translation found for activity_picker_label (2380525463987566218) -->
+    <skip />
+    <!-- no translation found for device_info_label (7570393762255800528) -->
+    <skip />
+    <!-- no translation found for battery_info_label (4226476641445884464) -->
+    <skip />
+    <!-- no translation found for display_label (5332548614157902929) -->
+    <skip />
+    <!-- no translation found for phone_info_label (4489149928836976370) -->
+    <skip />
+    <!-- no translation found for sd_card_settings_label (4859619309953284243) -->
+    <skip />
+    <!-- no translation found for proxy_settings_label (7309754884369094752) -->
+    <skip />
+    <!-- no translation found for cancel (5496501778130330179) -->
+    <skip />
+    <!-- no translation found for settings_label (5215706799907405364) -->
+    <skip />
+    <!-- no translation found for airplane_mode (728128729487272521) -->
+    <skip />
+    <!-- no translation found for airplane_mode_summary (3500557633417506553) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_on (1243134862683209663) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_off (2291183932542256190) -->
+    <skip />
+    <!-- no translation found for radio_controls_title (4981652151494753702) -->
+    <skip />
+    <!-- no translation found for radio_controls_summary (9105526969569292926) -->
+    <skip />
+    <!-- no translation found for date_and_time_settings_title (7496498492273417635) -->
+    <skip />
+    <!-- no translation found for date_and_time_settings_summary (3489093199543794055) -->
+    <skip />
+    <!-- no translation found for date_time_auto (2362417333033542761) -->
+    <skip />
+    <!-- no translation found for date_time_auto_summaryOn (6001598633410342344) -->
+    <skip />
+    <!-- no translation found for date_time_auto_summaryOff (7997440952829716343) -->
+    <skip />
+    <!-- no translation found for date_time_24hour (7673898630734082066) -->
+    <skip />
+    <!-- no translation found for date_time_set_time (3035124335707824178) -->
+    <skip />
+    <!-- no translation found for date_time_set_timezone (8157539696840488255) -->
+    <skip />
+    <!-- no translation found for date_time_set_date (5796511221096156740) -->
+    <skip />
+    <!-- no translation found for date_time_date_format (8767730290447762594) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_alphabetically (8983103881342552870) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (7025442915093990469) -->
+    <skip />
+    <!-- no translation found for security_settings_title (969550777120624897) -->
+    <skip />
+    <!-- no translation found for security_settings_summary (3202445632951595923) -->
+    <skip />
+    <!-- no translation found for security_passwords_title (4466520735598079063) -->
+    <skip />
+    <!-- no translation found for bluetooth_quick_toggle_title (7390054857098148377) -->
+    <skip />
+    <!-- no translation found for bluetooth_quick_toggle_summary (2292894901949724405) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings (1545097653816106117) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings_title (7436154842447736508) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings_summary (1419697742707330821) -->
+    <skip />
+    <!-- no translation found for bluetooth_pin_entry (7140440689122855541) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_info (726888105035847276) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_msg (421984108945447804) -->
+    <skip />
+    <!-- no translation found for bluetooth_enter_pin_msg (5283213895861482149) -->
+    <skip />
+    <!-- no translation found for bluetooth_new_data (4048633302322349191) -->
+    <skip />
+    <!-- no translation found for bluetooth_new_data_confirm (6572723618484710293) -->
+    <skip />
+    <!-- no translation found for bluetooth_new_data_cancel (6401813497420912873) -->
+    <skip />
+    <!-- no translation found for bluetooth_scan_for_new_devices (2016453591198271840) -->
+    <skip />
+    <!-- no translation found for bluetooth_discoverability_panel_title (3088687647065413091) -->
+    <skip />
+    <!-- no translation found for bluetooth_discoverable (6321742881547460353) -->
+    <skip />
+    <!-- no translation found for bluetooth_connectable (6460916475945857842) -->
+    <skip />
+    <!-- no translation found for bluetooth_neither (7180764615407592566) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_title (5457824526570506576) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (4169248439102381141) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (1360133741981139570) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (3848550418295778426) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (3526057462723016574) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (1842004154350000288) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (302606151874724466) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (5004355397163127842) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (8557599374974072579) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (6848174297822591204) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (8660680578951214915) -->
+    <skip />
+    <!-- no translation found for wifi (1814330175745622683) -->
+    <skip />
+    <!-- no translation found for wifi_quick_toggle_title (4404851801229148146) -->
+    <skip />
+    <!-- no translation found for wifi_quick_toggle_summary (5254705029759236850) -->
+    <skip />
+    <!-- no translation found for wifi_settings (8327330966261092159) -->
+    <skip />
+    <!-- no translation found for wifi_settings_category (610287013958209636) -->
+    <skip />
+    <!-- no translation found for wifi_settings_summary (8789964612748859011) -->
+    <skip />
+    <!-- no translation found for forget_network (5055146656395940343) -->
+    <skip />
+    <!-- no translation found for wifi_status (4374358089273446404) -->
+    <skip />
+    <!-- no translation found for wifi_link_speed (8766462457818203791) -->
+    <skip />
+    <!-- no translation found for wifi_signal_3 (1264702582845283580) -->
+    <skip />
+    <!-- no translation found for wifi_signal_2 (3765197678751351272) -->
+    <skip />
+    <!-- no translation found for wifi_signal_1 (3469786868912545422) -->
+    <skip />
+    <!-- no translation found for wifi_signal_0 (7285670709111185231) -->
+    <skip />
+    <!-- no translation found for security (5693579233939508487) -->
+    <skip />
+    <!-- no translation found for wifi_security_open (6529463996240023139) -->
+    <skip />
+    <!-- no translation found for wifi_security_wep (8543279149057388909) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa (7229647924366572707) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa2 (641020427516679969) -->
+    <skip />
+    <!-- no translation found for wifi_security_unknown (7700764937580224930) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_open (7105261201983314526) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wep (2018232984976185738) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa (7240649761750328761) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa2 (5470387821577814216) -->
+    <skip />
+    <!-- no translation found for ip_address (4529429379837050044) -->
+    <skip />
+    <!-- no translation found for signal (2632692872631550847) -->
+    <skip />
+    <!-- no translation found for wifi_starting (380585178092358776) -->
+    <skip />
+    <!-- no translation found for wifi_stopping (1130828572786743854) -->
+    <skip />
+    <!-- no translation found for wifi_error (7223451684597210919) -->
+    <skip />
+    <!-- no translation found for error_starting (7901473970530638438) -->
+    <skip />
+    <!-- no translation found for error_stopping (6119744781517748022) -->
+    <skip />
+    <!-- no translation found for error_scanning (8959523523794779868) -->
+    <skip />
+    <!-- no translation found for error_connecting (1510805861562560751) -->
+    <skip />
+    <!-- no translation found for error_saving (596104681410934823) -->
+    <skip />
+    <!-- no translation found for connect (1116879604374989661) -->
+    <skip />
+    <!-- no translation found for connect_to_blank (6054013287161999519) -->
+    <skip />
+    <!-- no translation found for please_type_passphrase (5613230660950935320) -->
+    <skip />
+    <!-- no translation found for please_type_hex_key (3792966437690051423) -->
+    <skip />
+    <!-- no translation found for wifi_show_password (2142204324333077532) -->
+    <skip />
+    <!-- no translation found for scan_wifi (3192234741001559529) -->
+    <skip />
+    <!-- no translation found for summary_not_in_range (396994203639865459) -->
+    <skip />
+    <!-- no translation found for summary_remembered (7032231120124870464) -->
+    <skip />
+    <!-- no translation found for summary_connection_failed (5466501123715222542) -->
+    <skip />
+    <!-- no translation found for wifi_access_points (6047681549878678453) -->
+    <skip />
+    <!-- no translation found for wifi_type_ssid (4389276980911820577) -->
+    <skip />
+    <!-- no translation found for wifi_security (8115513846744543151) -->
+    <skip />
+    <!-- no translation found for wifi_save_config (1041957548332322297) -->
+    <skip />
+    <!-- no translation found for wifi_password_unchanged (5583782979192657008) -->
+    <skip />
+    <!-- no translation found for wifi_add_other_network (914072465709281633) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks (3091942233631075516) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1793737931132127488) -->
+    <skip />
+    <!-- no translation found for wifi_password_incorrect_error (8656138222468900361) -->
+    <skip />
+    <!-- no translation found for wifi_generic_connection_error (4414845075108763948) -->
+    <skip />
+    <!-- no translation found for wifi_menu_advanced (7729886219986221918) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_titlebar (6646153875184353089) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_save (5525488681356054899) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_cancel (4123436217014637229) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_invalid_ip (1648124374575025870) -->
+    <skip />
+    <!-- no translation found for wifi_use_static_ip (4076793026334955338) -->
+    <skip />
+    <!-- no translation found for wifi_ip_address (6067958502872259392) -->
+    <skip />
+    <!-- no translation found for wifi_dns1 (7502077213876989613) -->
+    <skip />
+    <!-- no translation found for wifi_dns2 (3296825469895827273) -->
+    <skip />
+    <!-- no translation found for wifi_gateway (393330487055540831) -->
+    <skip />
+    <!-- no translation found for wifi_netmask (6024777305439519433) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_connect (3348366738100644008) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_forget (5844111744505938081) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_change_password (7074463790535015442) -->
+    <skip />
+    <!-- no translation found for wifi_advanced_titlebar (7352048185262676955) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_title (4302664253747096207) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_summary (5137058932628594680) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_error (581404310349899492) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_channel_phrase (8341967925173918983) -->
+    <skip />
+    <!-- no translation found for fragment_status_scanning (2452501398802143084) -->
+    <skip />
+    <!-- no translation found for fragment_status_connecting (5455055928926778914) -->
+    <skip />
+    <!-- no translation found for fragment_status_authenticating (5975151429887814137) -->
+    <skip />
+    <!-- no translation found for fragment_status_obtaining_ip (8371541056156574137) -->
+    <skip />
+    <!-- no translation found for fragment_status_connected (7772649421228697676) -->
+    <skip />
+    <!-- no translation found for fragment_status_disconnecting (8051305438312488379) -->
+    <skip />
+    <!-- no translation found for fragment_status_disconnected (3290940773446552042) -->
+    <skip />
+    <!-- no translation found for fragment_status_failed (4964409385458293579) -->
+    <skip />
+    <!-- no translation found for status_scanning (3926342408784845610) -->
+    <skip />
+    <!-- no translation found for status_connecting (225048051419417871) -->
+    <skip />
+    <!-- no translation found for status_authenticating (4264747836549183098) -->
+    <skip />
+    <!-- no translation found for status_obtaining_ip (8073304022575470763) -->
+    <skip />
+    <!-- no translation found for status_connected (2715529156265923902) -->
+    <skip />
+    <!-- no translation found for status_disconnecting (1811735170177265186) -->
+    <skip />
+    <!-- no translation found for status_disconnected (1477066785918464530) -->
+    <skip />
+    <!-- no translation found for status_failed (1510040818386395715) -->
+    <skip />
+    <!-- no translation found for sound_and_display_settings (4749118288236939460) -->
+    <skip />
+    <!-- no translation found for sound_settings (2706184235211157339) -->
+    <skip />
+    <!-- no translation found for sound_and_display_settings_summary (3672623202659031178) -->
+    <skip />
+    <!-- no translation found for silent_mode_title (8688647037631448198) -->
+    <skip />
+    <!-- no translation found for silent_mode_summary (6135093989634963053) -->
+    <skip />
+    <!-- no translation found for ringtone_title (3146429644474380431) -->
+    <skip />
+    <!-- no translation found for ringtone_summary (1766080371183553822) -->
+    <skip />
+    <!-- no translation found for ring_volume_title (3239245366359256522) -->
+    <skip />
+    <!-- no translation found for ring_volume_summary (8107485240454889544) -->
+    <skip />
+    <!-- no translation found for vibrate_title (4376574310180696114) -->
+    <skip />
+    <!-- no translation found for vibrate_summary (6788068739601216797) -->
+    <skip />
+    <!-- no translation found for notification_sound_title (4775305251012747308) -->
+    <skip />
+    <!-- no translation found for notification_sound_summary (7617168477811163700) -->
+    <skip />
+    <!-- no translation found for notification_sound_dialog_title (7369825410219702421) -->
+    <skip />
+    <!-- no translation found for media_volume_title (1693540506432790482) -->
+    <skip />
+    <!-- no translation found for media_volume_summary (7399719776785079493) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_title (5173416183471867551) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_on (7206798183944836534) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_off (1555390648905350809) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_title (1955885794556255214) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_on (1491009278452582375) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_off (1932117674347216086) -->
+    <skip />
+    <!-- no translation found for sync_settings (5627573212478260990) -->
+    <skip />
+    <!-- no translation found for sync_settings_summary (2105151329390814783) -->
+    <skip />
+    <!-- no translation found for sync_too_many_deletes (5404332736593108449) -->
+    <skip />
+    <!-- no translation found for sync_automatically (1757054007777364379) -->
+    <skip />
+    <!-- no translation found for sync_enabled (4881088906246650863) -->
+    <skip />
+    <!-- no translation found for sync_disabled (2619875735374209768) -->
+    <skip />
+    <!-- no translation found for sync_menu_sync_now (3780223798968952491) -->
+    <skip />
+    <!-- no translation found for sync_menu_sync_cancel (5977866540414760428) -->
+    <skip />
+    <string name="sync_gmail">"Google Mail"</string>
+    <!-- no translation found for sync_calendar (596997436997648960) -->
+    <skip />
+    <!-- no translation found for sync_contacts (4740241811440373346) -->
+    <skip />
+    <!-- no translation found for sync_too_many_deletes_desc (4152554451720380120) -->
+    <skip />
+    <!-- no translation found for sync_really_delete (8529530859370540061) -->
+    <skip />
+    <!-- no translation found for sync_undo_deletes (5506677219430968015) -->
+    <skip />
+    <!-- no translation found for sync_do_nothing (8346666920786786758) -->
+    <skip />
+    <!-- no translation found for sync_is_failing (427555999473172925) -->
+    <skip />
+    <!-- no translation found for sync_plug (7544937220884084907) -->
+    <skip />
+    <!-- no translation found for display_settings (2055476596829366899) -->
+    <skip />
+    <!-- no translation found for animations_title (8735876378664711924) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (4910047473170373768) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (7454248311417075336) -->
+    <skip />
+    <!-- no translation found for brightness (7792602943961915646) -->
+    <skip />
+    <!-- no translation found for screen_timeout (8939204183998677539) -->
+    <skip />
+    <!-- no translation found for dim_screen (9146822367857660944) -->
+    <skip />
+    <!-- no translation found for sim_lock_settings (6543426308260152558) -->
+    <skip />
+    <!-- no translation found for sim_lock_settings_category (5039441655358781230) -->
+    <skip />
+    <!-- no translation found for sim_lock_settings_title (8010374003882925802) -->
+    <skip />
+    <!-- no translation found for sim_pin_toggle (7574412021981868256) -->
+    <skip />
+    <!-- no translation found for sim_lock_on (8138827066389889705) -->
+    <skip />
+    <!-- no translation found for sim_lock_off (5981077590897850416) -->
+    <skip />
+    <!-- no translation found for sim_pin_change (6346345741504768562) -->
+    <skip />
+    <!-- no translation found for sim_enter_pin (4472262228361846224) -->
+    <skip />
+    <!-- no translation found for sim_enable_sim_lock (1767414643085437650) -->
+    <skip />
+    <!-- no translation found for sim_disable_sim_lock (645505993827348391) -->
+    <skip />
+    <!-- no translation found for sim_enter_old (7066720880711460173) -->
+    <skip />
+    <!-- no translation found for sim_enter_new (5400506743942872294) -->
+    <skip />
+    <!-- no translation found for sim_reenter_new (3879209700314730223) -->
+    <skip />
+    <!-- no translation found for sim_change_pin (2931559944636266720) -->
+    <skip />
+    <!-- no translation found for sim_bad_pin (3448299105143686010) -->
+    <skip />
+    <!-- no translation found for sim_pins_dont_match (3311391861690022007) -->
+    <skip />
+    <!-- no translation found for sim_change_failed (296582980570404493) -->
+    <skip />
+    <!-- no translation found for sim_change_succeeded (5213849401095906667) -->
+    <skip />
+    <!-- no translation found for sim_lock_failed (5347551041374297429) -->
+    <skip />
+    <!-- no translation found for sim_enter_ok (1358372725362896701) -->
+    <skip />
+    <!-- no translation found for sim_enter_cancel (7631739323185806744) -->
+    <skip />
+    <!-- no translation found for device_info_settings (8859027767242680086) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_title (6730200310196695815) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_summary (6739352515982816664) -->
+    <skip />
+    <!-- no translation found for firmware_version (7819665654211702103) -->
+    <skip />
+    <!-- no translation found for model_number (4107796374489189882) -->
+    <skip />
+    <!-- no translation found for baseband_version (1650040574471474415) -->
+    <skip />
+    <!-- no translation found for kernel_version (55378504731737055) -->
+    <skip />
+    <!-- no translation found for build_number (1198654854394859525) -->
+    <skip />
+    <!-- no translation found for device_info_not_available (6218382614449625943) -->
+    <skip />
+    <!-- no translation found for device_status_activity_title (7855799759928692423) -->
+    <skip />
+    <!-- no translation found for device_status (2987561680068888482) -->
+    <skip />
+    <!-- no translation found for device_status_summary (1780544099238783522) -->
+    <skip />
+    <!-- no translation found for storage_settings_title (7861753874184164833) -->
+    <skip />
+    <!-- no translation found for storage_settings_summary (1416818376253802300) -->
+    <skip />
+    <!-- no translation found for status_number (4806660473653039727) -->
+    <skip />
+    <!-- no translation found for status_network_type (1161425700453834462) -->
+    <skip />
+    <!-- no translation found for status_data_state (8695034896805908780) -->
+    <skip />
+    <!-- no translation found for status_service_state (7070870512884685707) -->
+    <skip />
+    <!-- no translation found for status_signal_strength (1482993382046051601) -->
+    <skip />
+    <!-- no translation found for status_roaming (3315390849872980461) -->
+    <skip />
+    <!-- no translation found for status_operator (1056327385889326521) -->
+    <skip />
+    <!-- no translation found for status_wifi_mac_address (6992831729694423293) -->
+    <skip />
+    <!-- no translation found for status_bt_address (504373592762785867) -->
+    <skip />
+    <!-- no translation found for status_unavailable (6051510065892966154) -->
+    <skip />
+    <!-- no translation found for status_up_time (6098196556512905607) -->
+    <skip />
+    <!-- no translation found for status_awake_time (7049273600775745222) -->
+    <skip />
+    <!-- no translation found for internal_memory (7561409402817962159) -->
+    <skip />
+    <!-- no translation found for sd_memory (1795406535114313767) -->
+    <skip />
+    <!-- no translation found for memory_available (2899158225295363424) -->
+    <skip />
+    <!-- no translation found for memory_size (427803224818498885) -->
+    <skip />
+    <!-- no translation found for sd_eject (5921913949386442101) -->
+    <skip />
+    <!-- no translation found for sd_unavailable (8594217970053251031) -->
+    <skip />
+    <!-- no translation found for read_only (5208058402768070774) -->
+    <skip />
+    <!-- no translation found for battery_status_title (4908729478929871241) -->
+    <skip />
+    <!-- no translation found for battery_level_title (7696801820825704716) -->
+    <skip />
+    <!-- no translation found for apn_settings (7722988461663532083) -->
+    <skip />
+    <!-- no translation found for apn_edit (145450827773713132) -->
+    <skip />
+    <!-- no translation found for apn_not_set (1836736103685783041) -->
+    <skip />
+    <!-- no translation found for apn_name (5635523810193862271) -->
+    <skip />
+    <!-- no translation found for apn_apn (1405862057719498554) -->
+    <skip />
+    <!-- no translation found for apn_http_proxy (4783209622604526103) -->
+    <skip />
+    <!-- no translation found for apn_http_port (6467898443547323366) -->
+    <skip />
+    <!-- no translation found for apn_user (5401806939590692307) -->
+    <skip />
+    <!-- no translation found for apn_password (3912272151916346972) -->
+    <skip />
+    <!-- no translation found for apn_server (4178172695606191290) -->
+    <skip />
+    <!-- no translation found for apn_mmsc (4688710822514329323) -->
+    <skip />
+    <!-- no translation found for apn_mms_proxy (6319130324547259424) -->
+    <skip />
+    <!-- no translation found for apn_mms_port (4994975830339343926) -->
+    <skip />
+    <!-- no translation found for apn_mcc (4776172371424088609) -->
+    <skip />
+    <!-- no translation found for apn_mnc (6461836944090234319) -->
+    <skip />
+    <!-- no translation found for apn_type (2506383481268652319) -->
+    <skip />
+    <!-- no translation found for menu_delete (3312578247597762628) -->
+    <skip />
+    <!-- no translation found for menu_new (3302849393949232932) -->
+    <skip />
+    <!-- no translation found for menu_save (3541472751331191778) -->
+    <skip />
+    <!-- no translation found for menu_cancel (5119635160240047061) -->
+    <skip />
+    <!-- no translation found for error_title (5587090263536163777) -->
+    <skip />
+    <!-- no translation found for error_name_empty (8320983575802186669) -->
+    <skip />
+    <!-- no translation found for error_apn_empty (184981742259179404) -->
+    <skip />
+    <!-- no translation found for error_mcc_not3 (7059134831435281818) -->
+    <skip />
+    <!-- no translation found for error_mnc_not23 (8895747717145947670) -->
+    <skip />
+    <!-- no translation found for master_clear_title (932887860880075023) -->
+    <skip />
+    <!-- no translation found for master_clear_summary (2468534382451112879) -->
+    <skip />
+    <!-- no translation found for master_clear_desc (1022483980097013344) -->
+    <skip />
+    <!-- no translation found for master_clear_button_text (9137164244701534144) -->
+    <skip />
+    <!-- no translation found for master_clear_final_desc (316241813541136543) -->
+    <skip />
+    <!-- no translation found for master_clear_final_button_text (694363627766745199) -->
+    <skip />
+    <!-- no translation found for master_clear_gesture_prompt (1301991895870557434) -->
+    <skip />
+    <!-- no translation found for master_clear_gesture_explanation (598778956139377201) -->
+    <skip />
+    <!-- no translation found for master_clear_failed (8666435811265924625) -->
+    <skip />
+    <!-- no translation found for call_settings_title (1983111932504030578) -->
+    <skip />
+    <!-- no translation found for call_settings_summary (3446216896482844237) -->
+    <skip />
+    <!-- no translation found for network_settings_title (7989745255729576458) -->
+    <skip />
+    <!-- no translation found for network_settings_summary (8031949240036716110) -->
+    <skip />
+    <!-- no translation found for location_title (4501749309437121375) -->
+    <skip />
+    <!-- no translation found for location_network_based (3452214514389955422) -->
+    <skip />
+    <!-- no translation found for location_networks_disabled (7048471014395968941) -->
+    <skip />
+    <!-- no translation found for location_neighborhood_level (5315391444072434546) -->
+    <skip />
+    <!-- no translation found for location_gps (544098941752665022) -->
+    <skip />
+    <!-- no translation found for location_street_level (5804470409412760900) -->
+    <skip />
+    <!-- no translation found for location_gps_disabled (4004885356658024277) -->
+    <skip />
+    <!-- no translation found for about_settings (1468182090257585152) -->
+    <skip />
+    <!-- no translation found for about_settings_summary (7669309646592260587) -->
+    <skip />
+    <!-- no translation found for legal_information (6712607847710471677) -->
+    <skip />
+    <!-- no translation found for contributors_title (4798193298012318879) -->
+    <skip />
+    <!-- no translation found for copyright_title (2179228277436615247) -->
+    <skip />
+    <!-- no translation found for license_title (819526735187376873) -->
+    <skip />
+    <!-- no translation found for terms_title (7807601861320706623) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_title (7912723098716795094) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_unavailable (2081311778550755077) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_loading (1663818560123999889) -->
+    <skip />
+    <!-- no translation found for lock_settings_title (7146407030740583889) -->
+    <skip />
+    <!-- no translation found for lockpattern_change_lock_pattern_label (3855872620591309784) -->
+    <skip />
+    <!-- no translation found for lockpattern_need_to_unlock (3934572142701271406) -->
+    <skip />
+    <!-- no translation found for lockpattern_need_to_unlock_wrong (8623928652252263051) -->
+    <skip />
+    <!-- no translation found for lockpattern_recording_intro_header (6521907098728482417) -->
+    <skip />
+    <!-- no translation found for lockpattern_recording_intro_footer (8701414951034062700) -->
+    <skip />
+    <!-- no translation found for lockpattern_recording_inprogress (6331225683056997713) -->
+    <skip />
+    <!-- no translation found for lockpattern_recording_incorrect_too_short (8234374450664107990) -->
+    <skip />
+    <!-- no translation found for lockpattern_pattern_entered_header (8351721622267579390) -->
+    <skip />
+    <!-- no translation found for lockpattern_need_to_confirm (6414172006294337771) -->
+    <skip />
+    <!-- no translation found for lockpattern_pattern_confirmed_header (2989082429968256403) -->
+    <skip />
+    <!-- no translation found for lockpattern_confirm_button_text (1743514668885027413) -->
+    <skip />
+    <!-- no translation found for lockpattern_restart_button_text (2163326470128236491) -->
+    <skip />
+    <!-- no translation found for lockpattern_retry_button_text (7695474740059017745) -->
+    <skip />
+    <!-- no translation found for lockpattern_continue_button_text (1077275957953266837) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_title (733123887849286898) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_enable_title (6966780385011497665) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_enable_summary (1491887748201941470) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_enable_visible_pattern_title (6649207540870563710) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_choose_lock_pattern (6323198429609574435) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_change_lock_pattern (5787732340207150910) -->
+    <skip />
+    <!-- no translation found for lockpattern_settings_help_how_to_record (1365531094765843326) -->
+    <skip />
+    <!-- no translation found for lockpattern_too_many_failed_confirmation_attempts_header (7630166531203362529) -->
+    <skip />
+    <!-- no translation found for lockpattern_too_many_failed_confirmation_attempts_footer (4498856168984445217) -->
+    <skip />
+    <!-- no translation found for skip_button_label (4850708311344393218) -->
+    <skip />
+    <!-- no translation found for next_button_label (3149701380025478958) -->
+    <skip />
+    <!-- no translation found for lock_title (999106562425756837) -->
+    <skip />
+    <!-- no translation found for lock_intro_message (2382351248538397170) -->
+    <skip />
+    <!-- no translation found for lock_example_title (6261868148302088973) -->
+    <skip />
+    <!-- no translation found for lock_example_message (2583534765034914458) -->
+    <skip />
+    <!-- no translation found for manageapplications_settings_title (3359899792647354589) -->
+    <skip />
+    <!-- no translation found for applications_settings (6104314134883460574) -->
+    <skip />
+    <!-- no translation found for applications_settings_summary (7666960391957493763) -->
+    <skip />
+    <!-- no translation found for applications_settings_header (6167136604757235210) -->
+    <skip />
+    <!-- no translation found for install_applications (8586540661161378543) -->
+    <skip />
+    <!-- no translation found for install_unknown_applications (8694019339326383901) -->
+    <skip />
+    <!-- no translation found for install_all_warning (5826871395153503952) -->
+    <skip />
+    <!-- no translation found for manage_applications_title (8288310040777485758) -->
+    <skip />
+    <!-- no translation found for application_info_label (605192869687093760) -->
+    <skip />
+    <!-- no translation found for storage_label (8765276782501761971) -->
+    <skip />
+    <!-- no translation found for auto_launch_label (3546876666453498673) -->
+    <skip />
+    <!-- no translation found for permissions_label (3244346920180368862) -->
+    <skip />
+    <!-- no translation found for total_size_label (5016115699600749568) -->
+    <skip />
+    <!-- no translation found for application_size_label (5378963933449396413) -->
+    <skip />
+    <!-- no translation found for data_size_label (6038126657652457179) -->
+    <skip />
+    <!-- no translation found for uninstall_text (2322009518449651787) -->
+    <skip />
+    <!-- no translation found for clear_user_data_text (3586758620250813061) -->
+    <skip />
+    <!-- no translation found for auto_launch_enable_text (8228619838865933982) -->
+    <skip />
+    <!-- no translation found for auto_launch_disable_text (4696687016762486484) -->
+    <skip />
+    <!-- no translation found for clear_activities (2399981667625036009) -->
+    <skip />
+    <!-- no translation found for unknown (7966307317466394761) -->
+    <skip />
+    <!-- no translation found for sort_order_alpha (210746743398042077) -->
+    <skip />
+    <!-- no translation found for sort_order_size (2716777274377923612) -->
+    <skip />
+    <!-- no translation found for manage_space_text (3118726017144542336) -->
+    <skip />
+    <!-- no translation found for filter_apps_all (5819127882791374920) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (8693065498520334174) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (2019159142681656258) -->
+    <skip />
+    <!-- no translation found for loading (5170696093820794830) -->
+    <skip />
+    <!-- no translation found for recompute_size (8376294373548662083) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_title (2115093619616088799) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_text (3004273956481932846) -->
+    <skip />
+    <!-- no translation found for dlg_ok (2225130755859653348) -->
+    <skip />
+    <!-- no translation found for dlg_cancel (8597172015374919396) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_title (6649900521951617898) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_text (6893475426667174751) -->
+    <skip />
+    <!-- no translation found for clear_data_failed (3040984234884359027) -->
+    <skip />
+    <!-- no translation found for security_settings_desc (5898339748632998613) -->
+    <skip />
+    <!-- no translation found for default_app_desc (3475613003133497043) -->
+    <skip />
+    <!-- no translation found for computing_size (7350089935999085554) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (3054945647487201471) -->
+    <skip />
+    <!-- no translation found for language_settings (7247557040404006341) -->
+    <skip />
+    <!-- no translation found for language_settings_summary (721948806318958691) -->
+    <skip />
+    <!-- no translation found for language_category (6646529166552376418) -->
+    <skip />
+    <!-- no translation found for text_category (3133311779500246731) -->
+    <skip />
+    <!-- no translation found for phone_language (4084332836028530631) -->
+    <skip />
+    <!-- no translation found for auto_replace (6134508433464846627) -->
+    <skip />
+    <!-- no translation found for auto_replace_summary (1016177921245107750) -->
+    <skip />
+    <!-- no translation found for auto_caps (6021984352657087728) -->
+    <skip />
+    <!-- no translation found for auto_caps_summary (4783973594319542220) -->
+    <skip />
+    <!-- no translation found for auto_punctuate (2819742922158924703) -->
+    <skip />
+    <!-- no translation found for auto_punctuate_summary (2664143621323054924) -->
+    <skip />
+    <!-- no translation found for show_password (2353636034424349266) -->
+    <skip />
+    <!-- no translation found for show_password_summary (3920555488855590831) -->
+    <skip />
+    <!-- no translation found for testing (555268605244514909) -->
+    <skip />
+    <!-- no translation found for testing_phone_info (8718517606602144606) -->
+    <skip />
+    <!-- no translation found for testing_battery_info (3826036256683980425) -->
+    <skip />
+    <!-- no translation found for quick_launch_title (5423323579273213815) -->
+    <skip />
+    <!-- no translation found for quick_launch_summary (1272194567210324017) -->
+    <skip />
+    <!-- no translation found for quick_launch_assign_application (5949445664563354321) -->
+    <skip />
+    <!-- no translation found for quick_launch_no_shortcut (5958195604101558965) -->
+    <skip />
+    <!-- no translation found for quick_launch_shortcut (1115195051591830635) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_title (5217130241215296612) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_message (3420665419624963430) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_ok_button (2442832413597511429) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_cancel_button (1437354385792055993) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_applications (6570683843184675363) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_shortcuts (6642750364678074004) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_title (1752662012056721926) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (5481367119142131313) -->
+    <skip />
+    <!-- no translation found for development_settings_title (4671731485005432632) -->
+    <skip />
+    <!-- no translation found for development_settings_summary (5518361138194831299) -->
+    <skip />
+    <!-- no translation found for enable_adb (7770070343289262572) -->
+    <skip />
+    <!-- no translation found for enable_adb_summary (1498997582065835981) -->
+    <skip />
+    <!-- no translation found for keep_screen_on (5805533478834516956) -->
+    <skip />
+    <!-- no translation found for keep_screen_on_summary (5703353541069794974) -->
+    <skip />
+    <!-- no translation found for allow_mock_location (6204808904743157937) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (3154837501223277592) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 27db21d..f29404e 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1,700 +1,883 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="about_settings">Acerca del teléfono</string>
-  <string name="about_settings_summary">Ver información legal, estado del teléfono, versión de software</string>
-  <string name="activity_picker_label">Seleccionar actividad</string>
-  <string name="airplane_mode">Modo avión</string>
-  <string name="airplane_mode_summary">Seleccionar para deshabilitar todas las conexiones inalámbricas</string>
-  <string name="airplane_mode_turning_off">Habilitando conexiones inalámbricas\u2026</string>
-  <string name="airplane_mode_turning_on">Deshabilitando conexiones inalámbricas\u2026</string>
-  <string name="android_id_label">ID de Android</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Editar punto de acceso</string>
-  <string name="apn_http_port">Puerto</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">Puerto MMS</string>
-  <string name="apn_mms_proxy">Proxy MMS</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Nombre</string>
-  <string name="apn_not_set">&lt;No establecido&gt;</string>
-  <string name="apn_password">Contraseña</string>
-  <string name="apn_server">Servidor</string>
-  <string name="apn_settings">APNs</string>
-  <string name="apn_type">Tipo de APN</string>
-  <string name="apn_user">Nombre de usuario</string>
-  <string name="app_launcher_newView_text">Nuevo AppLauncher</string>
-  <string name="app_not_found_dlg_text"> La aplicación no se
-encontró en la lista de aplicaciones instaladas.</string>
-  <string name="app_not_found_dlg_title">Aplicación no encontrada</string>
-  <string name="application_info_label">Inform. de la aplicación</string>
-  <string name="application_size_label">Aplicación</string>
-  <string name="applications_settings">Aplicaciones</string>
-  <string name="applications_settings_header">Configuración de la aplicación</string>
-  <string name="applications_settings_summary">Administrar aplicaciones, configurar accesos directos para el inicio rápido</string>
-  <string name="auto_caps">Capitalización automática</string>
-  <string name="auto_caps_summary">Escribe en mayúscula la primera letra de cada frase</string>
-  <string name="auto_launch_disable_text">No hay una configuración predeterminada.</string>
-  <string name="auto_launch_enable_text">Permite seleccionar el inicio de esta aplicación por defecto en algunas acciones.</string>
-  <string name="auto_launch_label">Inicio predeterminado</string>
-  <string name="auto_punctuate">Puntuación automática</string>
-  <string name="auto_punctuate_summary">Pulse la tecla espaciadora dos veces para insertar \u0022.\u0022</string>
-  <string name="auto_replace">Sustitución automática</string>
-  <string name="auto_replace_summary">Corrige las palabras escritas incorrectamente</string>
-  <string name="autorotate">Giro automático</string>
-  <string name="autorotate_summary_off">Al cambiar la orientación de la pantalla no se gira la aplicación</string>
-  <string name="autorotate_summary_on">Al cambiar la orientación de la pantalla se gira la aplicación</string>
-  <string name="b_text">B</string>
-  <string name="band_mode_failed">Incorrecto</string>
-  <string name="band_mode_loading">Cargando lista de bandas\u2026</string>
-  <string name="band_mode_set">Establecer</string>
-  <string name="band_mode_succeeded">Correcto</string>
-  <string name="band_mode_title">Establecer banda GSM/UMTS</string>
-  <string name="baseband_version">Versión de banda básica</string>
-  <string name="basic_settings_title">Bases del teléfono</string>
-  <string name="battery_info_awake_battery">Tiempo de actividad con batería:</string>
-  <string name="battery_info_awake_plugged">Tiempo de actividad mientras se carga:</string>
-  <string name="battery_info_health_dead">Muerta</string>
-  <string name="battery_info_health_good">Buena</string>
-  <string name="battery_info_health_label">Salud de batería:</string>
-  <string name="battery_info_health_over_voltage">Sobretensión</string>
-  <string name="battery_info_health_overheat">Recalentamiento</string>
-  <string name="battery_info_health_unknown">Desconocido</string>
-  <string name="battery_info_health_unspecified_failure">Error desconocido</string>
-  <string name="battery_info_label">Información de batería</string>
-  <string name="battery_info_level_label">Nivel de batería:</string>
-  <string name="battery_info_scale_label">Escala de batería:</string>
-  <string name="battery_info_screen_on">Tiempo de encendido de pantalla:</string>
-  <string name="battery_info_status_charging">Cargando</string>
-  <string name="battery_info_status_charging_ac">(CA)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">Descargando</string>
-  <string name="battery_info_status_full">Completo</string>
-  <string name="battery_info_status_label">Estado de la batería:</string>
-  <string name="battery_info_status_not_charging">No cargando</string>
-  <string name="battery_info_status_unknown">Desconocido</string>
-  <string name="battery_info_technology_label">Tecnología de la batería:</string>
-  <string name="battery_info_temperature_label">Temperatura de la batería:</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_uptime">Tiempo desde arranque:</string>
-  <string name="battery_info_voltage_label">Tensión de la batería:</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="battery_level_title">Nivel de batería</string>
-  <string name="battery_status_title">Estado de la batería</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Borrar lista de dispositivos</string>
-  <string name="bluetooth_connect">Conectar</string>
-  <string name="bluetooth_connectable">Sólo conectable</string>
-  <string name="bluetooth_connected">Conectado</string>
-  <string name="bluetooth_connecting">Conectando\u2026</string>
-  <string name="bluetooth_device">manos libres / auriculares</string>
-  <string name="bluetooth_device_info">Información de dispositivo Bluetooth</string>
-  <string name="bluetooth_device_info_alias">Alias de dispositivo</string>
-  <string name="bluetooth_device_info_delete">Quitar este dispositivo</string>
-  <string name="bluetooth_device_info_no_alias">Introducir alias aquí\u2026</string>
-  <string name="bluetooth_device_info_sdp">Enumerar servicios compatibles</string>
-  <string name="bluetooth_device_name">Nombre del dispositivo</string>
-  <string name="bluetooth_devices">Dispositivos Bluetooth</string>
-  <string name="bluetooth_disabled">Seleccionar la activación de Bluetooth</string>
-  <string name="bluetooth_disconnect">Desconectar</string>
-  <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> se desconectará</string>
-  <string name="bluetooth_discoverability_panel_title">Mostrarme\u2026</string>
-  <string name="bluetooth_discoverable">Detectable durante %1$s segundos</string>
-  <string name="bluetooth_enable_text">Vaciar botón\u2026</string>
-  <string name="bluetooth_enabled">Seleccionar la activación de Bluetooth</string>
-  <string name="bluetooth_enabling">Conexión de Bluetooth\u2026</string>
-  <string name="bluetooth_enter_pin_msg">Introduzca el código PIN para\u0020</string>
-  <string name="bluetooth_failed_to_enable">Incapaz de conectar Bluetooth</string>
-  <string name="bluetooth_is_discoverable">Detectable durante %1$s segundos\u2026</string>
-  <string name="bluetooth_name_not_set">Ningún nombre establecido, utilizando nombre de cuenta</string>
-  <string name="bluetooth_neither">Ni detectable ni conectable</string>
-  <string name="bluetooth_new_data">Introducir nuevos datos</string>
-  <string name="bluetooth_new_data_cancel">Cancelar</string>
-  <string name="bluetooth_new_data_confirm">Aceptar</string>
-  <string name="bluetooth_not_connected">Emparejar con este dispositivo</string>
-  <string name="bluetooth_not_discoverable">Seleccionar para que el dispositivo sea detectable</string>
-  <string name="bluetooth_notif_message">Seleccionar emparejamiento con\u0020</string>
-  <string name="bluetooth_notif_ticker">Solicitud para emparejar Bluetooth</string>
-  <string name="bluetooth_notif_title">Solicitud para emparejar Bluetooth</string>
-  <string name="bluetooth_pair">Emparejar</string>
-  <string name="bluetooth_paired">Emparejado</string>
-  <string name="bluetooth_paired_not_nearby">Emparejado</string>
-  <string name="bluetooth_pairing">Emparejando\u2026</string>
-  <string name="bluetooth_pairing_msg">Emparejando\u2026</string>
-  <string name="bluetooth_pin_entry">Entrada de PIN Bluetooth</string>
-  <string name="bluetooth_quick_toggle_summary">Seleccionar la activación de Bluetooth</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Buscar dispositivos</string>
-  <string name="bluetooth_scan_for_new_devices">Buscando nuevos dispositivos\u2026</string>
-  <string name="bluetooth_scan_text">Vaciar botón\u2026</string>
-  <string name="bluetooth_settings">Configuración de Bluetooth</string>
-  <string name="bluetooth_settings_summary">Administrar conexiones, configuración de nombre del dispositivo y su reconocimiento</string>
-  <string name="bluetooth_settings_text">Vaciar botón\u2026</string>
-  <string name="bluetooth_settings_title">Configuración de Bluetooth</string>
-  <string name="bluetooth_starting">Conexión de Bluetooth\u2026</string>
-  <string name="bluetooth_stopping">Desconexión de Bluetooth\u2026</string>
-  <string name="bluetooth_unknown">Desconocido</string>
-  <string name="bluetooth_unpair">Desemparejar</string>
-  <string name="bluetooth_visibility">Detectable</string>
-  <string name="bootloader_version">Arranque de versión del cargador</string>
-  <string name="brightness">Brillo</string>
-  <string name="build_date_label">Fecha de compilación</string>
-  <string name="build_description_label">Descripción de compilación</string>
-  <string name="build_host_label">Host de compilación</string>
-  <string name="build_id_label">ID de compilación</string>
-  <string name="build_number">Número de compilación</string>
-  <string name="build_type_label">Tipo de compilación</string>
-  <string name="build_user_label">Usuario de compilación</string>
-  <string name="call_settings_summary">Configurar correo de voz, desvío de llamada, llamada en espera, identificador de llamada</string>
-  <string name="call_settings_title">Configuración de llamada</string>
-  <string name="cancel">Cancelar</string>
-  <string name="checkin_button_label">Buscar actualización</string>
-  <string name="checkin_download_failed">Incorrecto</string>
-  <string name="checkin_download_label">Descargar estado</string>
-  <string name="checkin_download_ongoing">Descargando</string>
-  <string name="checkin_download_pending">En espera</string>
-  <string name="checkin_download_succeeded">Completado</string>
-  <string name="checkin_download_suspended">Suspendido</string>
-  <string name="checkin_download_unknown">Estado desconocido</string>
-  <string name="checkin_failures_label">Fallos desde el último éxito</string>
-  <string name="checkin_last_time_label">Última registro correcto</string>
-  <string name="checkin_started_message">Registro iniciado\u2026</string>
-  <string name="checkin_status_label">Estado del registro</string>
-  <string name="checkin_time_never">(nunca)</string>
-  <string name="checkin_upgrade_label">Actualización pendiente</string>
-  <string name="choose_timezone">Seleccionar zona horaria</string>
-  <string name="choose_timezone_region">Seleccionar región</string>
-  <string name="clear_activities">Borrar valores predeterminados</string>
-  <string name="clear_data_dlg_text">Toda la información guardada en esta aplicación se eliminará de forma permanente. </string>
-  <string name="clear_data_dlg_title">Eliminar</string>
-  <string name="clear_data_failed">Incapaz de borrar los datos de la aplicación. </string>
-  <string name="clear_user_data_text">Borrar datos</string>
-  <string name="computing_size">Cálculo del tamaño de la aplicación\u2026</string>
-  <string name="connect">Conectar</string>
-  <string name="connect_to_blank">Conectar a <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="contributors_title">Contribuyentes</string>
-  <string name="copyright_title">Copyright</string>
-  <string name="data_settings">Configuración de datos</string>
-  <string name="data_settings_summary">Tarjeta SD y memoria de almacenamiento, sincronización de datos</string>
-  <string name="data_settings_title">Datos</string>
-  <string name="data_size_label">Datos</string>
-  <string name="date_and_time">Configuración de fecha y hora</string>
-  <string name="date_and_time_settings_summary">Configurar fecha, hora, zona horaria y formatos</string>
-  <string name="date_and_time_settings_title">Fecha y hora</string>
-  <string name="date_time_24hour">Utilizar el formato de 24 horas</string>
-  <string name="date_time_auto">Automático</string>
-  <string name="date_time_auto_summaryOff">Utilizar valores suministrados por la red</string>
-  <string name="date_time_auto_summaryOn">Utilizar valores suministrados por la red</string>
-  <string name="date_time_changeDate_text">Cambiar fecha</string>
-  <string name="date_time_changeTime_text">Cambiar hora</string>
-  <string name="date_time_dateDisplay_text">3 nov 1997</string>
-  <string name="date_time_date_format">Seleccionar formato de fecha</string>
-  <string name="date_time_set_date">Establecer fecha</string>
-  <string name="date_time_set_time">Establecer hora</string>
-  <string name="date_time_set_timezone">Establecer zona horaria</string>
-  <string name="date_time_setzone_text">Cambiar zona horaria</string>
-  <string name="date_time_timeDisplay_text">11:45:00 a.m.</string>
-  <string name="date_time_timezone_label">Zona horaria:</string>
-  <string name="debug_intent_sender_label">Debug intent sender</string>
-  <string name="default_date_format">dd/MM/aaaa</string>
-  <string name="default_keyboard_device_label">Dispositivo de teclado predeterminado</string>
-  <string name="development_settings_summary">Configuración para desarrollar la aplicación</string>
-  <string name="development_settings_title">Desarrollo</string>
-  <string name="device_info_asleeptime">Tiempo de inactividad</string>
-  <string name="device_info_awaketime">Tiempo de actividad</string>
-  <string name="device_info_default">Desconocido</string>
-  <string name="device_info_label">Información del dispositivo</string>
-  <string name="device_info_not_available">No disponible</string>
-  <string name="device_info_settings">Estado del teléfono</string>
-  <string name="device_info_uptime">Tiempo de funcionamiento</string>
-  <string name="device_status">Estado</string>
-  <string name="device_status_summary">IMEI, número de teléfono, señal, etc.</string>
-  <string name="dim_screen">Oscurecer pantalla</string>
-  <string name="disconnect_ums">Desconectar almacenamiento masivo USB</string>
-  <string name="display_font_size_label">Tamaño de fuente:</string>
-  <string name="display_label">Pantalla</string>
-  <string name="display_preview_label">Vista previa:</string>
-  <string name="display_settings">Configuración de visualización</string>
-  <string name="dlg_cancel">Cancelar</string>
-  <string name="dlg_ok">Aceptar</string>
-  <string name="done">Aceptar</string>
-  <string name="dtmf_tone_enable_summary_off">Reproducir sonidos al utilizar el panel marcado</string>
-  <string name="dtmf_tone_enable_summary_on">Reproducir sonidos al utilizar el panel marcado</string>
-  <string name="dtmf_tone_enable_title">Tonos táctiles con sonido</string>
-  <string name="enable_adb">Depuración de USB</string>
-  <string name="enable_adb_summary">Modo depuración cuando el dispositivo USB esté conectado</string>
-  <string name="error_apn_empty">El nombre del punto de acceso (APN) no puede dejarse en blanco.</string>
-  <string name="error_connecting">Incapaz de conectar a la red</string>
-  <string name="error_mcc_not3">El campo MCC debe tener 3 dígitos.</string>
-  <string name="error_mnc_not23">El campo MNC debe tener 2 ó 3 dígitos.</string>
-  <string name="error_name_empty">El campo Nombre no puede dejarse en blanco.</string>
-  <string name="error_saving">Incapaz de guardar la red</string>
-  <string name="error_scanning">Incapaz de buscar redes</string>
-  <string name="error_starting">Incapaz de iniciar Wi-Fi</string>
-  <string name="error_stopping">Incapaz de detener Wi-Fi</string>
-  <string name="error_title">¡Atención!</string>
-  <string name="failed_to_connect">Incapaz de conectar a <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="failed_to_pair">Incapaz de emparejar con <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="favorites_label">Favoritos</string>
-  <string name="firmware_version">Versión de firmware</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">Aceptar</string>
-  <string name="forget_network">Olvidar</string>
-  <string name="fragment_status_authenticating">Autenticación con <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_connected">Conectar a <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="fragment_status_connecting">Conectar a <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_disconnected">Desconectado</string>
-  <string name="fragment_status_disconnecting">Desconectar de <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_failed">Incorrecto</string>
-  <string name="fragment_status_obtaining_ip">Obteniendo dirección IP de <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_scanning">Búscando\u2026</string>
-  <string name="gsm_version_baseband_label">Versión de banda básica</string>
-  <string name="gsm_version_ril_impl_label">Versión RIL Impl</string>
-  <string name="install_all_warning">Su teléfono y los datos personales son más vulnerables a cualquier ataque de aplicaciones
- procedentes de fuentes desconocidas. Por consiguiente, acepta ser el único responsable de cualquier
- daño producido en el teléfono o ante la pérdida de datos como resultado del uso de
- estas aplicaciones.</string>
-  <string name="install_applications">Fuentes desconocidas</string>
-  <string name="install_unknown_applications">Permitir la instalación de aplicaciones no comercializadas</string>
-  <string name="intent_sender_account_label">Cuenta: </string>
-  <string name="intent_sender_action_label">Acción:</string>
-  <string name="intent_sender_data_label">Datos:</string>
-  <string name="intent_sender_resource_label">Recurso: </string>
-  <string name="intent_sender_sendbroadcast_text">Enviar emisión</string>
-  <string name="intent_sender_startactivity_text">Iniciar actividad</string>
-  <string name="internal_memory">Almacenamiento interno del teléfono</string>
-  <string name="ip_address">Dirección IP</string>
-  <string name="kb_text">KB</string>
-  <string name="keep_screen_on">Permanecer activa</string>
-  <string name="keep_screen_on_summary">La pantalla nunca quedará en suspensión durante la carga</string>
-  <string name="kernel_version">Versión de núcleo</string>
-  <string name="kernel_version_label">Versión de núcleo de Linux</string>
-  <string name="keyguard_label">Protección de clave</string>
-  <string name="keyguard_password_button_text">Aceptar</string>
-  <string name="keyguard_password_confirm_new_label">Confirmar nueva contraseña:</string>
-  <string name="keyguard_password_mismatch_error_text">Las dos contraseñas no coinciden. Por favor, escríbalas de nuevo.</string>
-  <string name="keyguard_password_new_label">Contraseña nueva:</string>
-  <string name="keyguard_password_old_label">Contraseña anterior:</string>
-  <string name="keyguard_password_old_password_error_text">La contraseña anterior introducida no es correcta. Inténtelo de nuevo.</string>
-  <string name="keyguard_pin_mod_text">Cambiar PIN</string>
-  <string name="keyguard_pw_mod_text">Seleccionar patrón de bloqueo</string>
-  <string name="keyguard_sim_pin_label">PIN de SIM</string>
-  <string name="language_category">Configuración de idioma</string>
-  <string name="language_picker_title">Local</string>
-  <string name="language_settings">Texto</string>
-  <string name="language_settings_summary">Seleccione las opciones de corrección automática del texto</string>
-  <string name="large_font">Grande</string>
-  <string name="legal_information">Información legal</string>
-  <string name="legal_information_summary">Ver términos y condiciones</string>
-  <string name="license_title">Licencia</string>
-  <string name="location_gps">Habilitar satélites GPS</string>
-  <string name="location_gps_disabled">A nivel de la calle (precisa más batería y cielo abierto)</string>
-  <string name="location_label">Proveedor de ubicación:</string>
-  <string name="location_neighborhood_level">Ubicación determinada por redes Wi-Fi y/o móviles.</string>
-  <string name="location_network_based">Usar redes inalámbricas</string>
-  <string name="location_networks_disabled">Consulte la ubicación en aplicaciones (como Mapas) utilizando redes inalámbricas</string>
-  <string name="location_source">Mi ubicación</string>
-  <string name="location_source_summary">Seleccione fuentes para determinar la ubicación</string>
-  <string name="location_status">Estado:</string>
-  <string name="location_street_level">Ubicación precisa hasta llegar a la calle (desmarcar para conservar la batería)</string>
-  <string name="location_title">Mis fuentes de ubicación</string>
-  <string name="lock_example_message">Conecte al menos cuatro puntos.\n
-    \nSeleccione \u201CSiguiente\u201D cuando esté listo para trazar su propio patrón.
-    </string>
-  <string name="lock_example_title">Patrón de muestra</string>
-  <string name="lock_settings_title">Patrón de desbloqueo de pantalla</string>
-  <string name="lock_title">Seguridad en su teléfono</string>
-  <string name="lockpattern_change_lock_pattern_label">Cambiar patrón de desbloqueo</string>
-  <string name="lockpattern_confirm_button_text">Confirmar</string>
-  <string name="lockpattern_continue_button_text">Continuar</string>
-  <string name="lockpattern_need_to_confirm">Volver a mostrar patrón para confirmar:</string>
-  <string name="lockpattern_need_to_unlock">Confirmar patrón guardado:</string>
-  <string name="lockpattern_need_to_unlock_wrong">Lo siento, inténtelo de nuevo:</string>
-  <string name="lockpattern_pattern_confirmed_header">Su nuevo patrón de desbloqueo:</string>
-  <string name="lockpattern_pattern_entered_header">¡Patrón guardado!</string>
-  <string name="lockpattern_recording_incorrect_too_short">Conectar al menos <xliff:g id="number">%d</xliff:g> puntos. Inténtelo de nuevo:</string>
-  <string name="lockpattern_recording_inprogress">Suelte el dedo cuando haya terminado.</string>
-  <string name="lockpattern_recording_intro_footer">Pulse Menú para obtener ayuda.</string>
-  <string name="lockpattern_recording_intro_header">Trazar un patrón de desbloqueo:</string>
-  <string name="lockpattern_restart_button_text">Volver a trazar</string>
-  <string name="lockpattern_retry_button_text">Reintentar</string>
-  <string name="lockpattern_settings_change_lock_pattern">Cambiar patrón de desbloqueo</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Configurar patrón de desbloqueo</string>
-  <string name="lockpattern_settings_enable_summary">Debe establecer un patrón para desbloquear la pantalla</string>
-  <string name="lockpattern_settings_enable_title">Se necesita patrón</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Utilizar patrón visible</string>
-  <string name="lockpattern_settings_help_how_to_record">Cómo trazar un patrón de desbloqueo:</string>
-  <string name="lockpattern_settings_title">Patrón de desbloqueo</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Inténtelo de nuevo en <xliff:g id="number">%d</xliff:g> segundos.</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">¡Demasiados intentos incorrectos!</string>
-  <string name="manage_applications_title">Administrar aplicaciones</string>
-  <string name="manage_space_text">Administrar espacio</string>
-  <string name="manageapplications_settings_title">Administrar aplicaciones</string>
-  <string name="mass_storage">Utilizar para almacenamiento USB</string>
-  <string name="master_clear_button_text">Restablecer teléfono</string>
-  <string name="master_clear_desc">Esta acción restablecerá el teléfono al estado inicial de fábrica, borrando todos los datos y aplicaciones descargadas.</string>
-  <string name="master_clear_failed">No se ha realizado ningún restablecimiento porque el servicio System Clear no está disponible.</string>
-  <string name="master_clear_final_button_text">Borrar todo</string>
-  <string name="master_clear_final_desc">¿Restablecer teléfono, borrando todos los datos y aplicaciones? ¡Este paso no podrá deshacerse!</string>
-  <string name="master_clear_gesture_explanation">Debe trazar su patrón de desbloqueo para confirmar el restablecimiento del teléfono. </string>
-  <string name="master_clear_gesture_prompt">Trace su patrón de desbloqueo:</string>
-  <string name="master_clear_summary">Eliminar todos los datos del teléfono</string>
-  <string name="master_clear_title">Restablecer según los datos de fábrica</string>
-  <string name="mb_text">MB</string>
-  <string name="media_volume_summary">Establecer el volumen de la música y los vídeos</string>
-  <string name="media_volume_title">Volumen de los medios</string>
-  <string name="medium_font">Medio</string>
-  <string name="memory_available">Espacio disponible</string>
-  <string name="memory_size">Espacio total</string>
-  <string name="menu_cancel">Rechazar</string>
-  <string name="menu_delete">Eliminar APN</string>
-  <string name="menu_new">Nueva APN</string>
-  <string name="menu_save">Guardar</string>
-  <string name="model_number">Número del modelo</string>
-  <string name="network_settings_summary">Configurar opciones para itinerancia, redes, nombres de puntos de acceso (APN)</string>
-  <string name="network_settings_title">Redes móviles</string>
-  <string name="networks">Selección de operador</string>
-  <string name="networks_title">Configuración de red</string>
-  <string name="next_button_label">Siguiente</string>
-  <string name="next_label">Siguiente</string>
-  <string name="notification_sound_dialog_title">Seleccionar tono de timbre de notificación</string>
-  <string name="notification_sound_summary">Configurar tono de timbre de notificación predeterminado</string>
-  <string name="notification_sound_title">Tonos de timbre de notificación</string>
-  <string name="permissions_label">Permisos</string>
-  <string name="phone_info_label">Información del teléfono</string>
-  <string name="phone_language">Seleccionar idioma</string>
-  <string name="ping_test_label">Ejecutar prueba ping</string>
-  <string name="please_type_hex_key">Tecla hex. WEP (0-9, A-F)</string>
-  <string name="please_type_passphrase">Contraseña inalámbrica</string>
-  <string name="product_brand_label">Marca del producto</string>
-  <string name="product_device_label">Tipo de teléfono</string>
-  <string name="progress_scanning">Buscando</string>
-  <string name="proxy_action_text">Guardar</string>
-  <string name="proxy_clear_text">Borrar</string>
-  <string name="proxy_defaultView_text">Restaurar predeterminados</string>
-  <string name="proxy_error">¡Atención!</string>
-  <string name="proxy_error_dismiss">Aceptar</string>
-  <string name="proxy_error_empty_host_set_port">El campo Puerto debe estar vacío si el campo Host está vacío.</string>
-  <string name="proxy_error_empty_port">Debe completar el campo puerto.</string>
-  <string name="proxy_error_invalid_host">El nombre de host que ha introducido no es válido.</string>
-  <string name="proxy_error_invalid_port">El nombre de puerto que ha introducido no es válido.</string>
-  <string name="proxy_hostname_label">Nombre de host</string>
-  <string name="proxy_port_label">Puerto</string>
-  <string name="proxy_settings_label">Configuración de proxy</string>
-  <string name="quick_launch_assign_application">Asignar aplicación</string>
-  <string name="quick_launch_clear_cancel_button">Cancelar</string>
-  <string name="quick_launch_clear_dialog_message">Su acceso directo para <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) se borrará.</string>
-  <string name="quick_launch_clear_dialog_title">Borrar</string>
-  <string name="quick_launch_clear_ok_button">Aceptar</string>
-  <string name="quick_launch_display_mode_applications">Aplicaciones</string>
-  <string name="quick_launch_display_mode_shortcuts">Accesos directos</string>
-  <string name="quick_launch_no_shortcut">Sin acceso directo</string>
-  <string name="quick_launch_shortcut">Buscar + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-  <string name="quick_launch_summary">Configuración de accesos directos en el teclado para iniciar aplicaciones</string>
-  <string name="quick_launch_title">Inicio rápido</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Conectado</string>
-  <string name="radioInfo_data_connecting">Conectando</string>
-  <string name="radioInfo_data_disconnected">Desconectado</string>
-  <string name="radioInfo_data_suspended">Suspendido</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">bytes</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">paq.</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Deshabilitar conexión de datos</string>
-  <string name="radioInfo_menu_disableDataOnBoot">Deshabilitar datos al arrancar</string>
-  <string name="radioInfo_menu_enableData">Habilitar conexión de datos</string>
-  <string name="radioInfo_menu_enableDataOnBoot">Habilitar datos al arrancar</string>
-  <string name="radioInfo_menu_getPDP">Obtener lista PDP</string>
-  <string name="radioInfo_menu_viewADN">Ver agenda de SIM</string>
-  <string name="radioInfo_menu_viewFDN">Ver números de marcado fijo</string>
-  <string name="radioInfo_menu_viewSDN">Ver números de marcado de servicio</string>
-  <string name="radioInfo_phone_idle">Inactivo</string>
-  <string name="radioInfo_phone_offhook">Llamada en curso</string>
-  <string name="radioInfo_phone_ringing">Sonando</string>
-  <string name="radioInfo_roaming_in">Itinerancia</string>
-  <string name="radioInfo_roaming_not">No itinerancia</string>
-  <string name="radioInfo_service_emergency">Sólo llamadas de emergencia</string>
-  <string name="radioInfo_service_in">En servicio</string>
-  <string name="radioInfo_service_off">Radio apagada</string>
-  <string name="radioInfo_service_out">Fuera de servicio</string>
-  <string name="radioInfo_unknown">desconocido</string>
-  <string name="radio_controls_summary">Administrar Wi-Fi, Bluetooth, modo avión y redes móviles</string>
-  <string name="radio_controls_title">Controles inalámbricos</string>
-  <string name="radio_info_band_mode_label">Seleccionar banda de radio</string>
-  <string name="radio_info_call_redirect_label">Redirección de llamada:</string>
-  <string name="radio_info_call_status_label">Estado de llamada:</string>
-  <string name="radio_info_current_network_label">Red actual:</string>
-  <string name="radio_info_data_attempts_label">Intentos de datos:</string>
-  <string name="radio_info_data_successes_label">Datos enviados correctamente:</string>
-  <string name="radio_info_gprs_service_label">Servicio GPRS:</string>
-  <string name="radio_info_gsm_disconnects_label">Desconexiones GSM:</string>
-  <string name="radio_info_gsm_service_label">Servicio GSM:</string>
-  <string name="radio_info_http_client_test">Prueba cliente HTTP:</string>
-  <string name="radio_info_imei_label">IMEI:</string>
-  <string name="radio_info_imsi_label">IMSI:</string>
-  <string name="radio_info_message_waiting_label">Mensaje esperando:</string>
-  <string name="radio_info_neighboring_location_label">CID cercano:</string>
-  <string name="radio_info_network_type_label">Tipo de red:</string>
-  <string name="radio_info_phone_number_label">Número de teléfono:</string>
-  <string name="radio_info_ping_hostname">Nombre de host para verificar conectividad (www.google.com):</string>
-  <string name="radio_info_ping_ipaddr">DireccIp Ping:</string>
-  <string name="radio_info_ppp_received_label">PPP recibido:</string>
-  <string name="radio_info_ppp_resets_label">Número de restablecimientos PPP desde el arranque:</string>
-  <string name="radio_info_ppp_sent_label">PPP enviados:</string>
-  <string name="radio_info_radio_resets_label">Restablecimientos de radio:</string>
-  <string name="radio_info_roaming_label">Itinerancia:</string>
-  <string name="radio_info_set_perferred_label">Establecer tipo de red preferido:</string>
-  <string name="radio_info_signal_location_label">Ubicación:</string>
-  <string name="radio_info_signal_strength_label">Intensidad de señal:</string>
-  <string name="radio_info_smsc_label">SMSC:</string>
-  <string name="radio_info_smsc_refresh_label">Actualizar</string>
-  <string name="radio_info_smsc_update_label">Actualizar</string>
-  <string name="radio_info_toggle_ciph_label">Alternar cifrado</string>
-  <string name="read_only">\u0020(Sólo lectura)</string>
-  <string name="recompute_size">Repetición del cálculo del tamaño\u2026</string>
-  <string name="ring_volume_summary">Ajuste del volumen de las llamadas entrantes</string>
-  <string name="ring_volume_title">Volumen del timbre</string>
-  <string name="ringer_volume_instructions">Utilizar los botones de volumen para ajustar el volumen del timbre</string>
-  <string name="ringer_volume_ringer_mode_label">Modo de timbre</string>
-  <string name="ringer_volume_ringtone_label">Tono de timbre</string>
-  <string name="ringer_volume_screen_increasing_text">Timbre creciente</string>
-  <string name="ringtone_summary">Ajuste el tono de timbre de la llamada entrante predeterminado</string>
-  <string name="ringtone_title">Tono de timbre del teléfono</string>
-  <string name="roaming">Datos en itinerancia</string>
-  <string name="roaming_disable">Conectar a servicios de datos durante itinerancia</string>
-  <string name="roaming_enable">Conectar a servicios de datos durante itinerancia</string>
-  <string name="roaming_reenable_message">Ha perdido la conectividad de datos porque ha abandonado su red doméstica con la opción Datos en itinerancia desactivada.</string>
-  <string name="roaming_reenable_title">¡Atención!</string>
-  <string name="roaming_turn_it_on_button">Activar</string>
-  <string name="roaming_warning">¿Permitir datos en itinerancia? Puede que incurra en importantes gastos por itinerancia.</string>
-  <string name="scan_wifi">Buscar</string>
-  <string name="screen_off_timeout_label">No agotar nunca el tiempo de espera durante la carga</string>
-  <string name="screen_timeout">Tiempo de espera en pantalla</string>
-  <string name="sd_card_settings_label">Tarjeta SD</string>
-  <string name="sd_eject">Desmontar/expulsar tarjeta SD</string>
-  <string name="sd_memory">Tarjeta SD</string>
-  <string name="sd_unavailable">No disponible</string>
-  <string name="sdcard_changes_instructions">Los cambios se aplicarán cuando se vuelva a conectar el cable USB</string>
-  <string name="sdcard_removal_alert_ok">Aceptar</string>
-  <string name="sdcard_removal_alert_scolding">La tarjeta SD se retiró cuando aún se estaba utilizando.
-        Para evitar que se dañe, utilice la pantalla Configuración de la tarjeta SD para desmontar la tarjeta antes de retirarla.</string>
-  <string name="sdcard_removal_alert_title">Extracción de tarjeta SD no segura</string>
-  <string name="sdcard_setting">Tarjeta SD</string>
-  <string name="sdcard_settings_available_bytes_label">Bytes disponibles:</string>
-  <string name="sdcard_settings_bad_removal_status">¡La tarjeta SD se ha extraído mientras seguía en uso!</string>
-  <string name="sdcard_settings_mass_storage_status">La tarjeta SD se está utilizando como dispositivo de almacenamiento masivo</string>
-  <string name="sdcard_settings_not_present_status">Ninguna tarjeta SD</string>
-  <string name="sdcard_settings_read_only_status">Tarjeta SD insertada de sólo lectura</string>
-  <string name="sdcard_settings_scanning_status">Buscando medios en tarjeta SD\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">Habilitar almacenamiento masivo USB</string>
-  <string name="sdcard_settings_total_bytes_label">Bytes totales:</string>
-  <string name="sdcard_settings_unmounted_status">Ahora es seguro extraer la tarjeta SD</string>
-  <string name="sdcard_settings_used_bytes_label">Bytes utilizados:</string>
-  <string name="sdcard_unmount">Desmontar tarjeta SD</string>
-  <string name="sdcard_unmountable_alert_ok">Aceptar</string>
-  <string name="sdcard_unmountable_alert_title">Tarjeta SD no legible</string>
-  <string name="sdcard_unmountable_message">La tarjeta SD no se puede leer.
-        Puede que el sistema de archivos esté dañado o la tarjeta defectuosa.</string>
-  <string name="security">Seguridad</string>
-  <string name="security_and_data_label">Seguridad y datos</string>
-  <string name="security_passwords_title">Contraseñas</string>
-  <string name="security_settings_desc">Ésta es la información a la que la aplicación puede acceder en su teléfono:</string>
-  <string name="security_settings_summary">Mi ubicación, desbloqueo de pantalla, bloqueo de tarjeta SIM</string>
-  <string name="security_settings_title">Seguridad y ubicación</string>
-  <string name="select_your_language">Seleccione su idioma</string>
-  <string name="set_lock_pattern_label">Trazar su patrón de desbloqueo:</string>
-  <string name="settings_chooser_pick_string">
-        El icono de Configuración debería redirigir a:
-    </string>
-  <string name="settings_label">Configuración</string>
-  <string name="settings_license_activity_loading">Cargando\u2026</string>
-  <string name="settings_license_activity_title">Licencias de fuente abierta</string>
-  <string name="settings_license_activity_unavailable">Hay un problema con la carga de las licencias.</string>
-  <string name="show_password">Contraseñas visibles</string>
-  <string name="show_password_summary">Mostrar contraseña según escribe</string>
-  <string name="signal">Intensidad de señal</string>
-  <string name="silent_mode_summary">Todos los sonidos excepto los medios están en silencio</string>
-  <string name="silent_mode_title">Modo silencioso</string>
-  <string name="sim_bad_pin">PIN incorrecto</string>
-  <string name="sim_change_failed">Fallo al cambiar PIN\nPIN posiblemente incorrecto.</string>
-  <string name="sim_change_pin">Cambiar PIN de SIM</string>
-  <string name="sim_change_succeeded">PIN de SIM cambiado correctamente</string>
-  <string name="sim_disable_sim_lock">Deshabilitar bloqueo de tarjeta SIM</string>
-  <string name="sim_enable_sim_lock">Habilitar bloqueo de tarjeta SIM</string>
-  <string name="sim_enter_cancel">Cancelar</string>
-  <string name="sim_enter_new">Introducir nuevo PIN</string>
-  <string name="sim_enter_ok">Aceptar</string>
-  <string name="sim_enter_old">Introducir PIN anterior</string>
-  <string name="sim_enter_pin">Introducir el PIN de la SIM</string>
-  <string name="sim_lock_failed">Fallo al cambiar el estado de bloqueo de la tarjeta SIM.\nPIN posiblemente incorrecto.</string>
-  <string name="sim_lock_off">Necesita un código PIN para utilizar el teléfono</string>
-  <string name="sim_lock_on">Necesita un código PIN para utilizar el teléfono</string>
-  <string name="sim_lock_settings">Configuración de bloqueo de la tarjeta SIM</string>
-  <string name="sim_lock_settings_category">Configuración de bloqueo de la tarjeta SIM</string>
-  <string name="sim_lock_settings_title">Bloqueo de tarjeta SIM</string>
-  <string name="sim_pin_change">Cambiar código PIN</string>
-  <string name="sim_pin_toggle">Bloqueo de la tarjeta SIM</string>
-  <string name="sim_pins_dont_match">Los códigos PIN no coinciden.</string>
-  <string name="sim_reenter_new">Vuelva a introducir el nuevo PIN</string>
-  <string name="skip_button_label">Cancelar</string>
-  <string name="small_font">Pequeño</string>
-  <string name="software_version">Versión de software</string>
-  <string name="sort_order_alpha">Ordenar alfabéticamente</string>
-  <string name="sort_order_size">Ordenar por tamaño (descendente)</string>
-  <string name="sound_and_display_settings">Sonido y visualización</string>
-  <string name="sound_and_display_settings_summary">Configurar tonos de timbre, notificaciones y brillo de la pantalla</string>
-  <string name="sound_effects_enable_summary_off">Reproducir sonido al seleccionar algo en la pantalla</string>
-  <string name="sound_effects_enable_summary_on">Reproducir sonido al seleccionar algo en la pantalla</string>
-  <string name="sound_effects_enable_title">Selección sonora</string>
-  <string name="sound_settings">Configuración de sonido</string>
-  <string name="status_authenticating">Autenticación\u2026</string>
-  <string name="status_awake_time">Tiempo de actividad</string>
-  <string name="status_bt_address">Dirección Bluetooth</string>
-  <string name="status_connected">Conectado</string>
-  <string name="status_connecting">Conectando\u2026</string>
-  <string name="status_data_state">Acceso a los datos</string>
-  <string name="status_disconnected">Desconectado</string>
-  <string name="status_disconnecting">Desconexión\u2026</string>
-  <string name="status_failed">Incorrecto</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imei_sv">IMEI SV</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Tipo de red</string>
-  <string name="status_number">Número de teléfono</string>
-  <string name="status_obtaining_ip">Obtener dirección\u2026</string>
-  <string name="status_operator">Red</string>
-  <string name="status_roaming">Itinerancia</string>
-  <string name="status_scanning">Búscando\u2026</string>
-  <string name="status_service_state">Estado del servicio</string>
-  <string name="status_signal_strength">Intensidad de señal</string>
-  <string name="status_unavailable">No disponible</string>
-  <string name="status_up_time">Tiempo de funcionamiento</string>
-  <string name="status_wifi_mac_address">Dirección MAC Wi-Fi</string>
-  <string name="stay_on">La pantalla está siempre activa durante la carga</string>
-  <string name="storage_label">Almacenamiento</string>
-  <string name="storage_settings_summary">Tarjeta SD no insertada, ver almacenamiento disponible</string>
-  <string name="storage_settings_title">Tarjeta SD y memoria de almacenamiento</string>
-  <string name="sum_carrier_select">Seleccionar un operador de red</string>
-  <string name="summary_connection_failed">No se ha podido realizar la conexión, vuelva a intentarlo</string>
-  <string name="summary_not_in_range">No en intervalo</string>
-  <string name="summary_remembered">Recordado</string>
-  <string name="sync_automatically">Sincronización automática</string>
-  <string name="sync_calendar">Calendario</string>
-  <string name="sync_contacts">Contactos</string>
-  <string name="sync_disabled">Seleccione la sincronización automática de datos</string>
-  <string name="sync_do_nothing">No hacer nada por el momento.</string>
-  <string name="sync_enabled">Sincronización automática de datos</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_is_failing">La sincronización presenta algunos problemas. Se solucionarán en breve. </string>
-  <string name="sync_menu_sync_cancel">Cancelar sincronización</string>
-  <string name="sync_menu_sync_now">Sincronizar ahora</string>
-  <string name="sync_really_delete">Eliminar los elementos.</string>
-  <string name="sync_settings">Sincronización de datos</string>
-  <string name="sync_settings_summary">Seleccionar qué aplicaciones están sincronizadas</string>
-  <string name="sync_too_many_deletes">Eliminar límite excedido</string>
-  <string name="sync_too_many_deletes_desc">Hay %d elementos eliminados en %s, cuenta %s. ¿Qué quiere hacer?</string>
-  <string name="sync_undo_deletes">Deshacer lo eliminado.</string>
-  <string name="target_build_field_label">Tipo de compilación solicitado</string>
-  <string name="team_title">Equipo</string>
-  <string name="telephony_apn_label">APN:</string>
-  <string name="telephony_mcc_label">MCC:</string>
-  <string name="telephony_mmsc_label">MMSC:</string>
-  <string name="telephony_mmsport_label">Puerto MMS:</string>
-  <string name="telephony_mmsproxy_label">Proxy MMS:</string>
-  <string name="telephony_mnc_label">MNC:</string>
-  <string name="telephony_name_label">Nombre:</string>
-  <string name="telephony_password_label">Contraseña:</string>
-  <string name="telephony_port_label">Puerto:</string>
-  <string name="telephony_proxy_label">Proxy:</string>
-  <string name="telephony_server_label">Servidor:</string>
-  <string name="telephony_user_label">Usuario:</string>
-  <string name="terms_title">Términos y condiciones</string>
-  <string name="testing">Probando</string>
-  <string name="testing_battery_info">Información de la batería</string>
-  <string name="testing_phone_info">Información del teléfono</string>
-  <string name="testing_sim_toolkit">Herramientas SIM</string>
-  <string name="text_category">Configuración de texto</string>
-  <string name="total_size_label">Total</string>
-  <string name="turn_off_qxdm">Deshabilitar registro QXDM SD</string>
-  <string name="turn_off_radio">Apagar radio</string>
-  <string name="turn_on_qxdm">Habilitar registro QXDM SD</string>
-  <string name="turn_on_radio">Encender radio</string>
-  <string name="underdeveloped_settings_label">Configuración menos desarrollada</string>
-  <string name="uninstall_failed">Incapaz de desinstalar la aplicación. </string>
-  <string name="uninstall_text">Desinstalar</string>
-  <string name="unknown">Desconocido</string>
-  <string name="vibrate_summary">Vibración del teléfono al recibir llamadas</string>
-  <string name="vibrate_title">Vibración del teléfono</string>
-  <string name="wallpaper_label">Papel tapiz</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Redes Wi-Fi </string>
-  <string name="wifi_add_other_network">Agregar una red Wi-Fi</string>
-  <string name="wifi_context_menu_change_password">Cambiar contraseña</string>
-  <string name="wifi_context_menu_connect">Conectar a la red</string>
-  <string name="wifi_context_menu_forget">Olvidar red</string>
-  <string name="wifi_dhcp_timeout_error">Hay problemas al obtener una dirección IP. </string>
-  <string name="wifi_dns1">DNS 1</string>
-  <string name="wifi_dns2">DNS 2</string>
-  <string name="wifi_dns3">DNS 3</string>
-  <string name="wifi_dns_label">dns:</string>
-  <string name="wifi_error">Error</string>
-  <string name="wifi_gateway">Puerta de enlace</string>
-  <string name="wifi_gateway_label">puerta de enlace:</string>
-  <string name="wifi_generic_connection_error">Hay problemas de conexión con la red. Por favor, inténtelo de nuevo.</string>
-  <string name="wifi_host_ip">ip de host:</string>
-  <string name="wifi_ip_address">Dirección IP</string>
-  <string name="wifi_ip_settings_invalid_ip">Escriba una dirección IP válida.</string>
-  <string name="wifi_ip_settings_menu_cancel">Cancelar</string>
-  <string name="wifi_ip_settings_menu_save">Guardar</string>
-  <string name="wifi_ip_settings_titlebar">Configuración IP</string>
-  <string name="wifi_link_speed">Velocidad</string>
-  <string name="wifi_menu_advanced">Avanzado</string>
-  <string name="wifi_netmask">Máscara de red</string>
-  <string name="wifi_netmask_label">máscara de red:</string>
-  <string name="wifi_notify_open_networks">Notificación de red</string>
-  <string name="wifi_notify_open_networks_summary">Notificar cuando esté disponible una red abierta</string>
-  <string name="wifi_password_incorrect_error">La contraseña de red introducida no es correcta. Inténtelo de nuevo.</string>
-  <string name="wifi_password_unchanged">(sin cambios)</string>
-  <string name="wifi_prefer_wifi">Preferir Wi-Fi</string>
-  <string name="wifi_quick_toggle_summary">Seleccione la activación Wi-Fi. </string>
-  <string name="wifi_quick_toggle_title">Wi-Fi</string>
-  <string name="wifi_save_config">Guardar</string>
-  <string name="wifi_screen_activate_text">Activar</string>
-  <string name="wifi_screen_dhcp_text">automática</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">manual</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">La red Wi-Fi está funcionando</string>
-  <string name="wifi_screen_test_text">Prueba</string>
-  <string name="wifi_security">Seguridad</string>
-  <string name="wifi_security_open">Abrir</string>
-  <string name="wifi_security_unknown">Desconocido</string>
-  <string name="wifi_security_verbose_open">Red abierta</string>
-  <string name="wifi_security_verbose_wep">Protegida con WEP</string>
-  <string name="wifi_security_verbose_wpa">Protegida con WPA</string>
-  <string name="wifi_security_verbose_wpa2">Protegida con WPA2</string>
-  <string name="wifi_security_wep">WEP</string>
-  <string name="wifi_security_wpa">WPA</string>
-  <string name="wifi_security_wpa2">WPA2</string>
-  <string name="wifi_settings">Configuración de Wi-Fi</string>
-  <string name="wifi_settings_category">Configuración de Wi-Fi</string>
-  <string name="wifi_settings_summary">Configurar y administrar puntos de acceso inalámbrico</string>
-  <string name="wifi_show_password">Mostrar contraseña. </string>
-  <string name="wifi_signal_0">Mala</string>
-  <string name="wifi_signal_1">Normal</string>
-  <string name="wifi_signal_2">Buena</string>
-  <string name="wifi_signal_3">Excelente</string>
-  <string name="wifi_starting">Activar\u2026</string>
-  <string name="wifi_status">Estado</string>
-  <string name="wifi_stopping">Desactivar\u2026</string>
-  <string name="wifi_type_ssid">Escribir la red SSID:</string>
-  <string name="wifi_use_static_ip">Usar IP estática</string>
-  <string name="wifi_wlan_id">id de wlan:</string>
+    <string name="device_info_default">"Desconocido"</string>
+    <string name="device_info_uptime">"Tiempo de funcionamiento"</string>
+    <string name="device_info_awaketime">"Tiempo de actividad"</string>
+    <string name="device_info_asleeptime">"Tiempo de inactividad"</string>
+    <string name="turn_on_radio">"Encender radio"</string>
+    <string name="turn_off_radio">"Apagar radio"</string>
+    <string name="turn_on_qxdm">"Habilitar registro QXDM SD"</string>
+    <string name="turn_off_qxdm">"Deshabilitar registro QXDM SD"</string>
+    <string name="radioInfo_menu_viewADN">"Ver agenda de SIM"</string>
+    <string name="radioInfo_menu_viewFDN">"Ver números de marcado fijo"</string>
+    <string name="radioInfo_menu_viewSDN">"Ver números de marcado de servicio"</string>
+    <string name="radioInfo_menu_getPDP">"Obtener lista PDP"</string>
+    <string name="radioInfo_menu_enableData">"Habilitar conexión de datos"</string>
+    <string name="radioInfo_menu_disableData">"Deshabilitar conexión de datos"</string>
+    <!-- no translation found for radioInfo_menu_enableDataOnBoot (1926825935390738605) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_disableDataOnBoot (1229911918312837466) -->
+    <skip />
+    <string name="radioInfo_service_in">"En servicio"</string>
+    <string name="radioInfo_service_out">"Fuera de servicio"</string>
+    <string name="radioInfo_service_emergency">"Sólo llamadas de emergencia"</string>
+    <string name="radioInfo_service_off">"Radio apagada"</string>
+    <string name="radioInfo_roaming_in">"Itinerancia"</string>
+    <string name="radioInfo_roaming_not">"No itinerancia"</string>
+    <string name="radioInfo_phone_idle">"Inactivo"</string>
+    <string name="radioInfo_phone_ringing">"Sonando"</string>
+    <string name="radioInfo_phone_offhook">"Llamada en curso"</string>
+    <string name="radioInfo_data_disconnected">"Desconectado"</string>
+    <string name="radioInfo_data_connecting">"Conectando"</string>
+    <string name="radioInfo_data_connected">"Conectado"</string>
+    <!-- no translation found for radioInfo_data_suspended (4953150687356763202) -->
+    <skip />
+    <string name="radioInfo_unknown">"desconocido"</string>
+    <string name="radioInfo_display_packets">"paq."</string>
+    <string name="radioInfo_display_bytes">"bytes"</string>
+    <string name="radioInfo_display_dbm">"dBm"</string>
+    <string name="radioInfo_display_asu">"asu"</string>
+    <string name="radioInfo_lac">"LAC"</string>
+    <string name="radioInfo_cid">"CID"</string>
+    <string name="sdcard_unmount">"Desmontar tarjeta SD"</string>
+    <string name="small_font">"Pequeño"</string>
+    <string name="medium_font">"Mediano"</string>
+    <string name="large_font">"Grande"</string>
+    <string name="font_size_save">"Aceptar"</string>
+    <string name="sdcard_setting">"Tarjeta SD"</string>
+    <string name="screen_off_timeout_label">"Tiempo de espera de apagado de pantalla"</string>
+    <string name="stay_on">"Permanece encendido mientras está enchufado"</string>
+    <string name="app_launcher_newView_text">"Nuevo AppLauncher"</string>
+    <string name="battery_info_status_label">"Estado de la batería:"</string>
+    <string name="battery_info_scale_label">"Escala de batería:"</string>
+    <string name="battery_info_level_label">"Nivel de batería:"</string>
+    <string name="battery_info_health_label">"Salud de batería:"</string>
+    <string name="battery_info_technology_label">"Tecnología de la batería:"</string>
+    <string name="battery_info_voltage_label">"Tensión de la batería:"</string>
+    <string name="battery_info_voltage_units">"mV"</string>
+    <string name="battery_info_temperature_label">"Temperatura de la batería:"</string>
+    <string name="battery_info_temperature_units">"° C"</string>
+    <!-- no translation found for battery_info_uptime (1195623257533912354) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_battery (1529944627925423756) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_plugged (7272044960586959459) -->
+    <skip />
+    <!-- no translation found for battery_info_screen_on (832651425042656482) -->
+    <skip />
+    <string name="battery_info_status_unknown">"Desconocido"</string>
+    <string name="battery_info_status_charging">"Cargando"</string>
+    <string name="battery_info_status_charging_ac">"(CA)"</string>
+    <string name="battery_info_status_charging_usb">"(USB)"</string>
+    <string name="battery_info_status_discharging">"Descargando"</string>
+    <string name="battery_info_status_not_charging">"No cargando"</string>
+    <string name="battery_info_status_full">"Completo"</string>
+    <string name="battery_info_health_unknown">"Desconocido"</string>
+    <string name="battery_info_health_good">"Buena"</string>
+    <string name="battery_info_health_overheat">"Recalentamiento"</string>
+    <string name="battery_info_health_dead">"Muerta"</string>
+    <string name="battery_info_health_over_voltage">"Sobretensión"</string>
+    <string name="battery_info_health_unspecified_failure">"Fallo no especificado"</string>
+    <string name="bluetooth">"Bluetooth"</string>
+    <string name="bluetooth_stopping">"Desconexión de Bluetooth…"</string>
+    <string name="bluetooth_disabled">"El Bluetooth está apagado actualmente."</string>
+    <string name="bluetooth_enabled">"El Bluetooth está activado actualmente"</string>
+    <string name="bluetooth_enabling">"Habilitando Bluetooth…"</string>
+    <string name="bluetooth_visibility">"Visibilidad"</string>
+    <string name="bluetooth_is_discoverable">"El dispositivo es detectable"</string>
+    <string name="bluetooth_not_discoverable">"Dispositivo no detectable"</string>
+    <string name="bluetooth_devices">"Dispositivos Bluetooth"</string>
+    <string name="bluetooth_device_name">"Nombre del dispositivo"</string>
+    <string name="bluetooth_name_not_set">"Ningún nombre establecido, usando nombre de cuenta"</string>
+    <string name="bluetooth_scan_for_devices">"Buscar dispositivos Bluetooth"</string>
+    <string name="bluetooth_clear_list">"Borrar lista de dispositivos"</string>
+    <string name="bluetooth_disconnect_blank">"¿Desconectar %1$s?"</string>
+    <string name="bluetooth_connected">"Conectado"</string>
+    <!-- no translation found for bluetooth_disconnected (779512372559332317) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (613305857810977890) -->
+    <skip />
+    <string name="bluetooth_connecting">"Conectando…"</string>
+    <string name="bluetooth_unknown">"Desconocido"</string>
+    <string name="bluetooth_not_connected">"No está conectado"</string>
+    <!-- no translation found for bluetooth_failed_to_enable (10261849074413402) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing (8284273555047880444) -->
+    <skip />
+    <!-- no translation found for failed_to_pair (5265027255173301781) -->
+    <skip />
+    <string name="failed_to_connect">"Fallo al conectar a "</string>
+    <string name="bluetooth_paired">"Emparejado"</string>
+    <!-- no translation found for bluetooth_paired_not_nearby (2890021978719716438) -->
+    <skip />
+    <string name="bluetooth_device">"manos libres / auriculares"</string>
+    <!-- no translation found for bluetooth_disconnect (4070053533691322466) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect (6123567524009555372) -->
+    <skip />
+    <!-- no translation found for bluetooth_unpair (6786377316984999718) -->
+    <skip />
+    <!-- no translation found for bluetooth_pair (6433088623778842494) -->
+    <skip />
+    <string name="progress_scanning">"Buscando"</string>
+    <!-- no translation found for bluetooth_notif_ticker (6269529534945974964) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_title (3790273649365187417) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_message (3713615470961259613) -->
+    <skip />
+    <string name="date_and_time">"Fecha y hora"</string>
+    <!-- no translation found for date_time_12_hour_sample (3346099183513673921) -->
+    <skip />
+    <!-- no translation found for date_time_24_hour_sample (2930431568836213699) -->
+    <skip />
+    <string name="choose_timezone">"Seleccionar zona horaria"</string>
+    <string name="display_preview_label">"Vista previa:"</string>
+    <string name="display_font_size_label">"Tamaño de fuente:"</string>
+    <string name="intent_sender_data_label">"Datos:"</string>
+    <string name="intent_sender_sendbroadcast_text">"Enviar emisión"</string>
+    <string name="intent_sender_action_label">"Acción:"</string>
+    <string name="intent_sender_startactivity_text">"Iniciar actividad"</string>
+    <string name="intent_sender_resource_label">"Recurso:"</string>
+    <string name="intent_sender_account_label">"Cuenta:"</string>
+    <string name="keyguard_pw_mod_text">"Seleccionar patrón de bloqueo"</string>
+    <string name="keyguard_pin_mod_text">"Cambiar PIN"</string>
+    <string name="keyguard_label">"Protección de clave"</string>
+    <string name="keyguard_sim_pin_label">"PIN de SIM"</string>
+    <string name="keyguard_password_old_password_error_text">"¡La contraseña anterior que ha introducido no es correcta! Por favor, inténtelo de nuevo"</string>
+    <string name="keyguard_password_button_text">"Aceptar"</string>
+    <string name="keyguard_password_confirm_new_label">"Confirmar nueva contraseña:"</string>
+    <string name="keyguard_password_new_label">"Contraseña nueva:"</string>
+    <string name="keyguard_password_old_label">"Contraseña anterior:"</string>
+    <string name="keyguard_password_mismatch_error_text">"¡Las dos contraseñas no coinciden! Vuelva a introducirlas"</string>
+    <string name="proxy_clear_text">"Borrar"</string>
+    <string name="proxy_port_label">"Puerto"</string>
+    <string name="proxy_defaultView_text">"Restaurar predeterminados"</string>
+    <string name="proxy_action_text">"Guardar"</string>
+    <string name="proxy_hostname_label">"Nombre de host"</string>
+    <string name="proxy_error">"¡Atención!"</string>
+    <string name="proxy_error_dismiss">"Aceptar"</string>
+    <string name="proxy_error_invalid_host">"El nombre de host que ha introducido no es válido"</string>
+    <string name="proxy_error_empty_port">"Debe completar el campo Puerto"</string>
+    <string name="proxy_error_empty_host_set_port">"El campo Puerto debe estar vacío si el campo Host está vacío"</string>
+    <string name="proxy_error_invalid_port">"El nombre de puerto que ha introducido no es válido"</string>
+    <string name="radio_info_signal_location_label">"Ubicación:"</string>
+    <string name="radio_info_neighboring_location_label">"CID cercano:"</string>
+    <string name="radio_info_data_attempts_label">"Intentos de datos:"</string>
+    <string name="radio_info_imsi_label">"IMSI:"</string>
+    <string name="radio_info_gprs_service_label">"Servicio GPRS:"</string>
+    <string name="radio_info_roaming_label">"Itinerancia:"</string>
+    <string name="radio_info_imei_label">"IMEI:"</string>
+    <string name="radio_info_call_redirect_label">"Redirección de llamada:"</string>
+    <string name="radio_info_ppp_resets_label">"Número de restablecimientos PPP desde el arranque:"</string>
+    <string name="radio_info_gsm_disconnects_label">"Desconexiones GSM:"</string>
+    <string name="radio_info_current_network_label">"Red actual:"</string>
+    <string name="radio_info_data_successes_label">"Datos enviados correctamente:"</string>
+    <string name="radio_info_ppp_received_label">"PPP recibido:"</string>
+    <string name="radio_info_gsm_service_label">"Servicio GSM:"</string>
+    <string name="radio_info_signal_strength_label">"Intensidad de señal:"</string>
+    <string name="radio_info_call_status_label">"Estado de llamada:"</string>
+    <string name="radio_info_ppp_sent_label">"PPP enviados:"</string>
+    <string name="radio_info_radio_resets_label">"Restablecimientos de radio:"</string>
+    <string name="radio_info_message_waiting_label">"Mensaje esperando:"</string>
+    <string name="radio_info_phone_number_label">"Número de teléfono:"</string>
+    <string name="radio_info_band_mode_label">"Seleccionar banda de radio"</string>
+    <string name="radio_info_network_type_label">"Tipo de red:"</string>
+    <string name="radio_info_set_perferred_label">"Establecer tipo de red preferido:"</string>
+    <!-- no translation found for radio_info_ping_ipaddr (7229811664688502621) -->
+    <skip />
+    <!-- no translation found for radio_info_ping_hostname (7817617877155199848) -->
+    <skip />
+    <!-- no translation found for radio_info_http_client_test (5100483824350561339) -->
+    <skip />
+    <!-- no translation found for radio_info_toggle_ciph_label (2705975697585878388) -->
+    <skip />
+    <!-- no translation found for ping_test_label (99396772665008247) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_label (6577522217730406517) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_update_label (6471155265532972448) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_refresh_label (4334057389927982364) -->
+    <skip />
+    <string name="band_mode_title">"Establecer banda GSM/UMTS"</string>
+    <string name="band_mode_loading">"Cargando lista de bandas…"</string>
+    <string name="band_mode_set">"Establecer"</string>
+    <string name="band_mode_failed">"Error"</string>
+    <string name="band_mode_succeeded">"Realizado con éxito"</string>
+    <string name="ringer_volume_ringer_mode_label">"Modo de timbre"</string>
+    <string name="ringer_volume_screen_increasing_text">"Timbre creciente"</string>
+    <string name="ringer_volume_ringtone_label">"Tono de timbre"</string>
+    <string name="ringer_volume_instructions">"Usar los botones de volumen para ajustar el volumen del timbre"</string>
+    <string name="sdcard_changes_instructions">"Los cambios se aplicarán cuando se vuelva a conectar el cable USB"</string>
+    <string name="sdcard_settings_screen_mass_storage_text">"Habilitar almacenamiento masivo USB"</string>
+    <string name="sdcard_settings_total_bytes_label">"Bytes totales:"</string>
+    <string name="sdcard_settings_not_present_status">"Ninguna tarjeta SD"</string>
+    <string name="sdcard_settings_available_bytes_label">"Bytes disponibles:"</string>
+    <string name="sdcard_settings_mass_storage_status">"La tarjeta SD se está utilizando como dispositivo de almacenamiento masivo"</string>
+    <string name="sdcard_settings_unmounted_status">"Ahora es seguro extraer la tarjeta SD"</string>
+    <string name="sdcard_settings_bad_removal_status">"¡La tarjeta SD se ha extraído mientras seguía en uso!"</string>
+    <string name="sdcard_settings_used_bytes_label">"Bytes usados:"</string>
+    <string name="sdcard_settings_scanning_status">"Buscando medios en tarjeta SD…"</string>
+    <string name="sdcard_settings_read_only_status">"Tarjeta SD montada de sólo lectura"</string>
+    <string name="sdcard_removal_alert_title">"Extracción de tarjeta SD no segura"</string>
+    <string name="sdcard_unmountable_alert_title">"Tarjeta SD no legible"</string>
+    <string name="telephony_user_label">"Usuario:"</string>
+    <string name="telephony_server_label">"Servidor:"</string>
+    <string name="telephony_name_label">"Nombre:"</string>
+    <string name="telephony_mmsc_label">"MMSC:"</string>
+    <string name="telephony_apn_label">"APN:"</string>
+    <string name="telephony_mcc_label">"MCC:"</string>
+    <string name="telephony_port_label">"Puerto:"</string>
+    <string name="telephony_password_label">"Contraseña:"</string>
+    <string name="telephony_proxy_label">"Proxy:"</string>
+    <string name="telephony_mnc_label">"MNC:"</string>
+    <string name="telephony_mmsproxy_label">"Proxy MMS:"</string>
+    <string name="telephony_mmsport_label">"Puerto MMS:"</string>
+    <string name="next_label">"Siguiente"</string>
+    <string name="language_picker_title">"Idioma"</string>
+    <!-- no translation found for select_your_language (9081963472187973531) -->
+    <skip />
+    <string name="activity_picker_label">"Seleccionar actividad"</string>
+    <string name="device_info_label">"Información del dispositivo"</string>
+    <string name="battery_info_label">"Información de batería"</string>
+    <string name="display_label">"Pantalla"</string>
+    <string name="phone_info_label">"Información del teléfono"</string>
+    <string name="sd_card_settings_label">"Tarjeta SD"</string>
+    <string name="proxy_settings_label">"Configuración de proxy"</string>
+    <string name="cancel">"Cancelar"</string>
+    <string name="settings_label">"Configuración"</string>
+    <string name="airplane_mode">"Modo avión"</string>
+    <!-- no translation found for airplane_mode_summary (3500557633417506553) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_on (1243134862683209663) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_off (2291183932542256190) -->
+    <skip />
+    <!-- no translation found for radio_controls_title (4981652151494753702) -->
+    <skip />
+    <!-- no translation found for radio_controls_summary (9105526969569292926) -->
+    <skip />
+    <string name="date_and_time_settings_title">"Fecha y hora"</string>
+    <!-- no translation found for date_and_time_settings_summary (3489093199543794055) -->
+    <skip />
+    <string name="date_time_auto">"Automát."</string>
+    <string name="date_time_auto_summaryOn">"Usar valores suministrados por la red"</string>
+    <string name="date_time_auto_summaryOff">"Usar valores seleccionados por el usuario"</string>
+    <string name="date_time_24hour">"Formato 24 horas"</string>
+    <string name="date_time_set_time">"Establecer hora"</string>
+    <string name="date_time_set_timezone">"Seleccionar zona horaria"</string>
+    <string name="date_time_set_date">"Establecer fecha"</string>
+    <string name="date_time_date_format">"Establecer formato de fecha"</string>
+    <!-- no translation found for zone_list_menu_sort_alphabetically (8983103881342552870) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (7025442915093990469) -->
+    <skip />
+    <!-- no translation found for security_settings_title (969550777120624897) -->
+    <skip />
+    <!-- no translation found for security_settings_summary (3202445632951595923) -->
+    <skip />
+    <!-- no translation found for security_passwords_title (4466520735598079063) -->
+    <skip />
+    <string name="bluetooth_quick_toggle_title">"Bluetooth"</string>
+    <!-- no translation found for bluetooth_quick_toggle_summary (2292894901949724405) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings (1545097653816106117) -->
+    <skip />
+    <string name="bluetooth_settings_title">"Configuración de Bluetooth"</string>
+    <!-- no translation found for bluetooth_settings_summary (1419697742707330821) -->
+    <skip />
+    <string name="bluetooth_pin_entry">"Entrada de PIN Bluetooth"</string>
+    <string name="bluetooth_device_info">"Información de dispositivo Bluetooth"</string>
+    <string name="bluetooth_pairing_msg">"Emparejando…"</string>
+    <string name="bluetooth_enter_pin_msg">"Introducir PIN para"</string>
+    <string name="bluetooth_new_data">"Introducir nuevos datos"</string>
+    <string name="bluetooth_new_data_confirm">"Aceptar"</string>
+    <string name="bluetooth_new_data_cancel">"Cancelar"</string>
+    <string name="bluetooth_scan_for_new_devices">"Buscando nuevos dispositivos…"</string>
+    <string name="bluetooth_discoverability_panel_title">"Mostrarme…"</string>
+    <string name="bluetooth_discoverable">"Detectable y conectable"</string>
+    <string name="bluetooth_connectable">"Sólo conectable"</string>
+    <string name="bluetooth_neither">"Ni detectable ni conectable"</string>
+    <!-- no translation found for bluetooth_preference_scan_title (5457824526570506576) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (4169248439102381141) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (1360133741981139570) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (3848550418295778426) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (3526057462723016574) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (1842004154350000288) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (302606151874724466) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (5004355397163127842) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (8557599374974072579) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (6848174297822591204) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (8660680578951214915) -->
+    <skip />
+    <string name="wifi">"Wi-Fi"</string>
+    <!-- no translation found for wifi_quick_toggle_title (4404851801229148146) -->
+    <skip />
+    <!-- no translation found for wifi_quick_toggle_summary (5254705029759236850) -->
+    <skip />
+    <string name="wifi_settings">"Configuración de Wi-Fi"</string>
+    <!-- no translation found for wifi_settings_category (610287013958209636) -->
+    <skip />
+    <!-- no translation found for wifi_settings_summary (8789964612748859011) -->
+    <skip />
+    <string name="forget_network">"Olvidar"</string>
+    <!-- no translation found for wifi_status (4374358089273446404) -->
+    <skip />
+    <!-- no translation found for wifi_link_speed (8766462457818203791) -->
+    <skip />
+    <!-- no translation found for wifi_signal_3 (1264702582845283580) -->
+    <skip />
+    <!-- no translation found for wifi_signal_2 (3765197678751351272) -->
+    <skip />
+    <!-- no translation found for wifi_signal_1 (3469786868912545422) -->
+    <skip />
+    <!-- no translation found for wifi_signal_0 (7285670709111185231) -->
+    <skip />
+    <string name="security">"Seguridad"</string>
+    <!-- no translation found for wifi_security_open (6529463996240023139) -->
+    <skip />
+    <!-- no translation found for wifi_security_wep (8543279149057388909) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa (7229647924366572707) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa2 (641020427516679969) -->
+    <skip />
+    <!-- no translation found for wifi_security_unknown (7700764937580224930) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_open (7105261201983314526) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wep (2018232984976185738) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa (7240649761750328761) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa2 (5470387821577814216) -->
+    <skip />
+    <string name="ip_address">"Dirección IP"</string>
+    <string name="signal">"Intensidad de señal"</string>
+    <!-- no translation found for wifi_starting (380585178092358776) -->
+    <skip />
+    <!-- no translation found for wifi_stopping (1130828572786743854) -->
+    <skip />
+    <!-- no translation found for wifi_error (7223451684597210919) -->
+    <skip />
+    <string name="error_starting">"Error al iniciar Wi-Fi"</string>
+    <string name="error_stopping">"Error al detener Wi-Fi"</string>
+    <string name="error_scanning">"Error al buscar redes"</string>
+    <string name="error_connecting">"Error al conectar con la red"</string>
+    <string name="error_saving">"Error al guardar red"</string>
+    <string name="connect">"Conectar"</string>
+    <string name="connect_to_blank">"Conectar a %1$s"</string>
+    <string name="please_type_passphrase">"Introduzca su contraseña inalámbrica"</string>
+    <!-- no translation found for please_type_hex_key (3792966437690051423) -->
+    <skip />
+    <!-- no translation found for wifi_show_password (2142204324333077532) -->
+    <skip />
+    <string name="scan_wifi">"Examinar"</string>
+    <string name="summary_not_in_range">"No en intervalo"</string>
+    <string name="summary_remembered">"Recordado"</string>
+    <!-- no translation found for summary_connection_failed (5466501123715222542) -->
+    <skip />
+    <string name="wifi_access_points">"Redes"</string>
+    <!-- no translation found for wifi_type_ssid (4389276980911820577) -->
+    <skip />
+    <!-- no translation found for wifi_security (8115513846744543151) -->
+    <skip />
+    <!-- no translation found for wifi_save_config (1041957548332322297) -->
+    <skip />
+    <!-- no translation found for wifi_password_unchanged (5583782979192657008) -->
+    <skip />
+    <!-- no translation found for wifi_add_other_network (914072465709281633) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks (3091942233631075516) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1793737931132127488) -->
+    <skip />
+    <!-- no translation found for wifi_password_incorrect_error (8656138222468900361) -->
+    <skip />
+    <!-- no translation found for wifi_generic_connection_error (4414845075108763948) -->
+    <skip />
+    <!-- no translation found for wifi_menu_advanced (7729886219986221918) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_titlebar (6646153875184353089) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_save (5525488681356054899) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_cancel (4123436217014637229) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_invalid_ip (1648124374575025870) -->
+    <skip />
+    <!-- no translation found for wifi_use_static_ip (4076793026334955338) -->
+    <skip />
+    <!-- no translation found for wifi_ip_address (6067958502872259392) -->
+    <skip />
+    <!-- no translation found for wifi_dns1 (7502077213876989613) -->
+    <skip />
+    <!-- no translation found for wifi_dns2 (3296825469895827273) -->
+    <skip />
+    <!-- no translation found for wifi_gateway (393330487055540831) -->
+    <skip />
+    <!-- no translation found for wifi_netmask (6024777305439519433) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_connect (3348366738100644008) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_forget (5844111744505938081) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_change_password (7074463790535015442) -->
+    <skip />
+    <!-- no translation found for wifi_advanced_titlebar (7352048185262676955) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_title (4302664253747096207) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_summary (5137058932628594680) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_error (581404310349899492) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_channel_phrase (8341967925173918983) -->
+    <skip />
+    <string name="fragment_status_scanning">"Buscando"</string>
+    <string name="fragment_status_connecting">"Conectando a %1$s"</string>
+    <string name="fragment_status_authenticating">"Autenticando con %1$s"</string>
+    <string name="fragment_status_obtaining_ip">"Obteniendo dirección IP de %1$s"</string>
+    <string name="fragment_status_connected">"Conectado a %1$s"</string>
+    <string name="fragment_status_disconnecting">"Desconectando de %1$s"</string>
+    <string name="fragment_status_disconnected">"Desconectado"</string>
+    <string name="fragment_status_failed">"Error"</string>
+    <string name="status_scanning">"Buscando"</string>
+    <string name="status_connecting">"Conectando"</string>
+    <string name="status_authenticating">"Autenticando"</string>
+    <string name="status_obtaining_ip">"Obteniendo dirección IP"</string>
+    <string name="status_connected">"Conectado"</string>
+    <string name="status_disconnecting">"Desconectando"</string>
+    <string name="status_disconnected">"Desconectado"</string>
+    <string name="status_failed">"Error"</string>
+    <!-- no translation found for sound_and_display_settings (4749118288236939460) -->
+    <skip />
+    <!-- no translation found for sound_settings (2706184235211157339) -->
+    <skip />
+    <!-- no translation found for sound_and_display_settings_summary (3672623202659031178) -->
+    <skip />
+    <string name="silent_mode_title">"Silencio"</string>
+    <!-- no translation found for silent_mode_summary (6135093989634963053) -->
+    <skip />
+    <string name="ringtone_title">"Tono de timbre del teléfono"</string>
+    <!-- no translation found for ringtone_summary (1766080371183553822) -->
+    <skip />
+    <string name="ring_volume_title">"Volumen de timbre"</string>
+    <!-- no translation found for ring_volume_summary (8107485240454889544) -->
+    <skip />
+    <!-- no translation found for vibrate_title (4376574310180696114) -->
+    <skip />
+    <!-- no translation found for vibrate_summary (6788068739601216797) -->
+    <skip />
+    <string name="notification_sound_title">"Tonos de timbre de notificación"</string>
+    <!-- no translation found for notification_sound_summary (7617168477811163700) -->
+    <skip />
+    <string name="notification_sound_dialog_title">"Seleccionar tonos de timbre de notificación"</string>
+    <!-- no translation found for media_volume_title (1693540506432790482) -->
+    <skip />
+    <!-- no translation found for media_volume_summary (7399719776785079493) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_title (5173416183471867551) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_on (7206798183944836534) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_off (1555390648905350809) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_title (1955885794556255214) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_on (1491009278452582375) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_off (1932117674347216086) -->
+    <skip />
+    <string name="sync_settings">"Sincronización"</string>
+    <!-- no translation found for sync_settings_summary (2105151329390814783) -->
+    <skip />
+    <!-- no translation found for sync_too_many_deletes (5404332736593108449) -->
+    <skip />
+    <!-- no translation found for sync_automatically (1757054007777364379) -->
+    <skip />
+    <string name="sync_enabled">"Sincronización con servidor Google habilitada"</string>
+    <string name="sync_disabled">"Desactivado"</string>
+    <string name="sync_menu_sync_now">"Sincronizar ahora"</string>
+    <string name="sync_menu_sync_cancel">"Cancelar sincronización"</string>
+    <string name="sync_gmail">"Gmail"</string>
+    <string name="sync_calendar">"Calendario"</string>
+    <string name="sync_contacts">"Contactos"</string>
+    <!-- no translation found for sync_too_many_deletes_desc (4152554451720380120) -->
+    <skip />
+    <!-- no translation found for sync_really_delete (8529530859370540061) -->
+    <skip />
+    <!-- no translation found for sync_undo_deletes (5506677219430968015) -->
+    <skip />
+    <!-- no translation found for sync_do_nothing (8346666920786786758) -->
+    <skip />
+    <!-- no translation found for sync_is_failing (427555999473172925) -->
+    <skip />
+    <!-- no translation found for sync_plug (7544937220884084907) -->
+    <skip />
+    <string name="display_settings">"Pantalla"</string>
+    <!-- no translation found for animations_title (8735876378664711924) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (4910047473170373768) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (7454248311417075336) -->
+    <skip />
+    <string name="brightness">"Brillo"</string>
+    <!-- no translation found for screen_timeout (8939204183998677539) -->
+    <skip />
+    <string name="dim_screen">"Oscurecer pantalla"</string>
+    <string name="sim_lock_settings">"Bloqueo de tarjeta SIM"</string>
+    <!-- no translation found for sim_lock_settings_category (5039441655358781230) -->
+    <skip />
+    <string name="sim_lock_settings_title">"Configuración de bloqueo de SIM"</string>
+    <string name="sim_pin_toggle">"Bloqueo de tarjeta SIM"</string>
+    <string name="sim_lock_on">"Bloqueo de tarjeta SIM activado"</string>
+    <string name="sim_lock_off">"Bloqueo de tarjeta SIM desactivado"</string>
+    <string name="sim_pin_change">"Cambiar código PIN"</string>
+    <string name="sim_enter_pin">"Introducir PIN de SIM"</string>
+    <string name="sim_enable_sim_lock">"Habilitar bloqueo de tarjeta SIM"</string>
+    <string name="sim_disable_sim_lock">"Deshabilitar bloqueo de tarjeta SIM"</string>
+    <string name="sim_enter_old">"Introducir PIN anterior"</string>
+    <string name="sim_enter_new">"Introducir nuevo PIN"</string>
+    <string name="sim_reenter_new">"Vuelva a introducir el nuevo PIN"</string>
+    <string name="sim_change_pin">"Cambiar PIN de SIM"</string>
+    <string name="sim_bad_pin">"Advertencia: PIN incorrecto"</string>
+    <string name="sim_pins_dont_match">"Advertencia: Los PIN no coinciden"</string>
+    <string name="sim_change_failed">"Fallo al cambiar PIN"\n"PIN posiblemente incorrecto"</string>
+    <string name="sim_change_succeeded">"PIN de SIM cambiado correctamente"</string>
+    <string name="sim_lock_failed">"Fallo al cambiar estado de bloqueo de la tarjeta SIM"\n"PIN posiblemente incorrecto"</string>
+    <string name="sim_enter_ok">"Aceptar"</string>
+    <string name="sim_enter_cancel">"Cancelar"</string>
+    <string name="device_info_settings">"Información del dispositivo"</string>
+    <!-- no translation found for system_update_settings_list_item_title (6730200310196695815) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_summary (6739352515982816664) -->
+    <skip />
+    <string name="firmware_version">"Versión de firmware"</string>
+    <!-- no translation found for model_number (4107796374489189882) -->
+    <skip />
+    <string name="baseband_version">"Versión de banda básica"</string>
+    <!-- no translation found for kernel_version (55378504731737055) -->
+    <skip />
+    <!-- no translation found for build_number (1198654854394859525) -->
+    <skip />
+    <!-- no translation found for device_info_not_available (6218382614449625943) -->
+    <skip />
+    <!-- no translation found for device_status_activity_title (7855799759928692423) -->
+    <skip />
+    <string name="device_status">"Estado"</string>
+    <string name="device_status_summary">"IMEI, número de teléfono, señal, etc."</string>
+    <!-- no translation found for storage_settings_title (7861753874184164833) -->
+    <skip />
+    <!-- no translation found for storage_settings_summary (1416818376253802300) -->
+    <skip />
+    <string name="status_number">"Número de teléfono"</string>
+    <string name="status_network_type">"Tipo de red"</string>
+    <string name="status_data_state">"Acceso a los datos"</string>
+    <string name="status_service_state">"Estado del servicio"</string>
+    <string name="status_signal_strength">"Intensidad de señal"</string>
+    <string name="status_roaming">"Itinerancia"</string>
+    <string name="status_operator">"Red"</string>
+    <!-- no translation found for status_wifi_mac_address (6992831729694423293) -->
+    <skip />
+    <!-- no translation found for status_bt_address (504373592762785867) -->
+    <skip />
+    <!-- no translation found for status_unavailable (6051510065892966154) -->
+    <skip />
+    <string name="status_up_time">"Tiempo de funcionamiento"</string>
+    <string name="status_awake_time">"Tiempo de actividad"</string>
+    <!-- no translation found for internal_memory (7561409402817962159) -->
+    <skip />
+    <!-- no translation found for sd_memory (1795406535114313767) -->
+    <skip />
+    <!-- no translation found for memory_available (2899158225295363424) -->
+    <skip />
+    <!-- no translation found for memory_size (427803224818498885) -->
+    <skip />
+    <!-- no translation found for sd_eject (5921913949386442101) -->
+    <skip />
+    <string name="sd_unavailable">"No disponible"</string>
+    <string name="read_only">" (Sólo lectura)"</string>
+    <!-- no translation found for battery_status_title (4908729478929871241) -->
+    <skip />
+    <!-- no translation found for battery_level_title (7696801820825704716) -->
+    <skip />
+    <string name="apn_settings">"APN"</string>
+    <string name="apn_edit">"Editar punto de acceso"</string>
+    <string name="apn_not_set">"&lt;No establecido&gt;"</string>
+    <string name="apn_name">"Nombre"</string>
+    <string name="apn_apn">"APN"</string>
+    <string name="apn_http_proxy">"Proxy"</string>
+    <string name="apn_http_port">"Puerto"</string>
+    <string name="apn_user">"Nombre de usuario"</string>
+    <string name="apn_password">"Contraseña"</string>
+    <string name="apn_server">"Servidor"</string>
+    <string name="apn_mmsc">"MMSC"</string>
+    <string name="apn_mms_proxy">"Proxy MMS"</string>
+    <string name="apn_mms_port">"Puerto MMS"</string>
+    <string name="apn_mcc">"MCC"</string>
+    <string name="apn_mnc">"MNC"</string>
+    <!-- no translation found for apn_type (2506383481268652319) -->
+    <skip />
+    <string name="menu_delete">"Eliminar APN"</string>
+    <string name="menu_new">"Nueva APN"</string>
+    <string name="menu_save">"Guardar"</string>
+    <string name="menu_cancel">"Rechazar"</string>
+    <string name="error_title">"Datos no válidos"</string>
+    <string name="error_name_empty">"El campo Nombre no puede estar vacío"</string>
+    <string name="error_apn_empty">"El Nombre de punto de acceso no puede estar vacío"</string>
+    <string name="error_mcc_not3">"El campo MCC debe tener 3 dígitos"</string>
+    <string name="error_mnc_not23">"El campo MCC debe tener 2 ó 3 dígitos"</string>
+    <string name="master_clear_title">"Borrado maestro"</string>
+    <!-- no translation found for master_clear_summary (2468534382451112879) -->
+    <skip />
+    <string name="master_clear_desc">"Restablece el dispositivo al estado inicial de fábrica, borrando todos los datos y aplicaciones descargadas"</string>
+    <string name="master_clear_button_text">"Restablecer dispositivo"</string>
+    <string name="master_clear_final_desc">"¿Restablecer dispositivo borrando todos sus datos y aplicaciones? ¡La acción no se puede deshacer!"</string>
+    <string name="master_clear_final_button_text">"Borrar todo"</string>
+    <string name="master_clear_gesture_prompt">"Trace su patrón de bloqueo"</string>
+    <string name="master_clear_gesture_explanation">"Debe trazar su patrón de bloqueo para confirmar el restablecimiento del dispositivo"</string>
+    <string name="master_clear_failed">"No se ha realizado ningún restablecimiento porque el servicio System Clear no está disponible"</string>
+    <string name="call_settings_title">"Configuración de llamada"</string>
+    <!-- no translation found for call_settings_summary (3446216896482844237) -->
+    <skip />
+    <string name="network_settings_title">"Configuración de red"</string>
+    <!-- no translation found for network_settings_summary (8031949240036716110) -->
+    <skip />
+    <!-- no translation found for location_title (4501749309437121375) -->
+    <skip />
+    <string name="location_network_based">"Basado en red"</string>
+    <!-- no translation found for location_networks_disabled (7048471014395968941) -->
+    <skip />
+    <string name="location_neighborhood_level">"Precisión hasta el nivel de barrio"</string>
+    <string name="location_gps">"Basado en GPS"</string>
+    <string name="location_street_level">"Precisión hasta el nivel de calle"</string>
+    <!-- no translation found for location_gps_disabled (4004885356658024277) -->
+    <skip />
+    <!-- no translation found for about_settings (1468182090257585152) -->
+    <skip />
+    <!-- no translation found for about_settings_summary (7669309646592260587) -->
+    <skip />
+    <!-- no translation found for legal_information (6712607847710471677) -->
+    <skip />
+    <!-- no translation found for contributors_title (4798193298012318879) -->
+    <skip />
+    <!-- no translation found for copyright_title (2179228277436615247) -->
+    <skip />
+    <!-- no translation found for license_title (819526735187376873) -->
+    <skip />
+    <!-- no translation found for terms_title (7807601861320706623) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_title (7912723098716795094) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_unavailable (2081311778550755077) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_loading (1663818560123999889) -->
+    <skip />
+    <string name="lock_settings_title">"Gesto de bloqueo"</string>
+    <string name="lockpattern_change_lock_pattern_label">"Cambiar patrón de bloqueo"</string>
+    <string name="lockpattern_need_to_unlock">"Confirmar patrón guardado:"</string>
+    <string name="lockpattern_need_to_unlock_wrong">"¡Incorrecto! Inténtelo de nuevo:"</string>
+    <string name="lockpattern_recording_intro_header">"Trace un patrón que desee usar como bloqueo:"</string>
+    <string name="lockpattern_recording_intro_footer">"Pulse Menú para obtener ayuda"</string>
+    <string name="lockpattern_recording_inprogress">"Suelte el dedo cuando haya terminado"</string>
+    <!-- no translation found for lockpattern_recording_incorrect_too_short (8234374450664107990) -->
+    <skip />
+    <string name="lockpattern_pattern_entered_header">"Ha seleccionado:"</string>
+    <!-- no translation found for lockpattern_need_to_confirm (6414172006294337771) -->
+    <skip />
+    <string name="lockpattern_pattern_confirmed_header">"Su nuevo patrón de bloqueo:"</string>
+    <string name="lockpattern_confirm_button_text">"Confirmar"</string>
+    <string name="lockpattern_restart_button_text">"Reinicio"</string>
+    <!-- no translation found for lockpattern_retry_button_text (7695474740059017745) -->
+    <skip />
+    <!-- no translation found for lockpattern_continue_button_text (1077275957953266837) -->
+    <skip />
+    <string name="lockpattern_settings_title">"Gesto de bloqueo"</string>
+    <string name="lockpattern_settings_enable_title">"Gesto de bloqueo"</string>
+    <string name="lockpattern_settings_enable_summary">"Se necesita gesto para bloquear"</string>
+    <string name="lockpattern_settings_enable_visible_pattern_title">"Usar patrón visible"</string>
+    <string name="lockpattern_settings_choose_lock_pattern">"Seleccionar gesto de bloqueo"</string>
+    <string name="lockpattern_settings_change_lock_pattern">"Cambiar gesto de bloqueo"</string>
+    <string name="lockpattern_settings_help_how_to_record">"Cómo grabar un patrón de bloqueo"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_header">"Demasiados intentos de confirmación incorrectos"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_footer">"Inténtelo de nuevo en <xliff:g id="NUMBER">%d</xliff:g> segundos"</string>
+    <!-- no translation found for skip_button_label (4850708311344393218) -->
+    <skip />
+    <!-- no translation found for next_button_label (3149701380025478958) -->
+    <skip />
+    <!-- no translation found for lock_title (999106562425756837) -->
+    <skip />
+    <!-- no translation found for lock_intro_message (2382351248538397170) -->
+    <skip />
+    <!-- no translation found for lock_example_title (6261868148302088973) -->
+    <skip />
+    <!-- no translation found for lock_example_message (2583534765034914458) -->
+    <skip />
+    <!-- no translation found for manageapplications_settings_title (3359899792647354589) -->
+    <skip />
+    <!-- no translation found for applications_settings (6104314134883460574) -->
+    <skip />
+    <!-- no translation found for applications_settings_summary (7666960391957493763) -->
+    <skip />
+    <!-- no translation found for applications_settings_header (6167136604757235210) -->
+    <skip />
+    <!-- no translation found for install_applications (8586540661161378543) -->
+    <skip />
+    <!-- no translation found for install_unknown_applications (8694019339326383901) -->
+    <skip />
+    <!-- no translation found for install_all_warning (5826871395153503952) -->
+    <skip />
+    <!-- no translation found for manage_applications_title (8288310040777485758) -->
+    <skip />
+    <!-- no translation found for application_info_label (605192869687093760) -->
+    <skip />
+    <!-- no translation found for storage_label (8765276782501761971) -->
+    <skip />
+    <!-- no translation found for auto_launch_label (3546876666453498673) -->
+    <skip />
+    <!-- no translation found for permissions_label (3244346920180368862) -->
+    <skip />
+    <!-- no translation found for total_size_label (5016115699600749568) -->
+    <skip />
+    <!-- no translation found for application_size_label (5378963933449396413) -->
+    <skip />
+    <!-- no translation found for data_size_label (6038126657652457179) -->
+    <skip />
+    <!-- no translation found for uninstall_text (2322009518449651787) -->
+    <skip />
+    <!-- no translation found for clear_user_data_text (3586758620250813061) -->
+    <skip />
+    <!-- no translation found for auto_launch_enable_text (8228619838865933982) -->
+    <skip />
+    <!-- no translation found for auto_launch_disable_text (4696687016762486484) -->
+    <skip />
+    <!-- no translation found for clear_activities (2399981667625036009) -->
+    <skip />
+    <!-- no translation found for unknown (7966307317466394761) -->
+    <skip />
+    <!-- no translation found for sort_order_alpha (210746743398042077) -->
+    <skip />
+    <!-- no translation found for sort_order_size (2716777274377923612) -->
+    <skip />
+    <!-- no translation found for manage_space_text (3118726017144542336) -->
+    <skip />
+    <!-- no translation found for filter_apps_all (5819127882791374920) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (8693065498520334174) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (2019159142681656258) -->
+    <skip />
+    <!-- no translation found for loading (5170696093820794830) -->
+    <skip />
+    <!-- no translation found for recompute_size (8376294373548662083) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_title (2115093619616088799) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_text (3004273956481932846) -->
+    <skip />
+    <!-- no translation found for dlg_ok (2225130755859653348) -->
+    <skip />
+    <!-- no translation found for dlg_cancel (8597172015374919396) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_title (6649900521951617898) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_text (6893475426667174751) -->
+    <skip />
+    <!-- no translation found for clear_data_failed (3040984234884359027) -->
+    <skip />
+    <!-- no translation found for security_settings_desc (5898339748632998613) -->
+    <skip />
+    <!-- no translation found for default_app_desc (3475613003133497043) -->
+    <skip />
+    <!-- no translation found for computing_size (7350089935999085554) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (3054945647487201471) -->
+    <skip />
+    <!-- no translation found for language_settings (7247557040404006341) -->
+    <skip />
+    <!-- no translation found for language_settings_summary (721948806318958691) -->
+    <skip />
+    <!-- no translation found for language_category (6646529166552376418) -->
+    <skip />
+    <!-- no translation found for text_category (3133311779500246731) -->
+    <skip />
+    <!-- no translation found for phone_language (4084332836028530631) -->
+    <skip />
+    <!-- no translation found for auto_replace (6134508433464846627) -->
+    <skip />
+    <!-- no translation found for auto_replace_summary (1016177921245107750) -->
+    <skip />
+    <!-- no translation found for auto_caps (6021984352657087728) -->
+    <skip />
+    <!-- no translation found for auto_caps_summary (4783973594319542220) -->
+    <skip />
+    <!-- no translation found for auto_punctuate (2819742922158924703) -->
+    <skip />
+    <!-- no translation found for auto_punctuate_summary (2664143621323054924) -->
+    <skip />
+    <!-- no translation found for show_password (2353636034424349266) -->
+    <skip />
+    <!-- no translation found for show_password_summary (3920555488855590831) -->
+    <skip />
+    <!-- no translation found for testing (555268605244514909) -->
+    <skip />
+    <!-- no translation found for testing_phone_info (8718517606602144606) -->
+    <skip />
+    <!-- no translation found for testing_battery_info (3826036256683980425) -->
+    <skip />
+    <!-- no translation found for quick_launch_title (5423323579273213815) -->
+    <skip />
+    <!-- no translation found for quick_launch_summary (1272194567210324017) -->
+    <skip />
+    <!-- no translation found for quick_launch_assign_application (5949445664563354321) -->
+    <skip />
+    <!-- no translation found for quick_launch_no_shortcut (5958195604101558965) -->
+    <skip />
+    <!-- no translation found for quick_launch_shortcut (1115195051591830635) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_title (5217130241215296612) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_message (3420665419624963430) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_ok_button (2442832413597511429) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_cancel_button (1437354385792055993) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_applications (6570683843184675363) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_shortcuts (6642750364678074004) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_title (1752662012056721926) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (5481367119142131313) -->
+    <skip />
+    <!-- no translation found for development_settings_title (4671731485005432632) -->
+    <skip />
+    <!-- no translation found for development_settings_summary (5518361138194831299) -->
+    <skip />
+    <!-- no translation found for enable_adb (7770070343289262572) -->
+    <skip />
+    <!-- no translation found for enable_adb_summary (1498997582065835981) -->
+    <skip />
+    <!-- no translation found for keep_screen_on (5805533478834516956) -->
+    <skip />
+    <!-- no translation found for keep_screen_on_summary (5703353541069794974) -->
+    <skip />
+    <!-- no translation found for allow_mock_location (6204808904743157937) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (3154837501223277592) -->
+    <skip />
 </resources>
diff --git a/res/values-fr-rFR/strings.xml b/res/values-fr-rFR/strings.xml
deleted file mode 100644
index 2c86e80..0000000
--- a/res/values-fr-rFR/strings.xml
+++ /dev/null
@@ -1,700 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="about_settings">À propos du téléphone</string>
-  <string name="about_settings_summary">Afficher les infos légales, l\'état du téléphone, la version logicielle</string>
-  <string name="activity_picker_label">Sélectionner l\'activité</string>
-  <string name="airplane_mode">Mode Avion</string>
-  <string name="airplane_mode_summary">Sélectionner pour désactiver toutes connexions sans fil</string>
-  <string name="airplane_mode_turning_off">Activation des connexions sans fil\u2026</string>
-  <string name="airplane_mode_turning_on">Désactivation des connexions sans fil\u2026</string>
-  <string name="android_id_label">ID Android</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Modifier le point d\'accès</string>
-  <string name="apn_http_port">Port</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">Port MMS</string>
-  <string name="apn_mms_proxy">Proxy MMS</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Nom</string>
-  <string name="apn_not_set">&lt;Non défini&gt;</string>
-  <string name="apn_password">Mot de passe</string>
-  <string name="apn_server">Serveur</string>
-  <string name="apn_settings">APN</string>
-  <string name="apn_type">Type APN</string>
-  <string name="apn_user">Nom d\'utilisateur</string>
-  <string name="app_launcher_newView_text">Lanceur nouv.app</string>
-  <string name="app_not_found_dlg_text"> L\'application n\'a pas été
-trouvée dans la liste des applications installées.</string>
-  <string name="app_not_found_dlg_title">Application non trouvée</string>
-  <string name="application_info_label">Infos d\'application</string>
-  <string name="application_size_label">Application</string>
-  <string name="applications_settings">Applications</string>
-  <string name="applications_settings_header">Paramètres d\'application</string>
-  <string name="applications_settings_summary">Gérer les applications, configurer des raccourcis de lancement rapide</string>
-  <string name="auto_caps">Auto-maj</string>
-  <string name="auto_caps_summary">Première lettre des phrases en majuscule</string>
-  <string name="auto_launch_disable_text">Aucune valeur par défaut définie.</string>
-  <string name="auto_launch_enable_text">Vous avez choisi de lancer cette application par défaut pour certaines actions.</string>
-  <string name="auto_launch_label">Lancer par défaut</string>
-  <string name="auto_punctuate">Auto-ponctuation</string>
-  <string name="auto_punctuate_summary">Appuyez la touche Espace deux fois pour insérer \u0022.\u0022</string>
-  <string name="auto_replace">Auto-remplacer</string>
-  <string name="auto_replace_summary">Corriger les mots avec faute de frappe</string>
-  <string name="autorotate">Auto-pivoter</string>
-  <string name="autorotate_summary_off">Le changement de l\'orientation de l\'écran ne fait pas pivoter l\'application</string>
-  <string name="autorotate_summary_on">Le changement de l\'orientation de l\'écran fait pivoter l\'application</string>
-  <string name="b_text">B</string>
-  <string name="band_mode_failed">Échec</string>
-  <string name="band_mode_loading">Chargement de la liste de bandes\u2026</string>
-  <string name="band_mode_set">Définir</string>
-  <string name="band_mode_succeeded">Réussi</string>
-  <string name="band_mode_title">Définir la bande GSM/UMTS</string>
-  <string name="baseband_version">Version bande de base</string>
-  <string name="basic_settings_title">Infos de base du téléphone</string>
-  <string name="battery_info_awake_battery">Heures de réveil sur batterie :</string>
-  <string name="battery_info_awake_plugged">Heures de réveil en charge :</string>
-  <string name="battery_info_health_dead">Mort</string>
-  <string name="battery_info_health_good">Bonne</string>
-  <string name="battery_info_health_label">Santé de la batterie :</string>
-  <string name="battery_info_health_over_voltage">Surtension</string>
-  <string name="battery_info_health_overheat">Surchauffe</string>
-  <string name="battery_info_health_unknown">Inconnu</string>
-  <string name="battery_info_health_unspecified_failure">Erreur inconnue</string>
-  <string name="battery_info_label">Infos de la batterie</string>
-  <string name="battery_info_level_label">Niveau de la batterie :</string>
-  <string name="battery_info_scale_label">Échelle de la batterie :</string>
-  <string name="battery_info_screen_on">Durée d\'écran allumé :</string>
-  <string name="battery_info_status_charging">Chargement</string>
-  <string name="battery_info_status_charging_ac">(Secteur)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">Déchargement</string>
-  <string name="battery_info_status_full">Pleine</string>
-  <string name="battery_info_status_label">État de la batterie :</string>
-  <string name="battery_info_status_not_charging">Pas en charge</string>
-  <string name="battery_info_status_unknown">Inconnu</string>
-  <string name="battery_info_technology_label">Technologie de la batterie :</string>
-  <string name="battery_info_temperature_label">Température de la batterie :</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_uptime">Durée depuis l\'amorçage :</string>
-  <string name="battery_info_voltage_label">Tension de la batterie :</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="battery_level_title">Niveau de la batterie</string>
-  <string name="battery_status_title">État de la batterie</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Effacer la liste d\'appareil</string>
-  <string name="bluetooth_connect">Connecter</string>
-  <string name="bluetooth_connectable">Connectable seulement</string>
-  <string name="bluetooth_connected">Connecté</string>
-  <string name="bluetooth_connecting">Connexion\u2026</string>
-  <string name="bluetooth_device">mains-libres/casque</string>
-  <string name="bluetooth_device_info">Infos d\'appareil Bluetooth</string>
-  <string name="bluetooth_device_info_alias">Alias d\'appareil</string>
-  <string name="bluetooth_device_info_delete">Retirer cet appareil</string>
-  <string name="bluetooth_device_info_no_alias">Saisissez l\'alias ici\u2026</string>
-  <string name="bluetooth_device_info_sdp">Lister les services pris en charge</string>
-  <string name="bluetooth_device_name">Nom d\'appareil</string>
-  <string name="bluetooth_devices">Appareils Bluetooth</string>
-  <string name="bluetooth_disabled">Sélectionner d\'activer Bluetooth</string>
-  <string name="bluetooth_disconnect">Déconnecter</string>
-  <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> sera déconnecté</string>
-  <string name="bluetooth_discoverability_panel_title">Me rendre\u2026</string>
-  <string name="bluetooth_discoverable">Découvrable pendant %1$s secondes</string>
-  <string name="bluetooth_enable_text">Bouton vide\u2026</string>
-  <string name="bluetooth_enabled">Sélectionner d\'activer Bluetooth</string>
-  <string name="bluetooth_enabling">Activation de Bluetooth\u2026</string>
-  <string name="bluetooth_enter_pin_msg">Saisir le code PIN pour\u0020</string>
-  <string name="bluetooth_failed_to_enable">Impossible d\'activer Bluetooth</string>
-  <string name="bluetooth_is_discoverable">Découvrable pendant %1$s secondes\u2026</string>
-  <string name="bluetooth_name_not_set">Pas de nom défini, utilise le nom de compte</string>
-  <string name="bluetooth_neither">Pas découvrable et pas connectable</string>
-  <string name="bluetooth_new_data">Saisir nouvelles données</string>
-  <string name="bluetooth_new_data_cancel">Annuler</string>
-  <string name="bluetooth_new_data_confirm">OK</string>
-  <string name="bluetooth_not_connected">Lier avec cet appareil</string>
-  <string name="bluetooth_not_discoverable">Sélectionner pour rendre l\'appareil découvrable</string>
-  <string name="bluetooth_notif_message">Sélectionner de lier avec\u0020</string>
-  <string name="bluetooth_notif_ticker">Liaison Bluetooth demandée</string>
-  <string name="bluetooth_notif_title">Liaison Bluetooth demandée</string>
-  <string name="bluetooth_pair">Lier</string>
-  <string name="bluetooth_paired">Lié</string>
-  <string name="bluetooth_paired_not_nearby">Lié</string>
-  <string name="bluetooth_pairing">Liaison\u2026</string>
-  <string name="bluetooth_pairing_msg">Liaison\u2026</string>
-  <string name="bluetooth_pin_entry">Entrée de code PIN Bluetooth</string>
-  <string name="bluetooth_quick_toggle_summary">Sélectionner d\'activer Bluetooth</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Rechercher les appareils</string>
-  <string name="bluetooth_scan_for_new_devices">Recherche de nouveaux appareils\u2026</string>
-  <string name="bluetooth_scan_text">Bouton vide\u2026</string>
-  <string name="bluetooth_settings">Paramètres Bluetooth</string>
-  <string name="bluetooth_settings_summary">Gérer les connexions, définir le nom d\'appareil et la découvrabilité</string>
-  <string name="bluetooth_settings_text">Bouton vide\u2026</string>
-  <string name="bluetooth_settings_title">Paramètres Bluetooth</string>
-  <string name="bluetooth_starting">Démarrage Bluetooth\u2026</string>
-  <string name="bluetooth_stopping">Arrêt Bluetooth\u2026</string>
-  <string name="bluetooth_unknown">Inconnu</string>
-  <string name="bluetooth_unpair">Délier</string>
-  <string name="bluetooth_visibility">Découvrable</string>
-  <string name="bootloader_version">Version de chargeur d\'amorçage</string>
-  <string name="brightness">Luminosité</string>
-  <string name="build_date_label">Date de Build</string>
-  <string name="build_description_label">Description de Build</string>
-  <string name="build_host_label">Hôte de Build</string>
-  <string name="build_id_label">ID Build</string>
-  <string name="build_number">Numéro de Build</string>
-  <string name="build_type_label">Type de Build</string>
-  <string name="build_user_label">Utilisateur de Build</string>
-  <string name="call_settings_summary">Configurer la messagerie vocale, le transfert d\'appel, le signal d\'appel, l\'identification de l\'appelant</string>
-  <string name="call_settings_title">Paramètres d\'appel</string>
-  <string name="cancel">Annuler</string>
-  <string name="checkin_button_label">Rechercher les mises à niveau</string>
-  <string name="checkin_download_failed">Échec</string>
-  <string name="checkin_download_label">État de téléchargement</string>
-  <string name="checkin_download_ongoing">Téléchargement en cours</string>
-  <string name="checkin_download_pending">En attente</string>
-  <string name="checkin_download_succeeded">Terminé</string>
-  <string name="checkin_download_suspended">Suspendu</string>
-  <string name="checkin_download_unknown">État inconnu</string>
-  <string name="checkin_failures_label">Échecs depuis le dernier succès</string>
-  <string name="checkin_last_time_label">Dernière vérification réussie</string>
-  <string name="checkin_started_message">Vérification démarrée\u2026</string>
-  <string name="checkin_status_label">État de vérification</string>
-  <string name="checkin_time_never">(jamais)</string>
-  <string name="checkin_upgrade_label">Mise à niveau en attente</string>
-  <string name="choose_timezone">Sélectionner le fuseau horaire</string>
-  <string name="choose_timezone_region">Sélectionner la région</string>
-  <string name="clear_activities">Effacer les valeurs par défaut</string>
-  <string name="clear_data_dlg_text">Toutes les informations enregistrées dans cette application seront supprimées de manière permanente.</string>
-  <string name="clear_data_dlg_title">Supprimer</string>
-  <string name="clear_data_failed">Impossible d\'effacer les données de l\'application.</string>
-  <string name="clear_user_data_text">Effacer les données</string>
-  <string name="computing_size">Calcul des tailles de l\'application\u2026</string>
-  <string name="connect">Connecter</string>
-  <string name="connect_to_blank">Connecter à <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="contributors_title">Contributeurs</string>
-  <string name="copyright_title">Copyright</string>
-  <string name="data_settings">Paramètres des données</string>
-  <string name="data_settings_summary">Stockage du téléphone et carte SD, synchronisation des données</string>
-  <string name="data_settings_title">Données</string>
-  <string name="data_size_label">Données</string>
-  <string name="date_and_time">Paramètres de date et heure</string>
-  <string name="date_and_time_settings_summary">Définir la date, l\'heure, le fuseau horaire et les formats</string>
-  <string name="date_and_time_settings_title">Date et heure</string>
-  <string name="date_time_24hour">Utiliser le format 24 heures</string>
-  <string name="date_time_auto">Automatique</string>
-  <string name="date_time_auto_summaryOff">Utiliser les valeurs fournies par le réseau</string>
-  <string name="date_time_auto_summaryOn">Utiliser les valeurs fournies par le réseau</string>
-  <string name="date_time_changeDate_text">Modifier la date</string>
-  <string name="date_time_changeTime_text">Modifier l\'heure</string>
-  <string name="date_time_dateDisplay_text">3 nov. 1997</string>
-  <string name="date_time_date_format">Sélectionner le format de la date</string>
-  <string name="date_time_set_date">Définir la date</string>
-  <string name="date_time_set_time">Définir l\'heure</string>
-  <string name="date_time_set_timezone">Définir le fuseau horaire</string>
-  <string name="date_time_setzone_text">Modifier le fuseau horaire</string>
-  <string name="date_time_timeDisplay_text">11:45 AM</string>
-  <string name="date_time_timezone_label">Fuseau horaire :</string>
-  <string name="debug_intent_sender_label">Déboguer l\'expéditeur d\'intention</string>
-  <string name="default_date_format">MM/jj/aaaa</string>
-  <string name="default_keyboard_device_label">Clavier par défaut</string>
-  <string name="development_settings_summary">Paramètres pour le développement d\'application</string>
-  <string name="development_settings_title">Développement</string>
-  <string name="device_info_asleeptime">Heures de veille</string>
-  <string name="device_info_awaketime">Heures de réveil</string>
-  <string name="device_info_default">Inconnu</string>
-  <string name="device_info_label">Infos d\'appareil</string>
-  <string name="device_info_not_available">indisponible</string>
-  <string name="device_info_settings">État du téléphone</string>
-  <string name="device_info_uptime">Temps productif</string>
-  <string name="device_status">État</string>
-  <string name="device_status_summary">IMEI, numéro de téléphone, signal, etc.</string>
-  <string name="dim_screen">Assombrir l\'écran</string>
-  <string name="disconnect_ums">Déconnecter le stockage de masse USB</string>
-  <string name="display_font_size_label">Taille de police :</string>
-  <string name="display_label">Affichage</string>
-  <string name="display_preview_label">Aperçu :</string>
-  <string name="display_settings">Paramètres d\'affichage</string>
-  <string name="dlg_cancel">Annuler</string>
-  <string name="dlg_ok">OK</string>
-  <string name="done">OK</string>
-  <string name="dtmf_tone_enable_summary_off">Émettre les tonalités lors de l\'utilisation du pavé de numérotation</string>
-  <string name="dtmf_tone_enable_summary_on">Émettre les tonalités lors de l\'utilisation du pavé de numérotation</string>
-  <string name="dtmf_tone_enable_title">Tonalités de touches audibles</string>
-  <string name="enable_adb">Débogage USB</string>
-  <string name="enable_adb_summary">Mode de débogage lors la connexion USB</string>
-  <string name="error_apn_empty">Le champ APN ne peut pas être vide.</string>
-  <string name="error_connecting">Impossible de connecter au réseau.</string>
-  <string name="error_mcc_not3">Le champ MCC doit avoir 3 chiffres.</string>
-  <string name="error_mnc_not23">Le champ MNC avoir 2 ou 3 chiffres.</string>
-  <string name="error_name_empty">Le champ Nom ne peut pas être vide.</string>
-  <string name="error_saving">Impossible d\'enregistrer le réseau</string>
-  <string name="error_scanning">Impossible de rechercher les réseaux</string>
-  <string name="error_starting">Impossible de démarrer Wi-Fi</string>
-  <string name="error_stopping">Impossible d\'arrêter Wi-Fi</string>
-  <string name="error_title">Attention</string>
-  <string name="failed_to_connect">Impossible de connecter à <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="failed_to_pair">Impossible de lier avec <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="favorites_label">Favoris</string>
-  <string name="firmware_version">Version de microprogramme</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">OK</string>
-  <string name="forget_network">Oublier</string>
-  <string name="fragment_status_authenticating">Authentification avec <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_connected">Connecté à <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="fragment_status_connecting">Connexion à <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_disconnected">Déconnecté</string>
-  <string name="fragment_status_disconnecting">Déconnexion de <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_failed">Échec</string>
-  <string name="fragment_status_obtaining_ip">Obtention de l\'adresse IP de <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_scanning">Recherche\u2026</string>
-  <string name="gsm_version_baseband_label">Version bande de base</string>
-  <string name="gsm_version_ril_impl_label">Version Impl RIL</string>
-  <string name="install_all_warning">Votre téléphone et données personnelles sont plus vulnérable aux attaques
- des applications de sources inconnues. Vous acceptez être entièrement
- responsable de tout dommage à votre téléphone ou perte de données
- qui peuvent résulter de l\'utilisation de ces applications.</string>
-  <string name="install_applications">Sources inconnues</string>
-  <string name="install_unknown_applications">Permettre l\'installation d\'applications non-Market</string>
-  <string name="intent_sender_account_label">Compte : </string>
-  <string name="intent_sender_action_label">Action :</string>
-  <string name="intent_sender_data_label">Données :</string>
-  <string name="intent_sender_resource_label">Ressource : </string>
-  <string name="intent_sender_sendbroadcast_text">Envoyer la diffusion</string>
-  <string name="intent_sender_startactivity_text">Démarrer l\'activité</string>
-  <string name="internal_memory">Stockage interne du téléphone</string>
-  <string name="ip_address">Adresse IP</string>
-  <string name="kb_text">Ko</string>
-  <string name="keep_screen_on">Rester réveillé</string>
-  <string name="keep_screen_on_summary">L\'écran n\'entrera jamais en veille pendant la charge</string>
-  <string name="kernel_version">Version de kernel</string>
-  <string name="kernel_version_label">Version de kernel Linux</string>
-  <string name="keyguard_label">Garde-touches</string>
-  <string name="keyguard_password_button_text">OK</string>
-  <string name="keyguard_password_confirm_new_label">Confirmer nouveau mot de passe :</string>
-  <string name="keyguard_password_mismatch_error_text">Les deux mots de passe ne correspondent pas. Veuillez les saisir à nouveau.</string>
-  <string name="keyguard_password_new_label">Nouveau mot de passe :</string>
-  <string name="keyguard_password_old_label">Ancien mot de passe :</string>
-  <string name="keyguard_password_old_password_error_text">L\'ancien code mot de passe saisi est incorrect. Veuillez réessayer.</string>
-  <string name="keyguard_pin_mod_text">Modifier le code PIN</string>
-  <string name="keyguard_pw_mod_text">Sélectionner le motif de verrouillage</string>
-  <string name="keyguard_sim_pin_label">PIN SIM</string>
-  <string name="language_category">Paramètre de langue</string>
-  <string name="language_picker_title">Paramètres régionaux</string>
-  <string name="language_settings">Texte</string>
-  <string name="language_settings_summary">Sélectionner les options d\'autocorrection du texte</string>
-  <string name="large_font">Grande</string>
-  <string name="legal_information">Informations légales</string>
-  <string name="legal_information_summary">Afficher les termes et conditions</string>
-  <string name="license_title">Licence</string>
-  <string name="location_gps">Activer les satellites GPS</string>
-  <string name="location_gps_disabled">Localiser à la rue prêt (nécessite plus de batterie et une vue du ciel)</string>
-  <string name="location_label">Fournisseur de localisation :</string>
-  <string name="location_neighborhood_level">Localisation déterminée par réseaux Wi-Fi et/ou mobiles</string>
-  <string name="location_network_based">Utiliser les réseaux sans fil</string>
-  <string name="location_networks_disabled">Voir la localisation dans les applications (telles que Maps) en utilisant les réseaux sans fil</string>
-  <string name="location_source">Ma localisation</string>
-  <string name="location_source_summary">Sélectionner les sources pour déterminer la localisation</string>
-  <string name="location_status">État :</string>
-  <string name="location_street_level">En localisation, précise à la rue prêt (désélectionner pour économiser la batterie)</string>
-  <string name="location_title">Sources de Ma localisation</string>
-  <string name="lock_example_message">Connectez au moins quatre points.\n
-        \nSélectionnez \"Suivant\" lorsque vous êtes prêt à dessiner votre propre motif.
-    </string>
-  <string name="lock_example_title">Exemple de motif</string>
-  <string name="lock_settings_title">Motif de déverrouillage de l\'écran</string>
-  <string name="lock_title">Sécurisation de votre téléphone</string>
-  <string name="lockpattern_change_lock_pattern_label">Modifier le motif de déverrouillage</string>
-  <string name="lockpattern_confirm_button_text">Confirmer</string>
-  <string name="lockpattern_continue_button_text">Continuer</string>
-  <string name="lockpattern_need_to_confirm">Dessiner le motif à nouveau pour confirmer :</string>
-  <string name="lockpattern_need_to_unlock">Confirmer le motif enregistré :</string>
-  <string name="lockpattern_need_to_unlock_wrong">Désolé, réessayez :</string>
-  <string name="lockpattern_pattern_confirmed_header">Votre nouveau motif de déverrouillage :</string>
-  <string name="lockpattern_pattern_entered_header">Motif enregistré !</string>
-  <string name="lockpattern_recording_incorrect_too_short">Connectez au moins <xliff:g id="number">%d</xliff:g> points. Réessayez :</string>
-  <string name="lockpattern_recording_inprogress">Relâchez le doigt quand terminé.</string>
-  <string name="lockpattern_recording_intro_footer">Appuyez Menu pour de l\'aide.</string>
-  <string name="lockpattern_recording_intro_header">Dessinez un motif de déverrouillage :</string>
-  <string name="lockpattern_restart_button_text">Redessiner</string>
-  <string name="lockpattern_retry_button_text">Réessayer</string>
-  <string name="lockpattern_settings_change_lock_pattern">Modifier le motif de déverrouillage</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Définir le motif de verrouillage</string>
-  <string name="lockpattern_settings_enable_summary">Dessin obligatoire du motif pour déverrouiller l\'écran</string>
-  <string name="lockpattern_settings_enable_title">Motif requis</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Utiliser un motif visible</string>
-  <string name="lockpattern_settings_help_how_to_record">Comment dessiner un motif de déverrouillage :</string>
-  <string name="lockpattern_settings_title">Motif de déverrouillage</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Réessayez dans <xliff:g id="number">%d</xliff:g> secondes.</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">Trop de tentatives incorrectes.</string>
-  <string name="manage_applications_title">Gérer les applications</string>
-  <string name="manage_space_text">Gérer l\'espace</string>
-  <string name="manageapplications_settings_title">Gérer les applications</string>
-  <string name="mass_storage">Utiliser pour le stockage USB</string>
-  <string name="master_clear_button_text">Réinitialiser le téléphone</string>
-  <string name="master_clear_desc">Cette action réinitialisera le téléphone à son état initial de l\'usine, effaçant toutes les données et applications téléchargées !</string>
-  <string name="master_clear_failed">Aucune réinitialisation effectuée car le service Système effacé n\'est pas disponible.</string>
-  <string name="master_clear_final_button_text">Effacer tout</string>
-  <string name="master_clear_final_desc">Réinitialiser le téléphone, effaçant toutes vos données et applications ? L\'action ne peut pas être inversée !</string>
-  <string name="master_clear_gesture_explanation">Vous devez dessiner votre motif de déverrouillage pour confirmer la réinitialisation du téléphone.</string>
-  <string name="master_clear_gesture_prompt">Veuillez dessiner votre motif de déverrouillage :</string>
-  <string name="master_clear_summary">Efface toutes les données sur le téléphone</string>
-  <string name="master_clear_title">Réinitialisation aux données d\'usine</string>
-  <string name="mb_text">Mo</string>
-  <string name="media_volume_summary">Définir le volume pour la musique et les vidéos</string>
-  <string name="media_volume_title">Volume média</string>
-  <string name="medium_font">Moyen</string>
-  <string name="memory_available">Espace disponible</string>
-  <string name="memory_size">Espace total</string>
-  <string name="menu_cancel">Abandonner</string>
-  <string name="menu_delete">Supprimer APN</string>
-  <string name="menu_new">Nouvel APN</string>
-  <string name="menu_save">Enregistrer</string>
-  <string name="model_number">Numéro de modèle</string>
-  <string name="network_settings_summary">Définir les options pour l\'itinérance, les réseaux, les APN</string>
-  <string name="network_settings_title">Réseaux mobiles</string>
-  <string name="networks">Sélection de l\'opérateur</string>
-  <string name="networks_title">Paramètres réseau</string>
-  <string name="next_button_label">Suivant</string>
-  <string name="next_label">Suivant</string>
-  <string name="notification_sound_dialog_title">Sélectionner la sonnerie de notification</string>
-  <string name="notification_sound_summary">Définir votre sonnerie de notification par défaut</string>
-  <string name="notification_sound_title">Sonnerie de notification</string>
-  <string name="permissions_label">Permissions</string>
-  <string name="phone_info_label">Infos téléphone</string>
-  <string name="phone_language">Sélectionner la langue</string>
-  <string name="ping_test_label">Exécuter test ping</string>
-  <string name="please_type_hex_key">Clé hex WEP (0-9, A-F)</string>
-  <string name="please_type_passphrase">Mot de passe sans fil</string>
-  <string name="product_brand_label">Marque de produit</string>
-  <string name="product_device_label">Type de téléphone</string>
-  <string name="progress_scanning">Recherche</string>
-  <string name="proxy_action_text">Enregistrer</string>
-  <string name="proxy_clear_text">Effacer</string>
-  <string name="proxy_defaultView_text">Restaurer les valeurs par défaut</string>
-  <string name="proxy_error">Attention</string>
-  <string name="proxy_error_dismiss">OK</string>
-  <string name="proxy_error_empty_host_set_port">Le champ de port doit être vide si le champ d\'hôte est vide.</string>
-  <string name="proxy_error_empty_port">Vous devez compléter le champ de port.</string>
-  <string name="proxy_error_invalid_host">Le nom d\'hôte saisi n\'est pas valide.</string>
-  <string name="proxy_error_invalid_port">Le port saisi n\'est pas valide.</string>
-  <string name="proxy_hostname_label">Nom d\'hôte</string>
-  <string name="proxy_port_label">Port</string>
-  <string name="proxy_settings_label">Paramètres de proxy</string>
-  <string name="quick_launch_assign_application">Affecter application</string>
-  <string name="quick_launch_clear_cancel_button">Annuler</string>
-  <string name="quick_launch_clear_dialog_message">Votre raccourci pour <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) sera effacé.</string>
-  <string name="quick_launch_clear_dialog_title">Effacer</string>
-  <string name="quick_launch_clear_ok_button">OK</string>
-  <string name="quick_launch_display_mode_applications">Applications</string>
-  <string name="quick_launch_display_mode_shortcuts">Raccourcis</string>
-  <string name="quick_launch_no_shortcut">Pas de raccourci</string>
-  <string name="quick_launch_shortcut">Recherche + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-  <string name="quick_launch_summary">Définir le clavier les raccourcis pour lancer les applications</string>
-  <string name="quick_launch_title">Lancement rapide</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Connecté</string>
-  <string name="radioInfo_data_connecting">Connexion</string>
-  <string name="radioInfo_data_disconnected">Déconnecté</string>
-  <string name="radioInfo_data_suspended">Suspendu</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">octets</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">pqts</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Désactiver la connexion de données</string>
-  <string name="radioInfo_menu_disableDataOnBoot">Désactiver les données à l\'amorçage</string>
-  <string name="radioInfo_menu_enableData">Activer la connexion de données</string>
-  <string name="radioInfo_menu_enableDataOnBoot">Activer les données à l\'amorçage</string>
-  <string name="radioInfo_menu_getPDP">Obtenir la liste PDP</string>
-  <string name="radioInfo_menu_viewADN">Afficher le carnet d\'adresses en SIM</string>
-  <string name="radioInfo_menu_viewFDN">Afficher la numérotation fixe</string>
-  <string name="radioInfo_menu_viewSDN">Afficher la numérotation de service</string>
-  <string name="radioInfo_phone_idle">Inactif</string>
-  <string name="radioInfo_phone_offhook">Appel en cours</string>
-  <string name="radioInfo_phone_ringing">Ça sonne</string>
-  <string name="radioInfo_roaming_in">Itinérance</string>
-  <string name="radioInfo_roaming_not">Pas d\'itinérance</string>
-  <string name="radioInfo_service_emergency">Appel d\'urgence uniquement</string>
-  <string name="radioInfo_service_in">En service</string>
-  <string name="radioInfo_service_off">Radio désactivée</string>
-  <string name="radioInfo_service_out">Hors service</string>
-  <string name="radioInfo_unknown">inconnu</string>
-  <string name="radio_controls_summary">Gérer Wi-Fi, Bluetooth, mode avion et réseaux mobiles</string>
-  <string name="radio_controls_title">Contrôles sans fil</string>
-  <string name="radio_info_band_mode_label">Sélectionner la bande radio</string>
-  <string name="radio_info_call_redirect_label">Redirection d\'appel :</string>
-  <string name="radio_info_call_status_label">État d\'appel :</string>
-  <string name="radio_info_current_network_label">Réseau actuel :</string>
-  <string name="radio_info_data_attempts_label">Essais de données :</string>
-  <string name="radio_info_data_successes_label">Succès de données :</string>
-  <string name="radio_info_gprs_service_label">Service GPRS :</string>
-  <string name="radio_info_gsm_disconnects_label">Déconnexions GSM :</string>
-  <string name="radio_info_gsm_service_label">Service GSM :</string>
-  <string name="radio_info_http_client_test">Test client HTTP :</string>
-  <string name="radio_info_imei_label">IMEI :</string>
-  <string name="radio_info_imsi_label">IMSI :</string>
-  <string name="radio_info_message_waiting_label">Message en attente :</string>
-  <string name="radio_info_neighboring_location_label">CID voisin :</string>
-  <string name="radio_info_network_type_label">Type de réseau :</string>
-  <string name="radio_info_phone_number_label">Numéro de téléphone :</string>
-  <string name="radio_info_ping_hostname">Ping nom d\'hôte (www.google.com) :</string>
-  <string name="radio_info_ping_ipaddr">Ping AdrIP :</string>
-  <string name="radio_info_ppp_received_label">PPP reçus :</string>
-  <string name="radio_info_ppp_resets_label">Nombre de réinitialisation PPP depuis l\'amorçage :</string>
-  <string name="radio_info_ppp_sent_label">PPP envoyés :</string>
-  <string name="radio_info_radio_resets_label">Réinitialisations radio :</string>
-  <string name="radio_info_roaming_label">Itinérance :</string>
-  <string name="radio_info_set_perferred_label">Définir le type de réseau préféré :</string>
-  <string name="radio_info_signal_location_label">Localisation :</string>
-  <string name="radio_info_signal_strength_label">Force du signal :</string>
-  <string name="radio_info_smsc_label">SMSC :</string>
-  <string name="radio_info_smsc_refresh_label">Actualiser</string>
-  <string name="radio_info_smsc_update_label">Mise à jour</string>
-  <string name="radio_info_toggle_ciph_label">Activer/désactiver le chiffrage</string>
-  <string name="read_only">\u0020(Lecture seule)</string>
-  <string name="recompute_size">Recalcul de la taille\u2026</string>
-  <string name="ring_volume_summary">Définir le volume pour les appels entrants</string>
-  <string name="ring_volume_title">Volume de la sonnerie</string>
-  <string name="ringer_volume_instructions">Utiliser les boutons du volume pour ajuster le volume de la sonnerie</string>
-  <string name="ringer_volume_ringer_mode_label">Mode de sonnerie</string>
-  <string name="ringer_volume_ringtone_label">Sonnerie</string>
-  <string name="ringer_volume_screen_increasing_text">Sonnerie croissante</string>
-  <string name="ringtone_summary">Définir votre sonnerie d\'appels entrants par défaut</string>
-  <string name="ringtone_title">Sonnerie du téléphone</string>
-  <string name="roaming">Itinérance de données</string>
-  <string name="roaming_disable">Connecter aux services de donnée en itinérance</string>
-  <string name="roaming_enable">Connecter aux services de donnée en itinérance</string>
-  <string name="roaming_reenable_message">Vous avez perdu la connectivité de données car vous avez quitté votre réseau personnel avec l\'itinérance de données désactivée.</string>
-  <string name="roaming_reenable_title">Attention</string>
-  <string name="roaming_turn_it_on_button">Activez-la</string>
-  <string name="roaming_warning">Permettre l\'itinérance de données ? Vous pouvez avoir des frais d\'itinérance importants !</string>
-  <string name="scan_wifi">Rechercher</string>
-  <string name="screen_off_timeout_label">Ne jamais expirer pendant la charge</string>
-  <string name="screen_timeout">Expiration de l\'écran</string>
-  <string name="sd_card_settings_label">Carte SD</string>
-  <string name="sd_eject">Démonter/éjecter la carte SD</string>
-  <string name="sd_memory">Carte SD</string>
-  <string name="sd_unavailable">Non disponible</string>
-  <string name="sdcard_changes_instructions">Les modifications prennent effet à la reconnexion du câble USB</string>
-  <string name="sdcard_removal_alert_ok">OK</string>
-  <string name="sdcard_removal_alert_scolding">La carte SD a été retirée alors qu\'elle était en utilisation !
-        Pour éviter la corruption de la carte, utilisez l\'écran Paramètres de carte SD pour démonter la carte avant le retrait.</string>
-  <string name="sdcard_removal_alert_title">Retrait de carte SD non sûr !</string>
-  <string name="sdcard_setting">Carte SD</string>
-  <string name="sdcard_settings_available_bytes_label">Octets disponibles :</string>
-  <string name="sdcard_settings_bad_removal_status">La carte SD a été retirée alors qu\'elle était en utilisation !</string>
-  <string name="sdcard_settings_mass_storage_status">La carte SD est utilisée comme appareil de stockage de masse</string>
-  <string name="sdcard_settings_not_present_status">Pas de carte SD</string>
-  <string name="sdcard_settings_read_only_status">Carte SD montée en lecture seule</string>
-  <string name="sdcard_settings_scanning_status">Recherche de fichiers multimédia dans la carte SD\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">Activer le stockage de masse USB</string>
-  <string name="sdcard_settings_total_bytes_label">Total d\'octets :</string>
-  <string name="sdcard_settings_unmounted_status">Il est maintenant possible de retirer la carte SD en toute sécurité</string>
-  <string name="sdcard_settings_used_bytes_label">Octets utilisés :</string>
-  <string name="sdcard_unmount">Démonter la carte SD</string>
-  <string name="sdcard_unmountable_alert_ok">OK</string>
-  <string name="sdcard_unmountable_alert_title">Carte SD illisible</string>
-  <string name="sdcard_unmountable_message">La carte SD n\'a pas pu être lue.
-        Le système de fichiers peut être corrompu ou la carte peut être défective.</string>
-  <string name="security">Sécurité</string>
-  <string name="security_and_data_label">Sécurité et données</string>
-  <string name="security_passwords_title">Mots de passe</string>
-  <string name="security_settings_desc">Voici ce que cette application peut accéder sur votre téléphone :</string>
-  <string name="security_settings_summary">Ma localisation, déverrouillage d\'écran, verrouillage de carte SIM</string>
-  <string name="security_settings_title">Sécurité et localisation</string>
-  <string name="select_your_language">Sélectionner votre langue</string>
-  <string name="set_lock_pattern_label">Dessinez votre motif de déverrouillage :</string>
-  <string name="settings_chooser_pick_string">
-        L\'icône des paramètres doit transférer à :
-    </string>
-  <string name="settings_label">Paramètres</string>
-  <string name="settings_license_activity_loading">Chargement\u2026</string>
-  <string name="settings_license_activity_title">Licences Open source</string>
-  <string name="settings_license_activity_unavailable">Il y a un problème pour charger les licences.</string>
-  <string name="show_password">Mots de passe visibles</string>
-  <string name="show_password_summary">Afficher le mot de passe lors de la saisie</string>
-  <string name="signal">Force du signal</string>
-  <string name="silent_mode_summary">Tous les sons excepté le multimédia sont sous silence</string>
-  <string name="silent_mode_title">Mode silencieux</string>
-  <string name="sim_bad_pin">Code PIN incorrect !</string>
-  <string name="sim_change_failed">Impossible de modifier le code PIN.\nPossible code PIN incorrect.</string>
-  <string name="sim_change_pin">Modifier PIN SIM</string>
-  <string name="sim_change_succeeded">PIN SIM modifié avec succès</string>
-  <string name="sim_disable_sim_lock">Déverrouiller la carte SIM</string>
-  <string name="sim_enable_sim_lock">Verrouiller la carte SIM</string>
-  <string name="sim_enter_cancel">Annuler</string>
-  <string name="sim_enter_new">Saisir le nouveau code PIN</string>
-  <string name="sim_enter_ok">OK</string>
-  <string name="sim_enter_old">Saisir l\'ancien code PIN</string>
-  <string name="sim_enter_pin">Saisir le code PIN SIM</string>
-  <string name="sim_lock_failed">Impossible de modifier l\'état de verrouillage de la carte SIM.\nPossible code PIN incorrect.</string>
-  <string name="sim_lock_off">Exiger le code PIN pour utiliser le téléphone</string>
-  <string name="sim_lock_on">Exiger le code PIN pour utiliser le téléphone</string>
-  <string name="sim_lock_settings">Paramètres de verrouillage de carte SIM</string>
-  <string name="sim_lock_settings_category">Configurer le verrouillage de carte SIM</string>
-  <string name="sim_lock_settings_title">Verrouillage de carte SIM</string>
-  <string name="sim_pin_change">Modifier le code PIN</string>
-  <string name="sim_pin_toggle">Verrouiller la carte SIM</string>
-  <string name="sim_pins_dont_match">Les codes PIN ne correspondent pas !</string>
-  <string name="sim_reenter_new">Ressaisir le nouveau code PIN</string>
-  <string name="skip_button_label">Annuler</string>
-  <string name="small_font">Petit</string>
-  <string name="software_version">Version du logiciel</string>
-  <string name="sort_order_alpha">Trier alphabétiquement</string>
-  <string name="sort_order_size">Trier par taille (décroissante)</string>
-  <string name="sound_and_display_settings">Son et affichage</string>
-  <string name="sound_and_display_settings_summary">Définir les sonneries, les notifications, la luminosité d\'écran</string>
-  <string name="sound_effects_enable_summary_off">Émettre un son lors de la sélection à l\'écran</string>
-  <string name="sound_effects_enable_summary_on">Émettre un son lors de la sélection à l\'écran</string>
-  <string name="sound_effects_enable_title">Sélection sonore</string>
-  <string name="sound_settings">Paramètres de son</string>
-  <string name="status_authenticating">Authentification\u2026</string>
-  <string name="status_awake_time">Heures de réveil</string>
-  <string name="status_bt_address">Adresse Bluetooth</string>
-  <string name="status_connected">Connecté</string>
-  <string name="status_connecting">Connexion\u2026</string>
-  <string name="status_data_state">Accès aux données</string>
-  <string name="status_disconnected">Déconnecté</string>
-  <string name="status_disconnecting">Déconnexion\u2026</string>
-  <string name="status_failed">Échec</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imei_sv">IMEI SV</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Type de réseau</string>
-  <string name="status_number">Numéro de téléphone</string>
-  <string name="status_obtaining_ip">Obtenir l\'adresse\u2026</string>
-  <string name="status_operator">Réseau</string>
-  <string name="status_roaming">Itinérance</string>
-  <string name="status_scanning">Recherche\u2026</string>
-  <string name="status_service_state">État de service</string>
-  <string name="status_signal_strength">Force du signal</string>
-  <string name="status_unavailable">Non disponible</string>
-  <string name="status_up_time">Temps productif</string>
-  <string name="status_wifi_mac_address">Adresse MAC Wi-Fi</string>
-  <string name="stay_on">L\'écran est toujours allumé pendant la charge</string>
-  <string name="storage_label">Stockage</string>
-  <string name="storage_settings_summary">Démonter la carte SD, afficher le stockage disponible</string>
-  <string name="storage_settings_title">Stockage du téléphone et carte SD</string>
-  <string name="sum_carrier_select">Sélectionnez un opérateur de réseau</string>
-  <string name="summary_connection_failed">Échec de la connexion, sélectionnez pour ressayer</string>
-  <string name="summary_not_in_range">Pas à distance</string>
-  <string name="summary_remembered">Souvenu</string>
-  <string name="sync_automatically">Auto-synchroniser</string>
-  <string name="sync_calendar">Agenda</string>
-  <string name="sync_contacts">Contacts</string>
-  <string name="sync_disabled">Sélectionner pour synchroniser automatiquement les données</string>
-  <string name="sync_do_nothing">Ne rien faire maintenant.</string>
-  <string name="sync_enabled">Synchroniser automatiquement les données</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_is_failing">Il y a actuellement des problèmes de synchronisation. Elle sera de retour rapidement.</string>
-  <string name="sync_menu_sync_cancel">Annuler la synchronisation</string>
-  <string name="sync_menu_sync_now">Synchroniser maintenant</string>
-  <string name="sync_really_delete">Supprimez les éléments.</string>
-  <string name="sync_settings">Synchronisation données</string>
-  <string name="sync_settings_summary">Sélectionnez les applications à synchroniser</string>
-  <string name="sync_too_many_deletes">Limite de suppression dépassée</string>
-  <string name="sync_too_many_deletes_desc">Il y a %d éléments supprimés pour %s, compte %s. Que souhaitez-vous faire ?</string>
-  <string name="sync_undo_deletes">Annulez les suppressions.</string>
-  <string name="target_build_field_label">Type de Build demandé</string>
-  <string name="team_title">Équipe</string>
-  <string name="telephony_apn_label">APN :</string>
-  <string name="telephony_mcc_label">MCC :</string>
-  <string name="telephony_mmsc_label">MMSC :</string>
-  <string name="telephony_mmsport_label">Port MMS :</string>
-  <string name="telephony_mmsproxy_label">Proxy MMS :</string>
-  <string name="telephony_mnc_label">MNC :</string>
-  <string name="telephony_name_label">Nom :</string>
-  <string name="telephony_password_label">Mot de passe :</string>
-  <string name="telephony_port_label">Port :</string>
-  <string name="telephony_proxy_label">Proxy :</string>
-  <string name="telephony_server_label">Serveur :</string>
-  <string name="telephony_user_label">Utilisateur :</string>
-  <string name="terms_title">Termes et conditions</string>
-  <string name="testing">Test</string>
-  <string name="testing_battery_info">Informations batterie</string>
-  <string name="testing_phone_info">Informations téléphone</string>
-  <string name="testing_sim_toolkit">Outils SIM</string>
-  <string name="text_category">Paramètres texte</string>
-  <string name="total_size_label">Total</string>
-  <string name="turn_off_qxdm">Désactiver journal QXDM SD</string>
-  <string name="turn_off_radio">Désactiver la radio</string>
-  <string name="turn_on_qxdm">Activer journal QXDM SD</string>
-  <string name="turn_on_radio">Activer la radio</string>
-  <string name="underdeveloped_settings_label">Paramètres sous-développés</string>
-  <string name="uninstall_failed">Impossible de désinstaller l\'application.</string>
-  <string name="uninstall_text">Désinstaller</string>
-  <string name="unknown">Inconnu</string>
-  <string name="vibrate_summary">Faire vibrer le téléphone pour les appels entrants</string>
-  <string name="vibrate_title">Vibreur téléphone</string>
-  <string name="wallpaper_label">Papier peint</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Réseaux Wi-Fi</string>
-  <string name="wifi_add_other_network">Ajouter un réseau Wi-Fi</string>
-  <string name="wifi_context_menu_change_password">Changer le mot de passe</string>
-  <string name="wifi_context_menu_connect">Connexion au réseau</string>
-  <string name="wifi_context_menu_forget">Oublier le réseau</string>
-  <string name="wifi_dhcp_timeout_error">Il y a un problème pour obtenir une adresse IP.</string>
-  <string name="wifi_dns1">DNS 1</string>
-  <string name="wifi_dns2">DNS 2</string>
-  <string name="wifi_dns3">DNS 3</string>
-  <string name="wifi_dns_label">dns :</string>
-  <string name="wifi_error">Erreur</string>
-  <string name="wifi_gateway">Passerelle</string>
-  <string name="wifi_gateway_label">passerelle :</string>
-  <string name="wifi_generic_connection_error">Il y a un problème de connexion au réseau. Veuillez réessayer.</string>
-  <string name="wifi_host_ip">ip hôte :</string>
-  <string name="wifi_ip_address">Adresse IP</string>
-  <string name="wifi_ip_settings_invalid_ip">Veuillez saisir une adresse IP valide.</string>
-  <string name="wifi_ip_settings_menu_cancel">Annuler</string>
-  <string name="wifi_ip_settings_menu_save">Enregistrer</string>
-  <string name="wifi_ip_settings_titlebar">Paramètres IP</string>
-  <string name="wifi_link_speed">Vitesse</string>
-  <string name="wifi_menu_advanced">Avancés</string>
-  <string name="wifi_netmask">Masque réseau</string>
-  <string name="wifi_netmask_label">masque réseau :</string>
-  <string name="wifi_notify_open_networks">Notification réseau</string>
-  <string name="wifi_notify_open_networks_summary">Me notifier quand un réseau ouvert est disponible</string>
-  <string name="wifi_password_incorrect_error">Le mot de passe du réseau saisi est incorrect. Veuillez réessayer.</string>
-  <string name="wifi_password_unchanged">(inchangé)</string>
-  <string name="wifi_prefer_wifi">Wi-Fi préféré</string>
-  <string name="wifi_quick_toggle_summary">Sélectionner d\'activer Wi-Fi</string>
-  <string name="wifi_quick_toggle_title">Wi-Fi</string>
-  <string name="wifi_save_config">Enregistrer</string>
-  <string name="wifi_screen_activate_text">Activer</string>
-  <string name="wifi_screen_dhcp_text">automatique</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">manuel</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wi-Fi fonctionne</string>
-  <string name="wifi_screen_test_text">Test</string>
-  <string name="wifi_security">Sécurité</string>
-  <string name="wifi_security_open">Ouvrir</string>
-  <string name="wifi_security_unknown">Inconnu</string>
-  <string name="wifi_security_verbose_open">Réseau ouvert</string>
-  <string name="wifi_security_verbose_wep">Sécurisé avec WEP</string>
-  <string name="wifi_security_verbose_wpa">Sécurisé avec WPA</string>
-  <string name="wifi_security_verbose_wpa2">Sécurisé avec WPA2</string>
-  <string name="wifi_security_wep">WEP</string>
-  <string name="wifi_security_wpa">WPA</string>
-  <string name="wifi_security_wpa2">WPA2</string>
-  <string name="wifi_settings">Paramètres Wi-Fi</string>
-  <string name="wifi_settings_category">Paramètres Wi-Fi</string>
-  <string name="wifi_settings_summary">Configurer et gérer les points d\'accès sans fil</string>
-  <string name="wifi_show_password">Affichez le mot de passe.</string>
-  <string name="wifi_signal_0">Faible</string>
-  <string name="wifi_signal_1">Passable</string>
-  <string name="wifi_signal_2">Bonne</string>
-  <string name="wifi_signal_3">Excellente</string>
-  <string name="wifi_starting">Activation\u2026</string>
-  <string name="wifi_status">État</string>
-  <string name="wifi_stopping">Désactivation\u2026</string>
-  <string name="wifi_type_ssid">Saisissez le SSID du réseau :</string>
-  <string name="wifi_use_static_ip">Utiliser IP statique</string>
-  <string name="wifi_wlan_id">id réseau sans fil :</string>
-</resources>
diff --git a/res/values-it-rIT/strings.xml b/res/values-it-rIT/strings.xml
deleted file mode 100644
index 0cf95d0..0000000
--- a/res/values-it-rIT/strings.xml
+++ /dev/null
@@ -1,700 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="about_settings">Informazioni sul telefono</string>
-  <string name="about_settings_summary">Visualizza le informazioni legali, lo stato del telefono e la versione del software</string>
-  <string name="activity_picker_label">Seleziona attività</string>
-  <string name="airplane_mode">Modalità aereo</string>
-  <string name="airplane_mode_summary">Selezionare per disattivare tutte le connessioni wireless</string>
-  <string name="airplane_mode_turning_off">Attivazione connessioni wireless\u2026</string>
-  <string name="airplane_mode_turning_on">Disattivazione connessioni wireless\u2026</string>
-  <string name="android_id_label">ID Android</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Modifica punto di accesso</string>
-  <string name="apn_http_port">Porta</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">Porta MMS</string>
-  <string name="apn_mms_proxy">Proxy MMS</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Nome</string>
-  <string name="apn_not_set">&lt;Non impostato&gt;</string>
-  <string name="apn_password">Password</string>
-  <string name="apn_server">Server</string>
-  <string name="apn_settings">APN</string>
-  <string name="apn_type">Tipo APN</string>
-  <string name="apn_user">Nome utente</string>
-  <string name="app_launcher_newView_text">Nuovo AppLauncher</string>
-  <string name="app_not_found_dlg_text"> Impossibile trovare l'applicazione
-nell'elenco di applicazioni installate.</string>
-  <string name="app_not_found_dlg_title">Impossibile trovare l'applicazione</string>
-  <string name="application_info_label">Informazioni sull'applicazione</string>
-  <string name="application_size_label">Applicazione</string>
-  <string name="applications_settings">Applicazioni</string>
-  <string name="applications_settings_header">Impostazioni applicazione</string>
-  <string name="applications_settings_summary">Gestisce le applicazioni, imposta i collegamenti di avvio rapido</string>
-  <string name="auto_caps">Maiuscola automatica</string>
-  <string name="auto_caps_summary">Attiva la maiuscola per la prima lettera nelle frasi</string>
-  <string name="auto_launch_disable_text">Nessuna impostazione predefinita.</string>
-  <string name="auto_launch_enable_text">Si è scelto di avviare questa applicazione per impostazione predefinita per alcune azioni.</string>
-  <string name="auto_launch_label">Avvia per impostazione predefinita</string>
-  <string name="auto_punctuate">Punteggiatura automatica</string>
-  <string name="auto_punctuate_summary">Premere Barra spaziatrice per inserire \u0022.\u0022</string>
-  <string name="auto_replace">Sostituzione automatica</string>
-  <string name="auto_replace_summary">Corregge le parole con errori di ortografia</string>
-  <string name="autorotate">Rotazione automatica</string>
-  <string name="autorotate_summary_off">Cambiando l'orientamento dello schermo non viene ruotata l'applicazione</string>
-  <string name="autorotate_summary_on">Cambiando l'orientamento dello schermo viene ruotata l'applicazione</string>
-  <string name="b_text">B</string>
-  <string name="band_mode_failed">Non riuscito</string>
-  <string name="band_mode_loading">Caricamento lista bande in corso\u2026</string>
-  <string name="band_mode_set">Imposta</string>
-  <string name="band_mode_succeeded">Riuscita</string>
-  <string name="band_mode_title">Imposta banda GSM/UMTS</string>
-  <string name="baseband_version">Versione banda di base</string>
-  <string name="basic_settings_title">Funzioni di base del telefono</string>
-  <string name="battery_info_awake_battery">Tempo riattivazione batteria:</string>
-  <string name="battery_info_awake_plugged">Tempo riattivazione durante la carica:</string>
-  <string name="battery_info_health_dead">Fuori uso</string>
-  <string name="battery_info_health_good">Buona</string>
-  <string name="battery_info_health_label">Stato batteria:</string>
-  <string name="battery_info_health_over_voltage">Sovratensione</string>
-  <string name="battery_info_health_overheat">Surriscaldamento</string>
-  <string name="battery_info_health_unknown">Sconosciuto</string>
-  <string name="battery_info_health_unspecified_failure">Errore sconosciuto</string>
-  <string name="battery_info_label">Informazioni batteria</string>
-  <string name="battery_info_level_label">Livello batteria:</string>
-  <string name="battery_info_scale_label">Scala batteria:</string>
-  <string name="battery_info_screen_on">Tempo accensione schermo:</string>
-  <string name="battery_info_status_charging">Sotto carica</string>
-  <string name="battery_info_status_charging_ac">(CA)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">Scarico</string>
-  <string name="battery_info_status_full">Carico</string>
-  <string name="battery_info_status_label">Stato batteria:</string>
-  <string name="battery_info_status_not_charging">Non sotto carica</string>
-  <string name="battery_info_status_unknown">Sconosciuto</string>
-  <string name="battery_info_technology_label">Tecnologia batteria:</string>
-  <string name="battery_info_temperature_label">Temperatura batteria:</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_uptime">Tempo dall'avvio:</string>
-  <string name="battery_info_voltage_label">Voltaggio batteria:</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="battery_level_title">Livello batteria</string>
-  <string name="battery_status_title">Stato batteria</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Cancella elenco dispositivi</string>
-  <string name="bluetooth_connect">Connetti</string>
-  <string name="bluetooth_connectable">Solo collegabile</string>
-  <string name="bluetooth_connected">Connesso</string>
-  <string name="bluetooth_connecting">Connessione in corso\u2026</string>
-  <string name="bluetooth_device">viva voce/cuffia</string>
-  <string name="bluetooth_device_info">Informazioni dispositivo Bluetooth</string>
-  <string name="bluetooth_device_info_alias">Alias dispositivo</string>
-  <string name="bluetooth_device_info_delete">Rimuovi dispositivo</string>
-  <string name="bluetooth_device_info_no_alias">Digitare l'alias qui\u2026</string>
-  <string name="bluetooth_device_info_sdp">Servizi supportati nell'elenco</string>
-  <string name="bluetooth_device_name">Nome dispositivo</string>
-  <string name="bluetooth_devices">Dispositivi Bluetooth</string>
-  <string name="bluetooth_disabled">Selezionare per attivare il Bluetooth</string>
-  <string name="bluetooth_disconnect">Disconnetti</string>
-  <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> verrà disconnesso</string>
-  <string name="bluetooth_discoverability_panel_title">Nomina me\u2026</string>
-  <string name="bluetooth_discoverable">Rilevabile per %1$s secondi</string>
-  <string name="bluetooth_enable_text">Pulsante vuoto\u2026</string>
-  <string name="bluetooth_enabled">Selezionare per attivare il Bluetooth</string>
-  <string name="bluetooth_enabling">Attivazione Bluetooth in corso\u2026</string>
-  <string name="bluetooth_enter_pin_msg">Immettere il PIN per\u0020</string>
-  <string name="bluetooth_failed_to_enable">Impossibile attivare Bluetooth</string>
-  <string name="bluetooth_is_discoverable">Rilevabile per %1$s secondi\u2026</string>
-  <string name="bluetooth_name_not_set">Nessun nome impostato, utilizzando il nome account</string>
-  <string name="bluetooth_neither">Non rilevabile né collegabile</string>
-  <string name="bluetooth_new_data">Digitare i nuovi dati</string>
-  <string name="bluetooth_new_data_cancel">Annulla</string>
-  <string name="bluetooth_new_data_confirm">OK</string>
-  <string name="bluetooth_not_connected">Accoppia a dispositivo</string>
-  <string name="bluetooth_not_discoverable">Selezionare per rendere il dispositivo rilevabile</string>
-  <string name="bluetooth_notif_message">Selezionare per accoppiare\u0020</string>
-  <string name="bluetooth_notif_ticker">Richiesta accoppiamento Bluetooth</string>
-  <string name="bluetooth_notif_title">Richiesta accoppiamento Bluetooth</string>
-  <string name="bluetooth_pair">Accoppia</string>
-  <string name="bluetooth_paired">Accoppiato</string>
-  <string name="bluetooth_paired_not_nearby">Accoppiato</string>
-  <string name="bluetooth_pairing">Accoppiamento in corso\u2026</string>
-  <string name="bluetooth_pairing_msg">Accoppiamento in corso\u2026</string>
-  <string name="bluetooth_pin_entry">Codice PIN Bluetooth</string>
-  <string name="bluetooth_quick_toggle_summary">Selezionare per attivare il Bluetooth</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Ricerca dispositivi</string>
-  <string name="bluetooth_scan_for_new_devices">Ricerca nuovi dispositivi\u2026</string>
-  <string name="bluetooth_scan_text">Pulsante vuoto\u2026</string>
-  <string name="bluetooth_settings">Impostazioni Bluetooth</string>
-  <string name="bluetooth_settings_summary">Gestisce le connessioni, imposta il nome del dispositivo e la rilevabilità</string>
-  <string name="bluetooth_settings_text">Pulsante vuoto\u2026</string>
-  <string name="bluetooth_settings_title">Impostazioni Bluetooth</string>
-  <string name="bluetooth_starting">Avvio di Bluetooth\u2026</string>
-  <string name="bluetooth_stopping">Interruzione Bluetooth\u2026</string>
-  <string name="bluetooth_unknown">Sconosciuto</string>
-  <string name="bluetooth_unpair">Disaccoppia</string>
-  <string name="bluetooth_visibility">Rilevabile</string>
-  <string name="bootloader_version">Versione del caricatore di avvio</string>
-  <string name="brightness">Luminosità</string>
-  <string name="build_date_label">Data build</string>
-  <string name="build_description_label">Descrizione build</string>
-  <string name="build_host_label">Host build</string>
-  <string name="build_id_label">ID build</string>
-  <string name="build_number">Numero build</string>
-  <string name="build_type_label">Tipo build</string>
-  <string name="build_user_label">Utente build</string>
-  <string name="call_settings_summary">Imposta la casella vocale, il trasferimento chiamata, la chiamata in attesa, l'ID chiamante</string>
-  <string name="call_settings_title">Impostazioni chiamata</string>
-  <string name="cancel">Annulla</string>
-  <string name="checkin_button_label">Verifica aggiornamento</string>
-  <string name="checkin_download_failed">Non riuscito</string>
-  <string name="checkin_download_label">Stato download</string>
-  <string name="checkin_download_ongoing">Download in corso</string>
-  <string name="checkin_download_pending">In sospeso</string>
-  <string name="checkin_download_succeeded">Completato</string>
-  <string name="checkin_download_suspended">Sospeso</string>
-  <string name="checkin_download_unknown">Stato sconosciuto</string>
-  <string name="checkin_failures_label">Errori dall'ultima operazione completata</string>
-  <string name="checkin_last_time_label">Ultima verifica riuscita</string>
-  <string name="checkin_started_message">Archiviazione avviata\u2026</string>
-  <string name="checkin_status_label">Stato verifica</string>
-  <string name="checkin_time_never">(mai)</string>
-  <string name="checkin_upgrade_label">Aggiornamento in sospeso</string>
-  <string name="choose_timezone">Seleziona fuso orario</string>
-  <string name="choose_timezone_region">Seleziona area</string>
-  <string name="clear_activities">Cancella predefiniti</string>
-  <string name="clear_data_dlg_text">Tutte le informazioni salvate in questa applicazione verranno eliminate in maniera permanente.</string>
-  <string name="clear_data_dlg_title">Elimina</string>
-  <string name="clear_data_failed">Impossibile cancellare i dati dell'applicazione.</string>
-  <string name="clear_user_data_text">Cancella dati</string>
-  <string name="computing_size">Calcolo delle dimensioni dell'applicazione in corso\u2026</string>
-  <string name="connect">Connetti</string>
-  <string name="connect_to_blank">Connetti a <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="contributors_title">Collaboratori</string>
-  <string name="copyright_title">Copyright</string>
-  <string name="data_settings">Impostazioni dati</string>
-  <string name="data_settings_summary">Scheda SD e archiviazione telefono, sincronizzazione dati</string>
-  <string name="data_settings_title">Dati</string>
-  <string name="data_size_label">Dati</string>
-  <string name="date_and_time">Impostazioni di data e ora</string>
-  <string name="date_and_time_settings_summary">Imposta la data, l'ora, il fuso orario e i formati</string>
-  <string name="date_and_time_settings_title">Data e ora</string>
-  <string name="date_time_24hour">Usa formato 24 ore</string>
-  <string name="date_time_auto">Automatico</string>
-  <string name="date_time_auto_summaryOff">Usa valori della rete</string>
-  <string name="date_time_auto_summaryOn">Usa valori della rete</string>
-  <string name="date_time_changeDate_text">Modifica data</string>
-  <string name="date_time_changeTime_text">Modifica ora</string>
-  <string name="date_time_dateDisplay_text">3 nov 1997</string>
-  <string name="date_time_date_format">Seleziona formato data</string>
-  <string name="date_time_set_date">Imposta data</string>
-  <string name="date_time_set_time">Imposta ora</string>
-  <string name="date_time_set_timezone">Imposta fuso orario</string>
-  <string name="date_time_setzone_text">Modifica fuso orario</string>
-  <string name="date_time_timeDisplay_text">11:45</string>
-  <string name="date_time_timezone_label">Fuso orario:</string>
-  <string name="debug_intent_sender_label">Mittente intenzione debug</string>
-  <string name="default_date_format">gg/MM/aaaa</string>
-  <string name="default_keyboard_device_label">Dispositivo tastiera predefinito</string>
-  <string name="development_settings_summary">Impostazioni per lo sviluppo di applicazioni</string>
-  <string name="development_settings_title">Sviluppo</string>
-  <string name="device_info_asleeptime">Tempo di inattività</string>
-  <string name="device_info_awaketime">Tempo riattivazione</string>
-  <string name="device_info_default">Sconosciuto</string>
-  <string name="device_info_label">Informazioni dispositivo</string>
-  <string name="device_info_not_available">Non disponibile</string>
-  <string name="device_info_settings">Stato telefono</string>
-  <string name="device_info_uptime">Disponibilità</string>
-  <string name="device_status">Stato</string>
-  <string name="device_status_summary">IMEI, numero di telefono, segnale ecc...</string>
-  <string name="dim_screen">Oscura schermo</string>
-  <string name="disconnect_ums">Disconnetti dispositivo di memorizzazione di massa USB</string>
-  <string name="display_font_size_label">Dimensioni carattere:</string>
-  <string name="display_label">Display</string>
-  <string name="display_preview_label">Anteprima:</string>
-  <string name="display_settings">Impostazioni display</string>
-  <string name="dlg_cancel">Annulla</string>
-  <string name="dlg_ok">OK</string>
-  <string name="done">OK</string>
-  <string name="dtmf_tone_enable_summary_off">Riproduci toni durante la composizione</string>
-  <string name="dtmf_tone_enable_summary_on">Riproduci toni durante la composizione</string>
-  <string name="dtmf_tone_enable_title">Toni udibili al tocco</string>
-  <string name="enable_adb">Debug USB</string>
-  <string name="enable_adb_summary">Modalità debug quando è connesso USB</string>
-  <string name="error_apn_empty">L'APN non può essere vuoto.</string>
-  <string name="error_connecting">Impossibile collegarsi alla rete</string>
-  <string name="error_mcc_not3">Il campo MCC deve essere costituito da 3 cifre.</string>
-  <string name="error_mnc_not23">Il campo MNC deve essere costituito da 2 o 3 cifre.</string>
-  <string name="error_name_empty">Il campo Nome non può essere vuoto.</string>
-  <string name="error_saving">Impossibile salvare la rete</string>
-  <string name="error_scanning">Impossibile cercare le reti</string>
-  <string name="error_starting">Impossibile avviare Wi-Fi</string>
-  <string name="error_stopping">Impossibile interrompere Wi-Fi</string>
-  <string name="error_title">Attenzione</string>
-  <string name="failed_to_connect">Impossibile connettersi a <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="failed_to_pair">Impossibile eseguire l'accoppiamento con <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="favorites_label">Preferiti</string>
-  <string name="firmware_version">Versione firmware</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">OK</string>
-  <string name="forget_network">Ignora</string>
-  <string name="fragment_status_authenticating">Autenticazione con <xliff:g id="network_name">%1$s</xliff:g> in corso\u2026</string>
-  <string name="fragment_status_connected">Connesso a <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="fragment_status_connecting">Connessione a <xliff:g id="network_name">%1$s</xliff:g> in corso\u2026</string>
-  <string name="fragment_status_disconnected">Disconnesso</string>
-  <string name="fragment_status_disconnecting">Disconnessione da <xliff:g id="network_name">%1$s</xliff:g> in corso\u2026</string>
-  <string name="fragment_status_failed">Non riuscito</string>
-  <string name="fragment_status_obtaining_ip">Ottenimento indirizzo IP da <xliff:g id="network_name">%1$s</xliff:g> in corso\u2026</string>
-  <string name="fragment_status_scanning">Scansione in corso\u2026</string>
-  <string name="gsm_version_baseband_label">Versione banda di base</string>
-  <string name="gsm_version_ril_impl_label">Versione Impl RIL</string>
-  <string name="install_all_warning">Il telefono e i dati personali sono più vulnerabili agli attacchi da parte di applicazioni
- di origini sconosciute. L'utente accetta di essere il solo responsabile degli eventuali
- danni al telefono o della perdita dei dati che potrebbero derivare dall'utilizzo di
- queste applicazioni.</string>
-  <string name="install_applications">Origini sconosciute</string>
-  <string name="install_unknown_applications">Consente l'installazione di applicazioni non commerciali</string>
-  <string name="intent_sender_account_label">Account: </string>
-  <string name="intent_sender_action_label">Azione:</string>
-  <string name="intent_sender_data_label">Dati:</string>
-  <string name="intent_sender_resource_label">Risorsa: </string>
-  <string name="intent_sender_sendbroadcast_text">Invia broadcast</string>
-  <string name="intent_sender_startactivity_text">Avvia attività</string>
-  <string name="internal_memory">Dispositivo di memorizzazione interna telefono</string>
-  <string name="ip_address">Indirizzo IP</string>
-  <string name="kb_text">KB</string>
-  <string name="keep_screen_on">Rimani attivo</string>
-  <string name="keep_screen_on_summary">Lo schermo non diventa mai inattivo sotto carica</string>
-  <string name="kernel_version">Versione kernel</string>
-  <string name="kernel_version_label">Versione kernel Linux</string>
-  <string name="keyguard_label">Coperchio</string>
-  <string name="keyguard_password_button_text">OK</string>
-  <string name="keyguard_password_confirm_new_label">Conferma nuova password:</string>
-  <string name="keyguard_password_mismatch_error_text">Le due password non corrispondono. Digitarle di nuovo.</string>
-  <string name="keyguard_password_new_label">Nuova password:</string>
-  <string name="keyguard_password_old_label">Vecchia password:</string>
-  <string name="keyguard_password_old_password_error_text">La vecchia password immessa non è corretta. Riprovare.</string>
-  <string name="keyguard_pin_mod_text">Cambia PIN</string>
-  <string name="keyguard_pw_mod_text">Seleziona codice di blocco</string>
-  <string name="keyguard_sim_pin_label">PIN SIM</string>
-  <string name="language_category">Impostazione lingua</string>
-  <string name="language_picker_title">Impostazioni internazionali</string>
-  <string name="language_settings">Testo</string>
-  <string name="language_settings_summary">Selezionare le opzioni di correzione automatica testo</string>
-  <string name="large_font">Grande</string>
-  <string name="legal_information">Informazioni legali</string>
-  <string name="legal_information_summary">Visualizza termini e condizioni</string>
-  <string name="license_title">Licenza</string>
-  <string name="location_gps">Attiva satelliti GPS</string>
-  <string name="location_gps_disabled">Individuare il livello stradale (richiede più batteria e la vista del cielo)</string>
-  <string name="location_label">Fornitore posizione:</string>
-  <string name="location_neighborhood_level">Posizione determinata dalla reti mobili e/o Wi-Fi</string>
-  <string name="location_network_based">Usa reti wireless</string>
-  <string name="location_networks_disabled">Visualizza la posizione nelle applicazioni (ad esempio Mappe) utilizzando le reti wireless</string>
-  <string name="location_source">Località</string>
-  <string name="location_source_summary">Selezionare le origini per determinare la località</string>
-  <string name="location_status">Stato:</string>
-  <string name="location_street_level">Durante localizzazione, accuratezza a livello stradale (deselezionare per risparmiare batteria)</string>
-  <string name="location_title">Fornti località</string>
-  <string name="lock_example_message">Collegare almeno quattro punti.\n
-    \nSelezionare \"Avanti\" quando si è pronti a creare il proprio codice.
-    </string>
-  <string name="lock_example_title">Codice di esempio</string>
-  <string name="lock_settings_title">Codice blocco schermo</string>
-  <string name="lock_title">Protezione del telefono</string>
-  <string name="lockpattern_change_lock_pattern_label">Cambia codice di sblocco</string>
-  <string name="lockpattern_confirm_button_text">Conferma</string>
-  <string name="lockpattern_continue_button_text">Continua</string>
-  <string name="lockpattern_need_to_confirm">Ridigitare il codice per confermare:</string>
-  <string name="lockpattern_need_to_unlock">Conferma codice salvato:</string>
-  <string name="lockpattern_need_to_unlock_wrong">Riprovare:</string>
-  <string name="lockpattern_pattern_confirmed_header">Nuovo codice di sblocco:</string>
-  <string name="lockpattern_pattern_entered_header">Codice registrato</string>
-  <string name="lockpattern_recording_incorrect_too_short">Connettere ad almeno <xliff:g id="number">%d</xliff:g> punti. Riprovare:</string>
-  <string name="lockpattern_recording_inprogress">Rilasciare il dito al termine.</string>
-  <string name="lockpattern_recording_intro_footer">Premere Menu per visualizzare la Guida.</string>
-  <string name="lockpattern_recording_intro_header">Digitare un codice di sblocco:</string>
-  <string name="lockpattern_restart_button_text">Ridisegna</string>
-  <string name="lockpattern_retry_button_text">Riprova</string>
-  <string name="lockpattern_settings_change_lock_pattern">Cambia codice di sblocco</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Imposta codice di sblocco</string>
-  <string name="lockpattern_settings_enable_summary">Digitare un codice per sbloccare lo schermo</string>
-  <string name="lockpattern_settings_enable_title">Richiedi codice</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Usa codice visibile</string>
-  <string name="lockpattern_settings_help_how_to_record">Procedura per la digitazione di un codice di sblocco:</string>
-  <string name="lockpattern_settings_title">Codice di sblocco</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Riprovare tra <xliff:g id="number">%d</xliff:g> secondi.</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">Troppi tentativi errati</string>
-  <string name="manage_applications_title">Gestisci applicazioni</string>
-  <string name="manage_space_text">Gestisci spazio</string>
-  <string name="manageapplications_settings_title">Gestisci applicazioni</string>
-  <string name="mass_storage">Usa per dispositivo di memorizzazione USB</string>
-  <string name="master_clear_button_text">Ripristina telefono</string>
-  <string name="master_clear_desc">Questa azione consente di ripristinare i valori di fabbrica del telefono, cancellando tutti i dati e le applicazioni scaricate.</string>
-  <string name="master_clear_failed">Nessun ripristino eseguito perché il servizio System Clear non è disponibile.</string>
-  <string name="master_clear_final_button_text">Cancella tutto</string>
-  <string name="master_clear_final_desc">Ripristinare il telefono, cancellando tutti i dati e le applicazioni? Questa azione è irreversibile.</string>
-  <string name="master_clear_gesture_explanation">È necessario digitare un codice di sblocco per confermare un ripristino del telefono.</string>
-  <string name="master_clear_gesture_prompt">Digitare il codice di sblocco:</string>
-  <string name="master_clear_summary">Cancella tutti i dati sul telefono</string>
-  <string name="master_clear_title">Ripristino dati di fabbrica</string>
-  <string name="mb_text">MB</string>
-  <string name="media_volume_summary">Imposta volume per musica e video</string>
-  <string name="media_volume_title">Volume supporto</string>
-  <string name="medium_font">Supporto</string>
-  <string name="memory_available">Spazio disponibile</string>
-  <string name="memory_size">Spazio totale</string>
-  <string name="menu_cancel">Ignora</string>
-  <string name="menu_delete">Elimina APN</string>
-  <string name="menu_new">Nuovo APN</string>
-  <string name="menu_save">Salva</string>
-  <string name="model_number">Numero modello</string>
-  <string name="network_settings_summary">Imposta le opzioni per roaming, reti e APN</string>
-  <string name="network_settings_title">Reti mobili</string>
-  <string name="networks">Selezione operatore</string>
-  <string name="networks_title">Impostazioni rete</string>
-  <string name="next_button_label">Avanti</string>
-  <string name="next_label">Avanti</string>
-  <string name="notification_sound_dialog_title">Seleziona suoneria notifica</string>
-  <string name="notification_sound_summary">Imposta suoneria di notifica predefinita</string>
-  <string name="notification_sound_title">Suoneria notifica</string>
-  <string name="permissions_label">Autorizzazioni</string>
-  <string name="phone_info_label">Informazioni telefono</string>
-  <string name="phone_language">Seleziona lingua</string>
-  <string name="ping_test_label">Esegui test ping</string>
-  <string name="please_type_hex_key">Chiave esadecimale WEP (0-9, A-F)</string>
-  <string name="please_type_passphrase">Password wireless</string>
-  <string name="product_brand_label">Marchio prodotto</string>
-  <string name="product_device_label">Tipo telefono</string>
-  <string name="progress_scanning">Ricerca in corso</string>
-  <string name="proxy_action_text">Salva</string>
-  <string name="proxy_clear_text">Cancella</string>
-  <string name="proxy_defaultView_text">Ripristina impostazioni predefinite</string>
-  <string name="proxy_error">Attenzione</string>
-  <string name="proxy_error_dismiss">OK</string>
-  <string name="proxy_error_empty_host_set_port">Il campo della porta deve essere vuoto se il campo host è vuoto.</string>
-  <string name="proxy_error_empty_port">È necessario completare il campo della porta.</string>
-  <string name="proxy_error_invalid_host">Il nome dell'host immesso non è valido.</string>
-  <string name="proxy_error_invalid_port">La porta specificata non è valida.</string>
-  <string name="proxy_hostname_label">Nome host</string>
-  <string name="proxy_port_label">Porta</string>
-  <string name="proxy_settings_label">Impostazioni proxy</string>
-  <string name="quick_launch_assign_application">Assegna applicazione</string>
-  <string name="quick_launch_clear_cancel_button">Annulla</string>
-  <string name="quick_launch_clear_dialog_message">Il collegamento per <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) verrà cancellato.</string>
-  <string name="quick_launch_clear_dialog_title">Cancella</string>
-  <string name="quick_launch_clear_ok_button">OK</string>
-  <string name="quick_launch_display_mode_applications">Applicazioni</string>
-  <string name="quick_launch_display_mode_shortcuts">Collegamenti</string>
-  <string name="quick_launch_no_shortcut">Nessun collegamento</string>
-  <string name="quick_launch_shortcut">Cerca + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-  <string name="quick_launch_summary">Imposta scelte rapide da tastiera per avviare le applicazioni</string>
-  <string name="quick_launch_title">Avvio rapido</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Connesso</string>
-  <string name="radioInfo_data_connecting">Connessione in corso</string>
-  <string name="radioInfo_data_disconnected">Disconnesso</string>
-  <string name="radioInfo_data_suspended">Sospeso</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">byte</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">pkts</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Disabilita connessione dati</string>
-  <string name="radioInfo_menu_disableDataOnBoot">Disabilita dati all'avvio</string>
-  <string name="radioInfo_menu_enableData">Abilita connessione dati</string>
-  <string name="radioInfo_menu_enableDataOnBoot">Abilita dati all'avvio</string>
-  <string name="radioInfo_menu_getPDP">Ottieni elenco PDP</string>
-  <string name="radioInfo_menu_viewADN">Visualizza Rubrica SIM</string>
-  <string name="radioInfo_menu_viewFDN">Visualizza numeri dell'elenco numeri ammessi</string>
-  <string name="radioInfo_menu_viewSDN">Visualizza numeri dell'elenco dei numeri di servizio</string>
-  <string name="radioInfo_phone_idle">Inattivo</string>
-  <string name="radioInfo_phone_offhook">Chiamata in corso</string>
-  <string name="radioInfo_phone_ringing">Chiamata in corso</string>
-  <string name="radioInfo_roaming_in">Roaming</string>
-  <string name="radioInfo_roaming_not">Non roaming</string>
-  <string name="radioInfo_service_emergency">Solo chiamate di emergenza</string>
-  <string name="radioInfo_service_in">In servizio</string>
-  <string name="radioInfo_service_off">Radio disattivata</string>
-  <string name="radioInfo_service_out">Fuori servizio</string>
-  <string name="radioInfo_unknown">sconosciuto</string>
-  <string name="radio_controls_summary">Gestisci Wi-Fi, Bluetooth, modalità aereo e reti mobili</string>
-  <string name="radio_controls_title">Controlli wireless</string>
-  <string name="radio_info_band_mode_label">Seleziona banda radio</string>
-  <string name="radio_info_call_redirect_label">Reindirizzamento chiamata:</string>
-  <string name="radio_info_call_status_label">Stato chiamata:</string>
-  <string name="radio_info_current_network_label">Rete corrente:</string>
-  <string name="radio_info_data_attempts_label">Tentativi dati:</string>
-  <string name="radio_info_data_successes_label">Dati riusciti:</string>
-  <string name="radio_info_gprs_service_label">Servizio GPRS:</string>
-  <string name="radio_info_gsm_disconnects_label">Disconnessioni GSM:</string>
-  <string name="radio_info_gsm_service_label">Servizio GSM:</string>
-  <string name="radio_info_http_client_test">Test client HTTP:</string>
-  <string name="radio_info_imei_label">IMEI:</string>
-  <string name="radio_info_imsi_label">IMSI:</string>
-  <string name="radio_info_message_waiting_label">Messaggio in attesa:</string>
-  <string name="radio_info_neighboring_location_label">CID adiacente:</string>
-  <string name="radio_info_network_type_label">Tipo di rete:</string>
-  <string name="radio_info_phone_number_label">Numero di telefono:</string>
-  <string name="radio_info_ping_hostname">Nome host ping (www.google.com):</string>
-  <string name="radio_info_ping_ipaddr">IpAddr ping:</string>
-  <string name="radio_info_ppp_received_label">PPP ricevuto:</string>
-  <string name="radio_info_ppp_resets_label">Numero di PPP reimpostati dall'avvio:</string>
-  <string name="radio_info_ppp_sent_label">PPP inviato:</string>
-  <string name="radio_info_radio_resets_label">Reimpostazioni radio:</string>
-  <string name="radio_info_roaming_label">Roaming:</string>
-  <string name="radio_info_set_perferred_label">Impostare il tipo di rete preferito:</string>
-  <string name="radio_info_signal_location_label">Posizione:</string>
-  <string name="radio_info_signal_strength_label">Intensità segnale:</string>
-  <string name="radio_info_smsc_label">SMSC:</string>
-  <string name="radio_info_smsc_refresh_label">Aggiorna</string>
-  <string name="radio_info_smsc_update_label">Aggiorna</string>
-  <string name="radio_info_toggle_ciph_label">Alterna cifratura</string>
-  <string name="read_only">\u0020(Sola lettura)</string>
-  <string name="recompute_size">Ricalcola dimensioni in corso\u2026</string>
-  <string name="ring_volume_summary">Imposta volume per chiamate in ingresso</string>
-  <string name="ring_volume_title">Volume suoneria</string>
-  <string name="ringer_volume_instructions">Utilizzare i pulsanti del volume per regolare la suoneria</string>
-  <string name="ringer_volume_ringer_mode_label">Modalità suoneria</string>
-  <string name="ringer_volume_ringtone_label">Suoneria</string>
-  <string name="ringer_volume_screen_increasing_text">Suoneria crescente</string>
-  <string name="ringtone_summary">Imposta suoneria chiamata in ingresso predefinita</string>
-  <string name="ringtone_title">Suoneria telefono</string>
-  <string name="roaming">Roaming dati</string>
-  <string name="roaming_disable">Impossibile connettersi ai servizi di dati durante il roaming</string>
-  <string name="roaming_enable">Impossibile connettersi ai servizi di dati durante il roaming</string>
-  <string name="roaming_reenable_message">Connessione dati perduta. La rete domestica con il roaming dei dati è stata lasciata disattivata.</string>
-  <string name="roaming_reenable_title">Attenzione</string>
-  <string name="roaming_turn_it_on_button">Attivarla</string>
-  <string name="roaming_warning">Consentire il roaming dei dati? Può provocare l'aggiunta di notevoli spese per il roaming.</string>
-  <string name="scan_wifi">Scansione</string>
-  <string name="screen_off_timeout_label">Mai timeout quando sotto carica</string>
-  <string name="screen_timeout">Timeout schermo</string>
-  <string name="sd_card_settings_label">Scheda SD</string>
-  <string name="sd_eject">Smonta/Espelli scheda SD</string>
-  <string name="sd_memory">Scheda SD</string>
-  <string name="sd_unavailable">Non disponibile</string>
-  <string name="sdcard_changes_instructions">Le modifiche saranno effettive alla riconnessione del cavo USB</string>
-  <string name="sdcard_removal_alert_ok">OK</string>
-  <string name="sdcard_removal_alert_scolding">La scheda SD è stata rimossa quando ancora in uso.
-        Per evitare di danneggiare la scheda, utilizzare la schermata Impostazioni della scheda SD per smontare la scheda prima della rimozione.</string>
-  <string name="sdcard_removal_alert_title">Rimozione scheda SD non sicura</string>
-  <string name="sdcard_setting">Scheda SD</string>
-  <string name="sdcard_settings_available_bytes_label">Tipi disponibili:</string>
-  <string name="sdcard_settings_bad_removal_status">La scheda SD è stata rimossa mentre ancora in uso.</string>
-  <string name="sdcard_settings_mass_storage_status">La scheda SD è attualmente utilizzata da un dispositivo di memorizzazione di massa</string>
-  <string name="sdcard_settings_not_present_status">Nessuna scheda SD</string>
-  <string name="sdcard_settings_read_only_status">La scheda SD smontata è di sola lettura</string>
-  <string name="sdcard_settings_scanning_status">Ricerca del supporto nella scheda SD\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">Abilita dispositivo di memorizzazione di massa USB</string>
-  <string name="sdcard_settings_total_bytes_label">Byte totali:</string>
-  <string name="sdcard_settings_unmounted_status">È ora possibile rimuovere la scheda SD</string>
-  <string name="sdcard_settings_used_bytes_label">Byte utilizzati:</string>
-  <string name="sdcard_unmount">Smonta scheda SD</string>
-  <string name="sdcard_unmountable_alert_ok">OK</string>
-  <string name="sdcard_unmountable_alert_title">Scheda SD non leggibile</string>
-  <string name="sdcard_unmountable_message">Impossibile leggere la scheda SD.
-        Il file system può essere danneggiato o la scheda difettosa.</string>
-  <string name="security">Protezione</string>
-  <string name="security_and_data_label">Protezione e dati</string>
-  <string name="security_passwords_title">Password</string>
-  <string name="security_settings_desc">Specificare in questo campo il contenuto a cui può accedere l'applicazione sul telefono:</string>
-  <string name="security_settings_summary">Località, sblocco schermo, blocco scheda SIM</string>
-  <string name="security_settings_title">Protezione e ubicazione</string>
-  <string name="select_your_language">Selezionare la lingua</string>
-  <string name="set_lock_pattern_label">Digitare il codice di sblocco:</string>
-  <string name="settings_chooser_pick_string">
-        Inoltrare l'icona delle impostazioni a:
-    </string>
-  <string name="settings_label">Impostazioni</string>
-  <string name="settings_license_activity_loading">Caricamento in corso\u2026</string>
-  <string name="settings_license_activity_title">Apri licenze origine</string>
-  <string name="settings_license_activity_unavailable">Si è verificato un problema nel caricamente delle licenze.</string>
-  <string name="show_password">Password visibili</string>
-  <string name="show_password_summary">Visualizza password durante la digitazione</string>
-  <string name="signal">Intensità segnale</string>
-  <string name="silent_mode_summary">Tutti i suoni eccetto quelli multimediali verranno disattivati</string>
-  <string name="silent_mode_title">Modalità automatica</string>
-  <string name="sim_bad_pin">PIN errato</string>
-  <string name="sim_change_failed">Impossibile cambiare il PIN.\nÈ probabile che il PIN non sia corretto.</string>
-  <string name="sim_change_pin">Cambia PIN SIM</string>
-  <string name="sim_change_succeeded">PIN SIM cambiato</string>
-  <string name="sim_disable_sim_lock">Disabilita blocco scheda SIM</string>
-  <string name="sim_enable_sim_lock">Abilita blocco scheda SIM</string>
-  <string name="sim_enter_cancel">Annulla</string>
-  <string name="sim_enter_new">Digita nuovo PIN</string>
-  <string name="sim_enter_ok">OK</string>
-  <string name="sim_enter_old">Digita PIN precedente</string>
-  <string name="sim_enter_pin">Digitare il PIN SIM</string>
-  <string name="sim_lock_failed">Impossibile modificare lo stato di blocco della scheda SIM.\nÈ possibile che il PIN non sia corretto.</string>
-  <string name="sim_lock_off">Richiede il PIN per utilizzare il telefono</string>
-  <string name="sim_lock_on">Richiede il PIN per utilizzare il telefono</string>
-  <string name="sim_lock_settings">Impostazioni blocco scheda SIM</string>
-  <string name="sim_lock_settings_category">Configurazione blocco scheda SIM</string>
-  <string name="sim_lock_settings_title">Blocco scheda SIM</string>
-  <string name="sim_pin_change">Modifica codice PIN</string>
-  <string name="sim_pin_toggle">Sblocca scheda SIM</string>
-  <string name="sim_pins_dont_match">I PIN non corrispondono</string>
-  <string name="sim_reenter_new">Reimmetti nuovo PIN</string>
-  <string name="skip_button_label">Annulla</string>
-  <string name="small_font">Piccolo</string>
-  <string name="software_version">Versione software</string>
-  <string name="sort_order_alpha">Ordine alfabetico</string>
-  <string name="sort_order_size">Ordina per dimensioni (decrescente)</string>
-  <string name="sound_and_display_settings">Suono e visualizzazione</string>
-  <string name="sound_and_display_settings_summary">Imposta suonerie, notifiche e luminosità dello schermo</string>
-  <string name="sound_effects_enable_summary_off">Riproduci audio quando si esegue una selezione schermo</string>
-  <string name="sound_effects_enable_summary_on">Riproduci audio quando si esegue una selezione schermo</string>
-  <string name="sound_effects_enable_title">Selezione sonora</string>
-  <string name="sound_settings">Impostazioni audio</string>
-  <string name="status_authenticating">Autenticazione in corso\u2026</string>
-  <string name="status_awake_time">Tempo riattivazione</string>
-  <string name="status_bt_address">Indirizzo Bluetooth</string>
-  <string name="status_connected">Connesso</string>
-  <string name="status_connecting">Connessione in corso\u2026</string>
-  <string name="status_data_state">Accesso ai dati</string>
-  <string name="status_disconnected">Disconnesso</string>
-  <string name="status_disconnecting">Disconnessione in corso\u2026</string>
-  <string name="status_failed">Non riuscito</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imei_sv">IMEI SV</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Tipo di rete</string>
-  <string name="status_number">Numero di telefono</string>
-  <string name="status_obtaining_ip">Ottenimento indirizzo in corso\u2026</string>
-  <string name="status_operator">Rete</string>
-  <string name="status_roaming">Roaming</string>
-  <string name="status_scanning">Scansione in corso\u2026</string>
-  <string name="status_service_state">Stato servizio</string>
-  <string name="status_signal_strength">Intensità segnale</string>
-  <string name="status_unavailable">Non disponibile</string>
-  <string name="status_up_time">Tempo di riattivazione</string>
-  <string name="status_wifi_mac_address">Indirizzo MAC Wi-Fi</string>
-  <string name="stay_on">Schermo sempre attivo quando sotto carica</string>
-  <string name="storage_label">Dispositivo di memorizzazione</string>
-  <string name="storage_settings_summary">Smontare la scheda SD, visualizzare il dispositivo di memorizzazione disponibile</string>
-  <string name="storage_settings_title">Scheda SD e memoria telefono</string>
-  <string name="sum_carrier_select">Selezionare un operatore di rete</string>
-  <string name="summary_connection_failed">Connessione non riuscita, selezionare per riprovare</string>
-  <string name="summary_not_in_range">Fuori intervallo</string>
-  <string name="summary_remembered">Memorizzato</string>
-  <string name="sync_automatically">Sincronizzazione automatica</string>
-  <string name="sync_calendar">Calendario</string>
-  <string name="sync_contacts">Contatti</string>
-  <string name="sync_disabled">Selezionare per sincronizzare i dati automaticamente</string>
-  <string name="sync_do_nothing">Non eseguire alcuna operazione per ora.</string>
-  <string name="sync_enabled">Sincronizza dati automaticamente</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_is_failing">La sincronizzazione presenta dei problemi. L'operazione verrà presto ripristinata.</string>
-  <string name="sync_menu_sync_cancel">Annulla sincronizzazione</string>
-  <string name="sync_menu_sync_now">Sincronizza ora</string>
-  <string name="sync_really_delete">Eliminare gli elementi.</string>
-  <string name="sync_settings">Sincronizzazione dati</string>
-  <string name="sync_settings_summary">Scegliere le applicazioni sincronizzate</string>
-  <string name="sync_too_many_deletes">Limite di eliminazioni superato</string>
-  <string name="sync_too_many_deletes_desc">Esistono %d elementi eliminati per %s, account %s. Specificare l'operazione da eseguire.</string>
-  <string name="sync_undo_deletes">Annullare le eliminazioni.</string>
-  <string name="target_build_field_label">Tipo di build richiesta</string>
-  <string name="team_title">Team</string>
-  <string name="telephony_apn_label">APN:</string>
-  <string name="telephony_mcc_label">MCC:</string>
-  <string name="telephony_mmsc_label">MMSC:</string>
-  <string name="telephony_mmsport_label">Porta MMS:</string>
-  <string name="telephony_mmsproxy_label">Proxy MMS:</string>
-  <string name="telephony_mnc_label">MNC:</string>
-  <string name="telephony_name_label">Nome:</string>
-  <string name="telephony_password_label">Password:</string>
-  <string name="telephony_port_label">Porta:</string>
-  <string name="telephony_proxy_label">Proxy:</string>
-  <string name="telephony_server_label">Server:</string>
-  <string name="telephony_user_label">Utente:</string>
-  <string name="terms_title">Termini e condizioni</string>
-  <string name="testing">Verifica in corso</string>
-  <string name="testing_battery_info">Informazioni batteria</string>
-  <string name="testing_phone_info">Informazioni sul telefono</string>
-  <string name="testing_sim_toolkit">Kit di strumenti SIM</string>
-  <string name="text_category">Impostazioni testo</string>
-  <string name="total_size_label">Totale</string>
-  <string name="turn_off_qxdm">Disabilita log SD QXDM</string>
-  <string name="turn_off_radio">Disattiva radio</string>
-  <string name="turn_on_qxdm">Abilita log SD QXDM</string>
-  <string name="turn_on_radio">Attiva radio</string>
-  <string name="underdeveloped_settings_label">Impostazioni ancora poco sviluppate</string>
-  <string name="uninstall_failed">Impossibile disinstallare l'applicazione.</string>
-  <string name="uninstall_text">Disinstalla</string>
-  <string name="unknown">Sconosciuto</string>
-  <string name="vibrate_summary">Vibrazione telefono per chiamate in ingresso</string>
-  <string name="vibrate_title">Vibrazione telefono</string>
-  <string name="wallpaper_label">Sfondo</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Reti Wi-Fi</string>
-  <string name="wifi_add_other_network">Aggiungere una rete Wi-Fi</string>
-  <string name="wifi_context_menu_change_password">Cambia password</string>
-  <string name="wifi_context_menu_connect">Connesso alla rete</string>
-  <string name="wifi_context_menu_forget">Ignora rete</string>
-  <string name="wifi_dhcp_timeout_error">Si è verificato un errore durante l'ottenimento di un indirizzo IP.</string>
-  <string name="wifi_dns1">DNS 1</string>
-  <string name="wifi_dns2">DNS 2</string>
-  <string name="wifi_dns3">DNS 3</string>
-  <string name="wifi_dns_label">dns:</string>
-  <string name="wifi_error">Errore</string>
-  <string name="wifi_gateway">Gateway</string>
-  <string name="wifi_gateway_label">gateway:</string>
-  <string name="wifi_generic_connection_error">Si è verificato un problema durante la connessione alla rete. Riprovare.</string>
-  <string name="wifi_host_ip">ip host:</string>
-  <string name="wifi_ip_address">Indirizzo IP</string>
-  <string name="wifi_ip_settings_invalid_ip">Digitare un indirizzo IP valido.</string>
-  <string name="wifi_ip_settings_menu_cancel">Annulla</string>
-  <string name="wifi_ip_settings_menu_save">Salva</string>
-  <string name="wifi_ip_settings_titlebar">Impostazioni IP</string>
-  <string name="wifi_link_speed">Velocità</string>
-  <string name="wifi_menu_advanced">Avanzate</string>
-  <string name="wifi_netmask">Netmask</string>
-  <string name="wifi_netmask_label">maschera di rete:</string>
-  <string name="wifi_notify_open_networks">Notifica rete</string>
-  <string name="wifi_notify_open_networks_summary">Notifica quando è disponibile una rete aperta</string>
-  <string name="wifi_password_incorrect_error">La password di rete immessa non è corretta. Riprovare.</string>
-  <string name="wifi_password_unchanged">(non modificato)</string>
-  <string name="wifi_prefer_wifi">Preferisci Wi-Fi</string>
-  <string name="wifi_quick_toggle_summary">Selezionare per attivare Wi-Fi</string>
-  <string name="wifi_quick_toggle_title">Wi-Fi</string>
-  <string name="wifi_save_config">Salva</string>
-  <string name="wifi_screen_activate_text">Attiva</string>
-  <string name="wifi_screen_dhcp_text">automatico</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">manuale</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wi-Fi è in funzione</string>
-  <string name="wifi_screen_test_text">Test</string>
-  <string name="wifi_security">Protezione</string>
-  <string name="wifi_security_open">Apri</string>
-  <string name="wifi_security_unknown">Sconosciuto</string>
-  <string name="wifi_security_verbose_open">Apri rete</string>
-  <string name="wifi_security_verbose_wep">Protetto con WEP</string>
-  <string name="wifi_security_verbose_wpa">Protetto con WPA</string>
-  <string name="wifi_security_verbose_wpa2">Protetto con WPA2</string>
-  <string name="wifi_security_wep">WEP</string>
-  <string name="wifi_security_wpa">WPA</string>
-  <string name="wifi_security_wpa2">WPA2</string>
-  <string name="wifi_settings">Impostazioni Wi-Fi</string>
-  <string name="wifi_settings_category">Impostazioni Wi-Fi</string>
-  <string name="wifi_settings_summary">Configura e gestisci punti di accesso wireless</string>
-  <string name="wifi_show_password">Visualizza password.</string>
-  <string name="wifi_signal_0">Scarsa</string>
-  <string name="wifi_signal_1">Mediocre</string>
-  <string name="wifi_signal_2">Buona</string>
-  <string name="wifi_signal_3">Eccellente</string>
-  <string name="wifi_starting">Disattivazione in corso\u2026</string>
-  <string name="wifi_status">Stato</string>
-  <string name="wifi_stopping">Disattivazione in corso\u2026</string>
-  <string name="wifi_type_ssid">Digitare il SSID della rete:</string>
-  <string name="wifi_use_static_ip">Usa IP statico</string>
-  <string name="wifi_wlan_id">id wlan:</string>
-</resources>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
new file mode 100644
index 0000000..46e7aed
--- /dev/null
+++ b/res/values-ja/arrays.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+  <string-array name="timezone_filters">
+    <item>"アメリカ"</item>
+    <item>"ヨーロッパ"</item>
+    <item>"アフリカ"</item>
+    <item>"アジア"</item>
+    <item>"オーストラリア"</item>
+    <item>"太平洋"</item>
+    <item>"すべて"</item>
+  </string-array>
+  <string-array name="screen_timeout_entries">
+    <item>"15秒"</item>
+    <item>"30秒"</item>
+    <item>"1分"</item>
+    <item>"2分間"</item>
+    <item>"10分間"</item>
+    <item>"タイムアウトしない"</item>
+  </string-array>
+  <string-array name="wifi_security_entries">
+    <item>"自動"</item>
+    <item>"なし"</item>
+    <item>"WEP"</item>
+    <item>"WPA Personal"</item>
+    <item>"WPA2 Personal"</item>
+  </string-array>
+  <string-array name="wifi_security_without_auto_entries">
+    <item>"なし"</item>
+    <item>"WEP"</item>
+    <item>"WPA Personal"</item>
+    <item>"WPA2 Personal"</item>
+  </string-array>
+  <string-array name="wifi_wep_type">
+    <item>"自動"</item>
+    <item>"WEP ASCII"</item>
+    <item>"16進のWEP"</item>
+  </string-array>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
new file mode 100644
index 0000000..7c564ed
--- /dev/null
+++ b/res/values-ja/strings.xml
@@ -0,0 +1,729 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="device_info_default">"不明"</string>
+    <string name="device_info_uptime">"起動時間"</string>
+    <string name="device_info_awaketime">"使用時間"</string>
+    <string name="device_info_asleeptime">"スリープ時間"</string>
+    <string name="turn_on_radio">"無線通信をオン"</string>
+    <string name="turn_off_radio">"無線通信オフ"</string>
+    <string name="turn_on_qxdm">"QXDM SDログを有効にする"</string>
+    <string name="turn_off_qxdm">"QXDM SDログを無効にする"</string>
+    <string name="radioInfo_menu_viewADN">"SIMのアドレス帳を表示"</string>
+    <string name="radioInfo_menu_viewFDN">"固定ダイヤルを表示"</string>
+    <string name="radioInfo_menu_viewSDN">"サービス電話番号を表示"</string>
+    <string name="radioInfo_menu_getPDP">"PDPリストを取得"</string>
+    <string name="radioInfo_menu_enableData">"データ接続を有効にする"</string>
+    <string name="radioInfo_menu_disableData">"データ接続を無効にする"</string>
+    <string name="radioInfo_menu_enableDataOnBoot">"起動時にデータを有効にする"</string>
+    <string name="radioInfo_menu_disableDataOnBoot">"起動時にデータを無効にする"</string>
+    <string name="radioInfo_service_in">"使用中"</string>
+    <string name="radioInfo_service_out">"圏外"</string>
+    <string name="radioInfo_service_emergency">"緊急電話のみ"</string>
+    <string name="radioInfo_service_off">"無線通信オフ"</string>
+    <string name="radioInfo_roaming_in">"ローミング"</string>
+    <string name="radioInfo_roaming_not">"ローミングなし"</string>
+    <string name="radioInfo_phone_idle">"アイドル"</string>
+    <string name="radioInfo_phone_ringing">"着信中"</string>
+    <string name="radioInfo_phone_offhook">"通話中"</string>
+    <string name="radioInfo_data_disconnected">"切断"</string>
+    <string name="radioInfo_data_connecting">"接続中"</string>
+    <string name="radioInfo_data_connected">"接続"</string>
+    <string name="radioInfo_data_suspended">"強制停止"</string>
+    <string name="radioInfo_unknown">"不明"</string>
+    <string name="radioInfo_display_packets">"pkts"</string>
+    <string name="radioInfo_display_bytes">"バイト"</string>
+    <string name="radioInfo_display_dbm">"dBm"</string>
+    <string name="radioInfo_display_asu">"asu"</string>
+    <string name="radioInfo_lac">"LAC"</string>
+    <string name="radioInfo_cid">"CID"</string>
+    <string name="sdcard_unmount">"SDカードのマウント解除"</string>
+    <string name="small_font">"小"</string>
+    <string name="medium_font">"中"</string>
+    <string name="large_font">"大"</string>
+    <string name="font_size_save">"OK"</string>
+    <string name="sdcard_setting">"SDカード"</string>
+    <string name="screen_off_timeout_label">"充電中はタイムアウトにしない"</string>
+    <string name="stay_on">"充電中に画面をスリープにしない"</string>
+    <string name="app_launcher_newView_text">"新しいAppLauncher"</string>
+    <string name="battery_info_status_label">"バッテリステータス:"</string>
+    <string name="battery_info_scale_label">"バッテリ残量表示:"</string>
+    <string name="battery_info_level_label">"バッテリレベル:"</string>
+    <string name="battery_info_health_label">"バッテリの状態:"</string>
+    <string name="battery_info_technology_label">"バッテリ技術:"</string>
+    <string name="battery_info_voltage_label">"バッテリ電圧:"</string>
+    <string name="battery_info_voltage_units">"mV"</string>
+    <string name="battery_info_temperature_label">"バッテリ温度:"</string>
+    <string name="battery_info_temperature_units">"°C"</string>
+    <string name="battery_info_uptime">"起動してからの時間:"</string>
+    <string name="battery_info_awake_battery">"バッテリのアウェイク時間:"</string>
+    <string name="battery_info_awake_plugged">"充電時のアウェイク時間:"</string>
+    <string name="battery_info_screen_on">"画面をオンにした時刻:"</string>
+    <string name="battery_info_status_unknown">"不明"</string>
+    <string name="battery_info_status_charging">"充電中"</string>
+    <string name="battery_info_status_charging_ac">"(AC)"</string>
+    <string name="battery_info_status_charging_usb">"(USB)"</string>
+    <string name="battery_info_status_discharging">"放電中"</string>
+    <string name="battery_info_status_not_charging">"非充電中"</string>
+    <string name="battery_info_status_full">"フル"</string>
+    <string name="battery_info_health_unknown">"不明"</string>
+    <string name="battery_info_health_good">"良い"</string>
+    <string name="battery_info_health_overheat">"オーバーヒート"</string>
+    <string name="battery_info_health_dead">"残量なし"</string>
+    <string name="battery_info_health_over_voltage">"過電圧"</string>
+    <string name="battery_info_health_unspecified_failure">"不明なエラー"</string>
+    <string name="bluetooth">"Bluetooth"</string>
+    <string name="bluetooth_stopping">"Bluetoothを停止中..."</string>
+    <!-- no translation found for bluetooth_disabled (3281654100455454605) -->
+    <skip />
+    <!-- no translation found for bluetooth_enabled (314506563815464155) -->
+    <skip />
+    <string name="bluetooth_enabling">"Bluetoothをオンにしています..."</string>
+    <string name="bluetooth_visibility">"検出可能"</string>
+    <string name="bluetooth_is_discoverable">"<xliff:g id="DISCOVERABLE_TIME_PERIOD">%1$s</xliff:g>秒間検出可能..."</string>
+    <!-- no translation found for bluetooth_not_discoverable (128269993123955177) -->
+    <skip />
+    <string name="bluetooth_devices">"Bluetoothデバイス"</string>
+    <string name="bluetooth_device_name">"デバイス名"</string>
+    <string name="bluetooth_name_not_set">"名前が設定されていない場合、アカウント名を使用する"</string>
+    <string name="bluetooth_scan_for_devices">"デバイスのスキャン"</string>
+    <string name="bluetooth_clear_list">"デバイスリストをクリア"</string>
+    <!-- no translation found for bluetooth_disconnect_blank (8102076504922229274) -->
+    <skip />
+    <string name="bluetooth_connected">"接続"</string>
+    <!-- no translation found for bluetooth_disconnected (6557104142667339895) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (8913264760027764974) -->
+    <skip />
+    <string name="bluetooth_connecting">"接続中..."</string>
+    <!-- no translation found for bluetooth_unknown (644716244548801421) -->
+    <skip />
+    <string name="bluetooth_not_connected">"このデバイスをペアに設定する"</string>
+    <string name="bluetooth_failed_to_enable">"Bluetoothをオンにできません"</string>
+    <string name="bluetooth_pairing">"ペアとして設定中..."</string>
+    <!-- no translation found for failed_to_pair (7648018965110976948) -->
+    <skip />
+    <!-- no translation found for failed_to_connect (4770209428036813667) -->
+    <skip />
+    <string name="bluetooth_paired">"ペア設定"</string>
+    <string name="bluetooth_paired_not_nearby">"ペア設定"</string>
+    <string name="bluetooth_device">"ハンズフリー/ヘッドセット"</string>
+    <string name="bluetooth_disconnect">"接続を解除"</string>
+    <string name="bluetooth_connect">"接続"</string>
+    <string name="bluetooth_unpair">"ペアを解除"</string>
+    <string name="bluetooth_pair">"ペアに設定"</string>
+    <string name="progress_scanning">"スキャン中"</string>
+    <string name="bluetooth_notif_ticker">"Bluetoothペア設定リクエスト"</string>
+    <!-- no translation found for bluetooth_notif_title (2485175521845371514) -->
+    <skip />
+    <string name="bluetooth_notif_message">"ペアとして設定"</string>
+    <string name="date_and_time">"日付と時刻の設定"</string>
+    <string name="date_time_12_hour_sample">"1:00 PM"</string>
+    <string name="date_time_24_hour_sample">"13:00"</string>
+    <string name="choose_timezone">"タイムゾーンの選択"</string>
+    <string name="display_preview_label">"プレビュー:"</string>
+    <string name="display_font_size_label">"フォントサイズ:"</string>
+    <!-- no translation found for intent_sender_data_label (6332324780477289261) -->
+    <skip />
+    <string name="intent_sender_sendbroadcast_text">"<xliff:g id="BROADCAST">broadcast</xliff:g>を配信"</string>
+    <string name="intent_sender_action_label">"<xliff:g id="ACTION">Action</xliff:g>:"</string>
+    <string name="intent_sender_startactivity_text">"<xliff:g id="ACTIVITY">activity</xliff:g>を開始"</string>
+    <string name="intent_sender_resource_label">"<xliff:g id="RESOURCE">Resource</xliff:g>:"</string>
+    <string name="intent_sender_account_label">"アカウント:"</string>
+    <string name="keyguard_pw_mod_text">"ロックパターンの選択"</string>
+    <string name="keyguard_pin_mod_text">"PINの変更"</string>
+    <string name="keyguard_label">"キーガード"</string>
+    <string name="keyguard_sim_pin_label">"SIM PIN"</string>
+    <string name="keyguard_password_old_password_error_text">"入力した古いパスワードは正しくありません。再入力してください。"</string>
+    <string name="keyguard_password_button_text">"OK"</string>
+    <string name="keyguard_password_confirm_new_label">"新しいパスワードの確認入力:"</string>
+    <string name="keyguard_password_new_label">"新しいパスワード:"</string>
+    <string name="keyguard_password_old_label">"古いパスワード:"</string>
+    <string name="keyguard_password_mismatch_error_text">"2つのパスワードが一致しません。再入力してください。"</string>
+    <string name="proxy_clear_text">"クリア"</string>
+    <string name="proxy_port_label">"ポート"</string>
+    <string name="proxy_defaultView_text">"デフォルトに戻す"</string>
+    <string name="proxy_action_text">"保存"</string>
+    <string name="proxy_hostname_label">"ホスト名"</string>
+    <string name="proxy_error">"注意"</string>
+    <string name="proxy_error_dismiss">"OK"</string>
+    <string name="proxy_error_invalid_host">"入力したホスト名は無効です。"</string>
+    <string name="proxy_error_empty_port">"[ポート]フィールドに入力してください。"</string>
+    <string name="proxy_error_empty_host_set_port">"[ホスト]フィールドが空の場合は、[ポート]フィールドも空にしてください。"</string>
+    <string name="proxy_error_invalid_port">"入力したポートは無効です。"</string>
+    <string name="radio_info_signal_location_label">"位置:"</string>
+    <string name="radio_info_neighboring_location_label">"近くのCID:"</string>
+    <string name="radio_info_data_attempts_label">"データの試行:"</string>
+    <string name="radio_info_imsi_label">"IMSI:"</string>
+    <string name="radio_info_gprs_service_label">"GPRSサービス:"</string>
+    <string name="radio_info_roaming_label">"ローミング:"</string>
+    <string name="radio_info_imei_label">"IMEI:"</string>
+    <string name="radio_info_call_redirect_label">"通話のリダイレクト:"</string>
+    <string name="radio_info_ppp_resets_label">"ブート後のPPPリセット回数:"</string>
+    <string name="radio_info_gsm_disconnects_label">"GSM切断:"</string>
+    <string name="radio_info_current_network_label">"現在のネットワーク:"</string>
+    <string name="radio_info_data_successes_label">"データ成功:"</string>
+    <string name="radio_info_ppp_received_label">"PPP受信:"</string>
+    <string name="radio_info_gsm_service_label">"GSMサービス:"</string>
+    <string name="radio_info_signal_strength_label">"信号の状態:"</string>
+    <string name="radio_info_call_status_label">"通話ステータス:"</string>
+    <string name="radio_info_ppp_sent_label">"PPP送信:"</string>
+    <string name="radio_info_radio_resets_label">"無線通信のリセット:"</string>
+    <string name="radio_info_message_waiting_label">"メッセージ待機中:"</string>
+    <string name="radio_info_phone_number_label">"電話番号:"</string>
+    <string name="radio_info_band_mode_label">"無線バンドを選択"</string>
+    <string name="radio_info_network_type_label">"ネットワークタイプ:"</string>
+    <string name="radio_info_set_perferred_label">"優先ネットワークタイプを設定"</string>
+    <string name="radio_info_ping_ipaddr">"IPアドレスのPing:"</string>
+    <string name="radio_info_ping_hostname">"ホスト名 (www.google.co.jp) のPing:"</string>
+    <string name="radio_info_http_client_test">"HTTPクライアントテスト:"</string>
+    <string name="radio_info_toggle_ciph_label">"暗号化の切り替え"</string>
+    <string name="ping_test_label">"pingテストの実行"</string>
+    <string name="radio_info_smsc_label">"SMSC:"</string>
+    <string name="radio_info_smsc_update_label">"更新"</string>
+    <string name="radio_info_smsc_refresh_label">"更新"</string>
+    <string name="band_mode_title">"GSM/UMTSバンドの設定"</string>
+    <string name="band_mode_loading">"バンドリストを読み込み中..."</string>
+    <string name="band_mode_set">"設定"</string>
+    <string name="band_mode_failed">"失敗"</string>
+    <string name="band_mode_succeeded">"成功"</string>
+    <string name="ringer_volume_ringer_mode_label">"着信音のモード"</string>
+    <string name="ringer_volume_screen_increasing_text">"音量を徐々にアップ"</string>
+    <string name="ringer_volume_ringtone_label">"着信音"</string>
+    <string name="ringer_volume_instructions">"音量ボタンで着信音の音量を調整します"</string>
+    <string name="sdcard_changes_instructions">"USBケーブルの再接続時に変更が有効になります"</string>
+    <string name="sdcard_settings_screen_mass_storage_text">"USBマスストレージを有効にする"</string>
+    <string name="sdcard_settings_total_bytes_label">"合計バイト数:"</string>
+    <string name="sdcard_settings_not_present_status">"SDカードがありません"</string>
+    <string name="sdcard_settings_available_bytes_label">"利用可能バイト数:"</string>
+    <string name="sdcard_settings_mass_storage_status">"SDカードをマスストレージデバイスとして使用中"</string>
+    <string name="sdcard_settings_unmounted_status">"SDカードを安全に取り外せます"</string>
+    <string name="sdcard_settings_bad_removal_status">"SDカードが使用中に取り外されました。"</string>
+    <string name="sdcard_settings_used_bytes_label">"使用済みバイト数:"</string>
+    <string name="sdcard_settings_scanning_status">"メディア用のSDカードをスキャン中..."</string>
+    <string name="sdcard_settings_read_only_status">"読み取り専用としてSDカードをマウントしました"</string>
+    <string name="sdcard_removal_alert_title">"安全でないSDカードの取り外し"</string>
+    <string name="sdcard_unmountable_alert_title">"SDカードが読み取れません"</string>
+    <string name="telephony_user_label">"ユーザー:"</string>
+    <string name="telephony_server_label">"サーバー:"</string>
+    <string name="telephony_name_label">"名前:"</string>
+    <string name="telephony_mmsc_label">"MMSC:"</string>
+    <string name="telephony_apn_label">"APN:"</string>
+    <string name="telephony_mcc_label">"MCC:"</string>
+    <string name="telephony_port_label">"ポート:"</string>
+    <string name="telephony_password_label">"パスワード:"</string>
+    <string name="telephony_proxy_label">"プロキシ:"</string>
+    <string name="telephony_mnc_label">"MNC:"</string>
+    <string name="telephony_mmsproxy_label">"MMSプロキシ:"</string>
+    <string name="telephony_mmsport_label">"MMSポート:"</string>
+    <string name="next_label">"次へ"</string>
+    <string name="language_picker_title">"ロケール"</string>
+    <string name="select_your_language">"言語を選択"</string>
+    <string name="activity_picker_label">"操作の選択"</string>
+    <string name="device_info_label">"デバイス情報"</string>
+    <string name="battery_info_label">"バッテリ情報"</string>
+    <string name="display_label">"表示"</string>
+    <string name="phone_info_label">"携帯電話情報"</string>
+    <string name="sd_card_settings_label">"SDカード"</string>
+    <string name="proxy_settings_label">"プロキシ設定"</string>
+    <string name="cancel">"キャンセル"</string>
+    <string name="settings_label">"設定"</string>
+    <string name="airplane_mode">"機内モード"</string>
+    <!-- no translation found for airplane_mode_summary (3154817401368780988) -->
+    <skip />
+    <string name="airplane_mode_turning_on">"ワイヤレス接続を無効にしています..."</string>
+    <string name="airplane_mode_turning_off">"ワイヤレス接続を有効にしています..."</string>
+    <string name="radio_controls_title">"ワイヤレス制御"</string>
+    <string name="radio_controls_summary">"Wi-Fi、Bluetooth、機内モード、モバイルネットワークを管理"</string>
+    <string name="date_and_time_settings_title">"日付と時刻"</string>
+    <string name="date_and_time_settings_summary">"日付、時刻、タイムゾーン、形式を設定する"</string>
+    <string name="date_time_auto">"自動"</string>
+    <string name="date_time_auto_summaryOn">"ネットワーク指定の値を使用"</string>
+    <string name="date_time_auto_summaryOff">"ネットワーク指定の値を使用"</string>
+    <string name="date_time_24hour">"24時間表示を使用"</string>
+    <string name="date_time_set_time">"時刻を設定"</string>
+    <!-- no translation found for date_time_set_timezone (5045627174274377814) -->
+    <skip />
+    <string name="date_time_set_date">"日付を設定"</string>
+    <string name="date_time_date_format">"日付の形式を選択"</string>
+    <!-- no translation found for zone_list_menu_sort_alphabetically (5683377702671088588) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (2720190443744884114) -->
+    <skip />
+    <string name="security_settings_title">"セキュリティと位置"</string>
+    <!-- no translation found for security_settings_summary (8145883103362174000) -->
+    <skip />
+    <string name="security_passwords_title">"パスワード"</string>
+    <string name="bluetooth_quick_toggle_title">"Bluetooth"</string>
+    <!-- no translation found for bluetooth_quick_toggle_summary (5293641680139873341) -->
+    <skip />
+    <string name="bluetooth_settings">"Bluetooth設定"</string>
+    <string name="bluetooth_settings_title">"Bluetooth設定"</string>
+    <string name="bluetooth_settings_summary">"接続を管理、デイバイス名を設定、検出可能に設定"</string>
+    <!-- no translation found for bluetooth_pin_entry (5627349871303455279) -->
+    <skip />
+    <string name="bluetooth_device_info">"Bluetoothデバイス情報"</string>
+    <string name="bluetooth_pairing_msg">"ペアとして設定中..."</string>
+    <!-- no translation found for bluetooth_enter_pin_msg (7551139612735632370) -->
+    <skip />
+    <!-- no translation found for bluetooth_error_title (538287072376677166) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_error_message (2852744547246910349) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_alternate_error_message (1731286765420671521) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing_pin_error_message (6938408362011024289) -->
+    <skip />
+    <!-- no translation found for bluetooth_connecting_error_message (1779660510084746802) -->
+    <skip />
+    <string name="bluetooth_new_data">"新しいデータの入力"</string>
+    <string name="bluetooth_new_data_confirm">"OK"</string>
+    <string name="bluetooth_new_data_cancel">"キャンセル"</string>
+    <string name="bluetooth_scan_for_new_devices">"新しいデバイスのスキャン中..."</string>
+    <string name="bluetooth_discoverability_panel_title">"携帯電話側で設定..."</string>
+    <string name="bluetooth_discoverable">"<xliff:g id="DISCOVERABLE_TIME_PERIOD">%1$s</xliff:g>秒間検出可能"</string>
+    <string name="bluetooth_connectable">"接続可能時のみ"</string>
+    <string name="bluetooth_neither">"検出できないか、接続できません"</string>
+    <!-- no translation found for bluetooth_preference_scan_title (2277464653118896016) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (2368330460781052669) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (3997659895003244941) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (8220072022970148683) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (7611522504813927727) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (662992425948536144) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (7644014238070043798) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (2643129703569788771) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (6952214406025825164) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (3259633293424539529) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (1874975688666658946) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_a2dp (510833839847758664) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_headset (4876496372728623918) -->
+    <skip />
+    <!-- no translation found for bluetooth_summary_connected_to_a2dp_headset (3045032710457800891) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_title (528816860793581131) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_online_mode_title (3689050071425683114) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_online_mode_summary (1204424107263248336) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_advanced_profile_header_title (3764437426089639639) -->
+    <skip />
+    <!-- no translation found for bluetooth_a2dp_profile_summary_connected (963376081347721598) -->
+    <skip />
+    <!-- no translation found for bluetooth_headset_profile_summary_connected (7661070206715520671) -->
+    <skip />
+    <!-- no translation found for bluetooth_a2dp_profile_summary_use_for (4630849022250168427) -->
+    <skip />
+    <!-- no translation found for bluetooth_headset_profile_summary_use_for (8705753622443862627) -->
+    <skip />
+    <string name="wifi">"Wi-Fi"</string>
+    <string name="wifi_quick_toggle_title">"Wi-Fi"</string>
+    <!-- no translation found for wifi_quick_toggle_summary (1047950931623694366) -->
+    <skip />
+    <string name="wifi_settings">"Wi-Fi設定"</string>
+    <string name="wifi_settings_category">"Wi-Fi設定"</string>
+    <string name="wifi_settings_summary">"ワイヤレスアクセスポイントの設定、管理"</string>
+    <string name="forget_network">"切断"</string>
+    <string name="wifi_status">"ステータス"</string>
+    <string name="wifi_link_speed">"速度"</string>
+    <string name="wifi_signal_3">"非常に良い"</string>
+    <string name="wifi_signal_2">"良い"</string>
+    <string name="wifi_signal_1">"普通"</string>
+    <string name="wifi_signal_0">"悪い"</string>
+    <string name="security">"セキュリティ"</string>
+    <string name="wifi_security_open">"オープン"</string>
+    <string name="wifi_security_wep">"WEP"</string>
+    <string name="wifi_security_wpa">"WPA"</string>
+    <string name="wifi_security_wpa2">"WPA2"</string>
+    <string name="wifi_security_unknown">"不明"</string>
+    <string name="wifi_security_verbose_open">"オープンネットワーク"</string>
+    <string name="wifi_security_verbose_wep">"WEPにより保護"</string>
+    <string name="wifi_security_verbose_wpa">"WPAにより保護"</string>
+    <string name="wifi_security_verbose_wpa2">"WPA2により保護"</string>
+    <string name="ip_address">"IPアドレス"</string>
+    <string name="signal">"信号の状態"</string>
+    <string name="wifi_starting">"オンにしています..."</string>
+    <string name="wifi_stopping">"オフにしています..."</string>
+    <string name="wifi_error">"エラー"</string>
+    <string name="error_starting">"Wi-Fiを開始できません"</string>
+    <string name="error_stopping">"Wi-Fiを停止できません"</string>
+    <string name="error_scanning">"ネットワークをスキャンできません"</string>
+    <string name="error_connecting">"ネットワークに接続できません"</string>
+    <string name="error_saving">"ネットワークを保存できません"</string>
+    <string name="connect">"接続"</string>
+    <string name="connect_to_blank">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続"</string>
+    <string name="please_type_passphrase">"ワイヤレス用パスワード"</string>
+    <string name="please_type_hex_key">"WEPの16進キー (0～9、A～F)"</string>
+    <string name="wifi_show_password">"パスワードを表示"</string>
+    <string name="scan_wifi">"スキャン"</string>
+    <string name="summary_not_in_range">"圏外"</string>
+    <string name="summary_remembered">"これまでの設定"</string>
+    <string name="summary_connection_failed">"接続できませんでした。選択すると再試行します。"</string>
+    <string name="wifi_access_points">"Wi-Fiネットワーク"</string>
+    <!-- no translation found for wifi_type_ssid (1326839657083292017) -->
+    <skip />
+    <string name="wifi_security">"セキュリティ"</string>
+    <string name="wifi_save_config">"保存"</string>
+    <string name="wifi_password_unchanged">"(変更なし)"</string>
+    <!-- no translation found for wifi_add_other_network (5499063300755575893) -->
+    <skip />
+    <string name="wifi_notify_open_networks">"ネットワークの通知"</string>
+    <string name="wifi_notify_open_networks_summary">"オープンネットワークが利用可能なときに通知する"</string>
+    <string name="wifi_password_incorrect_error">"入力したネットワークパスワードは正しくありません。再入力してください。"</string>
+    <string name="wifi_generic_connection_error">"ネットワーク接続に問題があります。もう一度試してください。"</string>
+    <string name="wifi_menu_advanced">"詳細設定"</string>
+    <string name="wifi_ip_settings_titlebar">"IP設定"</string>
+    <string name="wifi_ip_settings_menu_save">"保存"</string>
+    <string name="wifi_ip_settings_menu_cancel">"キャンセル"</string>
+    <string name="wifi_ip_settings_invalid_ip">"正しいIPアドレスを入力してください。"</string>
+    <string name="wifi_use_static_ip">"静的IPを使用"</string>
+    <string name="wifi_ip_address">"IPアドレス"</string>
+    <string name="wifi_dns1">"DNS 1"</string>
+    <string name="wifi_dns2">"DNS 2"</string>
+    <string name="wifi_gateway">"ゲートウェイ"</string>
+    <string name="wifi_netmask">"ネットマスク"</string>
+    <string name="wifi_context_menu_connect">"ネットワークに接続"</string>
+    <string name="wifi_context_menu_forget">"ネットワークへの接続を解除"</string>
+    <string name="wifi_context_menu_change_password">"パスワードを変更"</string>
+    <string name="wifi_advanced_titlebar">"詳細設定"</string>
+    <string name="wifi_setting_num_channels_title">"規制領域"</string>
+    <string name="wifi_setting_num_channels_summary">"使用するチャンネルの番号を設定する"</string>
+    <string name="wifi_setting_num_channels_error">"規制領域の設定で問題が発生しました。"</string>
+    <string name="wifi_setting_num_channels_channel_phrase">"チャンネル数<xliff:g id="NUM_CHANNELS">%1$d</xliff:g>件"</string>
+    <!-- no translation found for wifi_advanced_mac_address_title (6571335466330978393) -->
+    <skip />
+    <string name="fragment_status_scanning">"スキャン中..."</string>
+    <string name="fragment_status_connecting">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続中..."</string>
+    <string name="fragment_status_authenticating">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>による認証中..."</string>
+    <string name="fragment_status_obtaining_ip">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>からIPアドレスを取得中..."</string>
+    <string name="fragment_status_connected">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>に接続しました"</string>
+    <string name="fragment_status_disconnecting">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>から切断中..."</string>
+    <string name="fragment_status_disconnected">"切断"</string>
+    <string name="fragment_status_failed">"失敗"</string>
+    <string name="status_scanning">"スキャン中..."</string>
+    <string name="status_connecting">"接続中..."</string>
+    <string name="status_authenticating">"認証中..."</string>
+    <string name="status_obtaining_ip">"アドレスを取得中..."</string>
+    <string name="status_connected">"接続"</string>
+    <string name="status_disconnecting">"切断中..."</string>
+    <string name="status_disconnected">"切断"</string>
+    <string name="status_failed">"失敗"</string>
+    <string name="sound_and_display_settings">"音と表示"</string>
+    <string name="sound_settings">"音の設定"</string>
+    <string name="sound_and_display_settings_summary">"着信音、通知、画面の輝度を設定する"</string>
+    <string name="silent_mode_title">"マナーモード"</string>
+    <!-- no translation found for silent_mode_summary (9081534746589616108) -->
+    <skip />
+    <string name="ringtone_title">"着信音"</string>
+    <string name="ringtone_summary">"デフォルトの着信音を設定"</string>
+    <string name="ring_volume_title">"着信音の音量"</string>
+    <!-- no translation found for ring_volume_summary (8370699933709381329) -->
+    <skip />
+    <string name="vibrate_title">"携帯電話を振動"</string>
+    <string name="vibrate_summary">"着信時に携帯電話を振動"</string>
+    <string name="notification_sound_title">"通知音"</string>
+    <string name="notification_sound_summary">"デフォルトの通知音を設定する"</string>
+    <!-- no translation found for incoming_call_volume_title (6144314834963494752) -->
+    <skip />
+    <!-- no translation found for notification_volume_title (3363351773121138717) -->
+    <skip />
+    <!-- no translation found for checkbox_notification_same_as_incoming_call (1073644356290338921) -->
+    <skip />
+    <string name="notification_sound_dialog_title">"通知音を選択"</string>
+    <string name="media_volume_title">"メディアの音量"</string>
+    <string name="media_volume_summary">"音楽と動画の音量を設定"</string>
+    <string name="dtmf_tone_enable_title">"タッチの効果音"</string>
+    <string name="dtmf_tone_enable_summary_on">"ダイヤルパッドの使用時に音を鳴らす"</string>
+    <string name="dtmf_tone_enable_summary_off">"ダイヤルパッドの使用時に音を鳴らす"</string>
+    <string name="sound_effects_enable_title">"選択の効果音"</string>
+    <string name="sound_effects_enable_summary_on">"画面での選択時に音を鳴らす"</string>
+    <string name="sound_effects_enable_summary_off">"画面での選択時に音を鳴らす"</string>
+    <string name="sync_settings">"データの同期化"</string>
+    <string name="sync_settings_summary">"同期するアプリケーションを選択"</string>
+    <!-- no translation found for sync_settings_header_general_settings (1940413055002651212) -->
+    <skip />
+    <!-- no translation found for sync_settings_header_application_settings (7055646124074397344) -->
+    <skip />
+    <string name="sync_too_many_deletes">"削除の制限を超えました"</string>
+    <string name="sync_automatically">"自動同期化"</string>
+    <string name="sync_enabled">"自動的にデータを同期"</string>
+    <string name="sync_disabled">"自動的にデータを同期"</string>
+    <string name="sync_menu_sync_now">"今すぐ同期"</string>
+    <string name="sync_menu_sync_cancel">"同期をキャンセル"</string>
+    <string name="sync_gmail">"Gmail"</string>
+    <string name="sync_calendar">"カレンダー"</string>
+    <string name="sync_contacts">"連絡先"</string>
+    <string name="sync_too_many_deletes_desc">"アカウント「<xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>」で<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>の<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g>個の項目が削除されています。処理を選択してください。"</string>
+    <string name="sync_really_delete">"項目を削除します。"</string>
+    <string name="sync_undo_deletes">"削除を元に戻します。"</string>
+    <string name="sync_do_nothing">"今は何もしません。"</string>
+    <string name="sync_is_failing">"現在同期で問題が発生しています。しばらくお待ちください。"</string>
+    <string name="sync_plug"><font fgcolor="#ffffffff">"Google Syncへようこそ"</font>" "\n"このサービスを使用すると、データを同期して、どこからでも連絡先や予定などにアクセスできます。"</string>
+    <string name="display_settings">"表示設定"</string>
+    <!-- no translation found for animations_title (1062189037402346023) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (5690787466633824737) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (8847573219383668092) -->
+    <skip />
+    <string name="brightness">"輝度"</string>
+    <string name="screen_timeout">"画面のタイムアウト"</string>
+    <string name="dim_screen">"画面を暗くする"</string>
+    <string name="sim_lock_settings">"SIMカードのロック設定"</string>
+    <string name="sim_lock_settings_category">"SIMカードのロックを設定"</string>
+    <string name="sim_lock_settings_title">"SIMカードのロック"</string>
+    <string name="sim_pin_toggle">"SIMカードをロック"</string>
+    <string name="sim_lock_on">"携帯電話の使用にPINを要求"</string>
+    <string name="sim_lock_off">"携帯電話の使用にPINを要求"</string>
+    <!-- no translation found for sim_pin_change (6311414184279932368) -->
+    <skip />
+    <!-- no translation found for sim_enter_pin (6608715137008508432) -->
+    <skip />
+    <!-- no translation found for sim_enable_sim_lock (4517742794997166918) -->
+    <skip />
+    <!-- no translation found for sim_disable_sim_lock (7664729528754784824) -->
+    <skip />
+    <!-- no translation found for sim_enter_old (6074196344494634348) -->
+    <skip />
+    <!-- no translation found for sim_enter_new (8742727032729243562) -->
+    <skip />
+    <string name="sim_reenter_new">"新しいPINを再入力"</string>
+    <!-- no translation found for sim_change_pin (7328607264898359112) -->
+    <skip />
+    <string name="sim_bad_pin">"PINが正しくありません。"</string>
+    <string name="sim_pins_dont_match">"PINが一致しません。"</string>
+    <string name="sim_change_failed">"PINを変更できません。"\n"PINが正しくない可能性があります。"</string>
+    <string name="sim_change_succeeded">"SIM PINが変更されました"</string>
+    <string name="sim_lock_failed">"SIMカードのロック状態を変更できません。"\n"PINが正しくない可能性があります。"</string>
+    <string name="sim_enter_ok">"OK"</string>
+    <string name="sim_enter_cancel">"キャンセル"</string>
+    <string name="device_info_settings">"携帯電話のステータス"</string>
+    <string name="system_update_settings_list_item_title">"システムアップデート"</string>
+    <string name="system_update_settings_list_item_summary">"システムのアップデートをチェックする"</string>
+    <string name="firmware_version">"ファームウェアのバージョン"</string>
+    <string name="model_number">"モデル番号"</string>
+    <string name="baseband_version">"ベースバンドのバージョン"</string>
+    <string name="kernel_version">"カーネルのバージョン"</string>
+    <string name="build_number">"ビルド番号"</string>
+    <string name="device_info_not_available">"該当なし"</string>
+    <string name="device_status_activity_title">"ステータス"</string>
+    <string name="device_status">"ステータス"</string>
+    <string name="device_status_summary">"IMEI、電話番号、信号など"</string>
+    <string name="storage_settings_title">"SDカードと携帯電話のメモリ"</string>
+    <string name="storage_settings_summary">"SDカードのマウントを解除し、利用可能な容量を表示する"</string>
+    <string name="status_number">"電話番号"</string>
+    <string name="status_network_type">"ネットワークタイプ"</string>
+    <string name="status_data_state">"データアクセス"</string>
+    <string name="status_service_state">"サービスの状態"</string>
+    <string name="status_signal_strength">"信号の状態"</string>
+    <string name="status_roaming">"ローミング"</string>
+    <string name="status_operator">"ネットワーク"</string>
+    <string name="status_wifi_mac_address">"Wi-Fi MACアドレス"</string>
+    <string name="status_bt_address">"Bluetoothアドレス"</string>
+    <string name="status_unavailable">"不明"</string>
+    <string name="status_up_time">"稼働時間"</string>
+    <string name="status_awake_time">"使用時間"</string>
+    <string name="internal_memory">"携帯電話内部メモリ"</string>
+    <string name="sd_memory">"SDカード"</string>
+    <string name="memory_available">"空き容量"</string>
+    <string name="memory_size">"合計容量"</string>
+    <string name="sd_eject">"SDカードをマウント解除/取り出す"</string>
+    <string name="sd_unavailable">"使用不可"</string>
+    <string name="read_only">"(読み取り専用)"</string>
+    <string name="battery_status_title">"バッテリの状態"</string>
+    <string name="battery_level_title">"バッテリレベル:"</string>
+    <string name="apn_settings">"APN"</string>
+    <string name="apn_edit">"アクセスポイントの編集"</string>
+    <string name="apn_not_set">"&lt;未設定&gt;"</string>
+    <string name="apn_name">"名前"</string>
+    <string name="apn_apn">"APN"</string>
+    <string name="apn_http_proxy">"プロキシ"</string>
+    <string name="apn_http_port">"ポート"</string>
+    <string name="apn_user">"ユーザー名"</string>
+    <string name="apn_password">"パスワード"</string>
+    <string name="apn_server">"サーバー"</string>
+    <string name="apn_mmsc">"MMSC"</string>
+    <string name="apn_mms_proxy">"MMSプロキシ"</string>
+    <string name="apn_mms_port">"MMSポート"</string>
+    <string name="apn_mcc">"MCC"</string>
+    <string name="apn_mnc">"MNC"</string>
+    <string name="apn_type">"APNタイプ"</string>
+    <string name="menu_delete">"APNを削除"</string>
+    <string name="menu_new">"新しいAPN"</string>
+    <string name="menu_save">"保存"</string>
+    <string name="menu_cancel">"破棄"</string>
+    <string name="error_title">"注意"</string>
+    <string name="error_name_empty">"[名前]フィールドは空白にできません。"</string>
+    <string name="error_apn_empty">"APNを空にできません。"</string>
+    <string name="error_mcc_not3">"MCCのフィールドには3桁で指定してください。"</string>
+    <string name="error_mnc_not23">"MNCのフィールドには2桁か3桁で指定してください。"</string>
+    <string name="master_clear_title">"出荷時データにリセット"</string>
+    <string name="master_clear_summary">"携帯電話内のすべてのデータを消去"</string>
+    <string name="master_clear_desc">"この操作は携帯電話を出荷時の初期状態にリセットし、データとダウンロードしたアプリケーションをすべて消去します。"</string>
+    <string name="master_clear_button_text">"携帯電話をリセット"</string>
+    <string name="master_clear_final_desc">"データやアプリケーションをすべて消去して携帯電話をリセットしますか？この操作は元に戻せません。"</string>
+    <string name="master_clear_final_button_text">"すべて消去"</string>
+    <!-- no translation found for master_clear_gesture_prompt (1428645764883536750) -->
+    <skip />
+    <string name="master_clear_gesture_explanation">"携帯電話をリセットするには、ロック解除パターンを入力する必要があります。"</string>
+    <string name="master_clear_failed">"System Clearサービスが利用できないため、リセットされませんでした。"</string>
+    <string name="call_settings_title">"通話設定"</string>
+    <string name="call_settings_summary">"ボイスメール、電話転送、待機中の着信、発信者番号を設定する"</string>
+    <string name="network_settings_title">"モバイルネットワーク"</string>
+    <string name="network_settings_summary">"ローミング、ネットワーク、APNのオプションを設定する"</string>
+    <string name="location_title">"現在地の情報源"</string>
+    <string name="location_network_based">"ワイヤレスネットワークを使用"</string>
+    <string name="location_networks_disabled">"ワイヤレスネットワークを使用するアプリケーション (地図など) で位置を表示する"</string>
+    <string name="location_neighborhood_level">"Wi-Fi/モバイルネットワークで位置を特定"</string>
+    <string name="location_gps">"GPS衛星を有効にする"</string>
+    <string name="location_street_level">"番地レベルまで正確に位置を特定 (バッテリの節約にはオフ)"</string>
+    <string name="location_gps_disabled">"番地レベルの位置を特定 (バッテリ消費が増加、航空写真を表示)"</string>
+    <string name="about_settings">"この携帯電話について"</string>
+    <string name="about_settings_summary">"法的情報、携帯電話のステータス、ソフトウェアのバージョンを表示する"</string>
+    <string name="legal_information">"法的情報"</string>
+    <string name="contributors_title">"コラボレーター"</string>
+    <string name="copyright_title">"著作権"</string>
+    <string name="license_title">"ライセンス"</string>
+    <string name="terms_title">"利用規約"</string>
+    <string name="settings_license_activity_title">"オープンソースライセンス"</string>
+    <string name="settings_license_activity_unavailable">"ライセンスの読み込み中に問題が発生しました。"</string>
+    <string name="settings_license_activity_loading">"読み込み中..."</string>
+    <string name="lock_settings_title">"画面のロック解除パターン"</string>
+    <string name="lockpattern_change_lock_pattern_label">"ロック解除パターンを変更"</string>
+    <!-- no translation found for lockpattern_need_to_unlock (757935356911054465) -->
+    <skip />
+    <string name="lockpattern_need_to_unlock_wrong">"もう一度試してください:"</string>
+    <!-- no translation found for lockpattern_recording_intro_header (308287052221942814) -->
+    <skip />
+    <string name="lockpattern_recording_intro_footer">"ヘルプを表示するにはMenuキーを押します。"</string>
+    <string name="lockpattern_recording_inprogress">"完了時に指を離します。"</string>
+    <string name="lockpattern_recording_incorrect_too_short">"少なくとも<xliff:g id="NUMBER">%d</xliff:g>つの点を結んで、もう一度指定してください。"</string>
+    <string name="lockpattern_pattern_entered_header">"パターンが記録されました。"</string>
+    <string name="lockpattern_need_to_confirm">"確認のためもう一度パターンを入力します"</string>
+    <string name="lockpattern_pattern_confirmed_header">"新しいロック解除パターン:"</string>
+    <string name="lockpattern_confirm_button_text">"確認"</string>
+    <string name="lockpattern_restart_button_text">"再入力"</string>
+    <string name="lockpattern_retry_button_text">"再指定"</string>
+    <string name="lockpattern_continue_button_text">"次へ"</string>
+    <string name="lockpattern_settings_title">"ロック解除パターン"</string>
+    <string name="lockpattern_settings_enable_title">"パターンの指定が必要"</string>
+    <string name="lockpattern_settings_enable_summary">"画面のロックを解除するにはパターンを入力してください"</string>
+    <string name="lockpattern_settings_enable_visible_pattern_title">"指定時にパターンを表示"</string>
+    <!-- no translation found for lockpattern_settings_enable_tactile_feedback_title (972174133075372341) -->
+    <skip />
+    <string name="lockpattern_settings_choose_lock_pattern">"ロック解除パターンを設定"</string>
+    <string name="lockpattern_settings_change_lock_pattern">"ロック解除パターンを変更"</string>
+    <!-- no translation found for lockpattern_settings_help_how_to_record (2614673439060830433) -->
+    <skip />
+    <string name="lockpattern_too_many_failed_confirmation_attempts_header">"誤った回数が多すぎます。"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_footer">"<xliff:g id="NUMBER">%d</xliff:g>秒後にもう一度試してください。"</string>
+    <string name="skip_button_label">"キャンセル"</string>
+    <string name="next_button_label">"次へ"</string>
+    <string name="lock_title">"携帯電話の保護"</string>
+    <string name="lock_intro_message"><font size="17">"独自の画面のロック解除パターンを作成して、携帯電話の不正使用を防ぎます。"\n<font height="17">\n</font><b>"1"</b>"  次の画面で、パターン作成の例を参考にしてください。"\n<font height="17">\n</font><b>"2"</b>"  独自のロック解除パターンを決めてから、そのパターンを入力します。さまざまなパターンを指定できますが、少なくとも4つの点を結んでください。"\n<font height="17">\n</font><b>"3"</b>"  確認のためもう一度そのパターンを入力します。"\n<font height="17">\n</font><b>"準備ができたら、[次へ]を選択します"</b>"。"\n<font height="3">\n</font>"携帯電話を保護しない場合は、[キャンセル]を選択します。"</font></string>
+    <string name="lock_example_title">"パターン例"</string>
+    <string name="lock_example_message">"少なくとも4つの点を結びます。"\n" "\n"独自のパターンを考えてから、[次へ]を選択します。"</string>
+    <string name="manageapplications_settings_title">"アプリケーションを管理"</string>
+    <string name="applications_settings">"アプリケーション"</string>
+    <string name="applications_settings_summary">"アプリケーションを管理し、クイック起動のショートカットを設定する"</string>
+    <string name="applications_settings_header">"アプリケーション設定"</string>
+    <string name="install_applications">"不明な提供元"</string>
+    <string name="install_unknown_applications">"Android Market以外のアプリケーションのインストールを許可する"</string>
+    <string name="install_all_warning">"提供元が不明のアプリケーションから、携帯電話や個人データが攻撃を受ける可能性が高くなります。このようなアプリケーションの使用により生じた携帯電話への損害やデータの損失については、お客様がすべての責任を負うことに同意するものとします。"</string>
+    <string name="manage_applications_title">"アプリケーションを管理"</string>
+    <string name="application_info_label">"アプリケーション情報"</string>
+    <string name="storage_label">"メモリ"</string>
+    <string name="auto_launch_label">"デフォルトで起動"</string>
+    <string name="permissions_label">"許可"</string>
+    <string name="total_size_label">"合計"</string>
+    <string name="application_size_label">"アプリケーション"</string>
+    <string name="data_size_label">"データ"</string>
+    <string name="uninstall_text">"アンインストール"</string>
+    <string name="clear_user_data_text">"データを消去"</string>
+    <string name="auto_launch_enable_text">"操作を行うデフォルトのアプリケーションとして起動するように選択しています。"</string>
+    <string name="auto_launch_disable_text">"デフォルトは設定されていません。"</string>
+    <string name="clear_activities">"デフォルトをクリア"</string>
+    <string name="unknown">"不明"</string>
+    <string name="sort_order_alpha">"名前で並べ替え"</string>
+    <string name="sort_order_size">"サイズ順に並べ替える (降順)"</string>
+    <string name="manage_space_text">"容量を管理"</string>
+    <!-- no translation found for filter_apps_all (5362458533526576243) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (6478735462006756182) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (4508709081284629440) -->
+    <skip />
+    <!-- no translation found for loading (3200408047793887917) -->
+    <skip />
+    <string name="recompute_size">"サイズを再計算中..."</string>
+    <string name="clear_data_dlg_title">"削除"</string>
+    <string name="clear_data_dlg_text">"このアプリケーションに保存したすべての情報が完全に削除されます。"</string>
+    <string name="dlg_ok">"OK"</string>
+    <string name="dlg_cancel">"キャンセル"</string>
+    <string name="app_not_found_dlg_title">"アプリケーションが見つかりません"</string>
+    <string name="app_not_found_dlg_text">"インストール済みアプリケーションのリストに、このアプリケーションはありません。"</string>
+    <string name="clear_data_failed">"アプリケーションデータを消去できませんでした。"</string>
+    <!-- no translation found for security_settings_desc (3116027624526915561) -->
+    <skip />
+    <!-- no translation found for computing_size (8865983009275200301) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (1901940003700269523) -->
+    <skip />
+    <!-- no translation found for empty_list_msg (723420725041278150) -->
+    <skip />
+    <string name="language_settings">"ロケールとテキスト"</string>
+    <!-- no translation found for language_settings_summary (595647729475399987) -->
+    <skip />
+    <string name="language_category">"ロケール設定"</string>
+    <string name="text_category">"テキスト設定"</string>
+    <string name="phone_language">"ロケールを選択"</string>
+    <string name="auto_replace">"自動修正"</string>
+    <string name="auto_replace_summary">"誤字脱字を修正する"</string>
+    <string name="auto_caps">"大文字の自動入力"</string>
+    <string name="auto_caps_summary">"文の最初の文字を大文字にする"</string>
+    <string name="auto_punctuate">"句読点を自動入力"</string>
+    <string name="auto_punctuate_summary">"Spaceキーを2回押して「。」を挿入"</string>
+    <string name="show_password">"パスワードを表示"</string>
+    <string name="show_password_summary">"入力中のパスワードを表示"</string>
+    <string name="testing">"テスト中"</string>
+    <string name="testing_phone_info">"携帯電話情報"</string>
+    <string name="testing_battery_info">"バッテリ情報"</string>
+    <string name="quick_launch_title">"クイック起動"</string>
+    <string name="quick_launch_summary">"アプリケーション起動のキーボードショートカットを設定する"</string>
+    <string name="quick_launch_assign_application">"アプリケーションを割り当て"</string>
+    <string name="quick_launch_no_shortcut">"ショートカットなし"</string>
+    <string name="quick_launch_shortcut">"Search+<xliff:g id="SHORTCUT_LETTER">%1$s</xliff:g>"</string>
+    <string name="quick_launch_clear_dialog_title">"クリア"</string>
+    <string name="quick_launch_clear_dialog_message">"<xliff:g id="SHORTCUT_LETTER">%1$s</xliff:g> (<xliff:g id="APPLICATION_NAME">%2$s</xliff:g>) のショートカットをクリアします。"</string>
+    <string name="quick_launch_clear_ok_button">"OK"</string>
+    <string name="quick_launch_clear_cancel_button">"キャンセル"</string>
+    <string name="quick_launch_display_mode_applications">"アプリケーション"</string>
+    <string name="quick_launch_display_mode_shortcuts">"ショートカット"</string>
+    <!-- no translation found for input_methods_settings_title (6800066636850553887) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (7571173442946675205) -->
+    <skip />
+    <string name="development_settings_title">"開発"</string>
+    <!-- no translation found for development_settings_summary (2151320488701538355) -->
+    <skip />
+    <string name="enable_adb">"USBデバッグ"</string>
+    <string name="enable_adb_summary">"USBの接続時のデバッグモード"</string>
+    <string name="keep_screen_on">"スリープを無効にする"</string>
+    <string name="keep_screen_on_summary">"充電中に画面をスリープにしない"</string>
+    <!-- no translation found for allow_mock_location (2787962564578664888) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (317615105156345626) -->
+    <skip />
+</resources>
diff --git a/res/values-nl-rNL/strings.xml b/res/values-nl-rNL/strings.xml
index bb566be..436899e 100644
--- a/res/values-nl-rNL/strings.xml
+++ b/res/values-nl-rNL/strings.xml
@@ -1,445 +1,883 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="activity_picker_label">Activiteit selecteren</string>
-  <string name="airplane_mode">Vliegtuigmodus</string>
-  <string name="android_id_label">Android ID</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">Toegangspunt bewerken</string>
-  <string name="apn_http_port">Poort</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">MMS-poort</string>
-  <string name="apn_mms_proxy">MMS-proxy</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">Naam</string>
-  <string name="apn_not_set">&lt;Niet ingesteld&gt;</string>
-  <string name="apn_password">Wachtwoord</string>
-  <string name="apn_server">Server</string>
-  <string name="apn_settings">APN</string>
-  <string name="apn_user">Gebruikersnaam</string>
-  <string name="app_launcher_newView_text">Nieuwe AppLauncher</string>
-  <string name="band_mode_failed">Mislukt</string>
-  <string name="band_mode_loading">Bandlijst wordt geladen\u2026</string>
-  <string name="band_mode_set">Instellen</string>
-  <string name="band_mode_succeeded">Geslaagd</string>
-  <string name="band_mode_title">Gsm/umts-band instellen</string>
-  <string name="baseband_version">Basebandversie</string>
-  <string name="basic_settings_title">Basisinstellingen</string>
-  <string name="battery_info_health_dead">Dood</string>
-  <string name="battery_info_health_good">Goed</string>
-  <string name="battery_info_health_label">Batterijstatus:</string>
-  <string name="battery_info_health_over_voltage">Spanning te hoog</string>
-  <string name="battery_info_health_overheat">Oververhitting</string>
-  <string name="battery_info_health_unknown">Onbekend</string>
-  <string name="battery_info_health_unspecified_failure">Onbekende fout</string>
-  <string name="battery_info_label">Batterij-info</string>
-  <string name="battery_info_level_label">Batterijniveau:</string>
-  <string name="battery_info_scale_label">Batterijschaal:</string>
-  <string name="battery_info_status_charging">opladen</string>
-  <string name="battery_info_status_charging_ac">(wisselstroom)</string>
-  <string name="battery_info_status_charging_usb">(Usb)</string>
-  <string name="battery_info_status_discharging">Bezig met ontladen</string>
-  <string name="battery_info_status_full">Vol</string>
-  <string name="battery_info_status_label">Batterijstatus:</string>
-  <string name="battery_info_status_not_charging">Wordt niet opgeladen</string>
-  <string name="battery_info_status_unknown">Onbekend</string>
-  <string name="battery_info_technology_label">Batterijtechnologie:</string>
-  <string name="battery_info_temperature_label">Batterijtemperatuur:</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_voltage_label">Batterijvoltage:</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="bluetooth">Bluetooth</string>
-  <string name="bluetooth_clear_list">Apparaatlijst wissen</string>
-  <string name="bluetooth_connectable">Alleen waarmee verbinding mogelijk is</string>
-  <string name="bluetooth_connected">Verbonden</string>
-  <string name="bluetooth_connecting">Verbinden\u2026</string>
-  <string name="bluetooth_device">handsfree / headset</string>
-  <string name="bluetooth_device_info">Bluetooth-toestelinfo</string>
-  <string name="bluetooth_device_info_alias">Toestelalias</string>
-  <string name="bluetooth_device_info_delete">Dit toestel verwijderen</string>
-  <string name="bluetooth_device_info_no_alias">Alias hier invoeren\u2026</string>
-  <string name="bluetooth_device_info_sdp">Lijst met ondersteunde diensten</string>
-  <string name="bluetooth_device_name">Apparaatnaam</string>
-  <string name="bluetooth_devices">Bluetooth-apparaten</string>
-  <string name="bluetooth_disabled">Bluetooth is uitgeschakeld</string>
-  <string name="bluetooth_disconnect_blank">Verbinding met %1$s verbreken?</string>
-  <string name="bluetooth_discoverability_panel_title">Maak me\u2026</string>
-  <string name="bluetooth_discoverable">Zichtbaar &amp; met verbinding</string>
-  <string name="bluetooth_enable_text">Knop leegmaken\u2026</string>
-  <string name="bluetooth_enabled">Bluetooth is nu ingeschakeld</string>
-  <string name="bluetooth_enabling">Bluetooth wordt ingeschakeld\u2026</string>
-  <string name="bluetooth_enter_pin_msg">Voer pincode in voor </string>
-  <string name="bluetooth_is_discoverable">Toestel is zichtbaar</string>
-  <string name="bluetooth_name_not_set">Geen naam ingesteld, accountnaam wordt gebruikt</string>
-  <string name="bluetooth_neither">Zichtbaar noch met verbinding</string>
-  <string name="bluetooth_new_data">Voer nieuwe gegevens in</string>
-  <string name="bluetooth_new_data_cancel">Annuleren</string>
-  <string name="bluetooth_new_data_confirm">OK</string>
-  <string name="bluetooth_not_connected">Niet verbonden</string>
-  <string name="bluetooth_not_discoverable">Toestel is niet zichtbaar</string>
-  <string name="bluetooth_paired">Gekoppeld</string>
-  <string name="bluetooth_pairing_msg">Koppelen\u2026</string>
-  <string name="bluetooth_pin_entry">Bluetooth-pincode invoeren</string>
-  <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-  <string name="bluetooth_scan_for_devices">Zoeken naar Bluetooth-apparaten</string>
-  <string name="bluetooth_scan_for_new_devices">Bezig met scannen naar nieuwe toestellen\u2026</string>
-  <string name="bluetooth_scan_text">Knop leegmaken\u2026</string>
-  <string name="bluetooth_settings_text">Knop leegmaken\u2026</string>
-  <string name="bluetooth_settings_title">Bluetooth-instellingen</string>
-  <string name="bluetooth_starting">Bluetooth wordt gestart\u2026</string>
-  <string name="bluetooth_stopping">Bluetooth wordt gestopt\u2026</string>
-  <string name="bluetooth_title">Bluetooth</string>
-  <string name="bluetooth_unknown">Onbekend</string>
-  <string name="bluetooth_visibility">Zichtbaarheid</string>
-  <string name="bootloader_version">Bootloaderversie</string>
-  <string name="brightness">Helderheid</string>
-  <string name="build_date_label">Versiedatum</string>
-  <string name="build_description_label">Versiebeschrijving</string>
-  <string name="build_host_label">Versiehost</string>
-  <string name="build_id_label">Versie-id</string>
-  <string name="build_type_label">Versietype</string>
-  <string name="build_user_label">Versiegebruiker</string>
-  <string name="call_settings_title">Belinstellingen</string>
-  <string name="cancel">Annuleren</string>
-  <string name="checkin_button_label">Controleren op upgrade</string>
-  <string name="checkin_download_failed_status">Downloaden mislukt</string>
-  <string name="checkin_download_label">Downloadstatus</string>
-  <string name="checkin_download_ongoing_status">Downloaden\u2026</string>
-  <string name="checkin_download_succeeded_status">Downloaden gelukt, bezig met controleren\u2026</string>
-  <string name="checkin_download_suspended_status">Downloaden uitgesteld</string>
-  <string name="checkin_download_unknown_status">Onbekende status</string>
-  <string name="checkin_failures_label">Mislukkingen sinds laatste succes</string>
-  <string name="checkin_last_time_label">Laatste gelukte aanmelding</string>
-  <string name="checkin_status_label">Aanmeldstatus</string>
-  <string name="checkin_time_never">(nooit)</string>
-  <string name="checkin_upgrade_label">Upgrade in behandeling</string>
-  <string name="choose_timezone">Tijdzone selecteren</string>
-  <string name="choose_timezone_region">Regio selecteren</string>
-  <string name="connect">Verbinden</string>
-  <string name="connect_to_blank">Verbinding maken met %1$s</string>
-  <string name="date_and_time">Datum &amp; Tijd</string>
-  <string name="date_and_time_settings_title">Datum &amp; Tijd</string>
-  <string name="date_time_24hour">24-uurs indeling</string>
-  <string name="date_time_auto">Auto</string>
-  <string name="date_time_auto_summaryOff">Gebruik door gebruikers gekozen waardes</string>
-  <string name="date_time_auto_summaryOn">Gebruik door netwerk geleverde waardes</string>
-  <string name="date_time_changeDate_text">Datum veranderen</string>
-  <string name="date_time_changeTime_text">Tijd veranderen</string>
-  <string name="date_time_dateDisplay_text">3 nov 1997</string>
-  <string name="date_time_date_format">Datumindeling instellen</string>
-  <string name="date_time_set_date">Datum instellen</string>
-  <string name="date_time_set_time">Tijd instellen</string>
-  <string name="date_time_set_timezone">Tijdzone selecteren</string>
-  <string name="date_time_setzone_text">Tijdzone veranderen</string>
-  <string name="date_time_timeDisplay_text">11:45 AM</string>
-  <string name="date_time_timezone_label">Tijdzone:</string>
-  <string name="debug_intent_sender_label">Debug intent sender</string>
-  <string name="default_date_format">dd/MM/yyyy</string>
-  <string name="default_keyboard_device_label">Standaard toetsenbordapparaat</string>
-  <string name="device_info_asleeptime">Slaaptijd</string>
-  <string name="device_info_awaketime">Opwektijd</string>
-  <string name="device_info_default">Onbekend</string>
-  <string name="device_info_label">Toestelinfo</string>
-  <string name="device_info_settings">Toestelinfo</string>
-  <string name="device_info_uptime">Tijd geactiveerd</string>
-  <string name="device_memory">Geheugen</string>
-  <string name="device_memory_summary">Intern geheugen, sd-kaartgeheugen</string>
-  <string name="device_status">Status</string>
-  <string name="device_status_summary">IMEI, telefoonnummer, signaal, enz.</string>
-  <string name="dim_screen">Scherm dimmen</string>
-  <string name="disconnect_ums">Verbinding met usb-massaopslag verbreken</string>
-  <string name="display_font_size_label">Lettergrootte:</string>
-  <string name="display_label">Scherm</string>
-  <string name="display_preview_label">Voorbld:</string>
-  <string name="display_settings">Scherm</string>
-  <string name="done">OK</string>
-  <string name="error_apn_empty">APN kan niet blanco zijn</string>
-  <string name="error_connecting">Fout bij maken van netwerkverbinding</string>
-  <string name="error_mcc_not3">MMC-veld moet 3 tekens zijn</string>
-  <string name="error_mnc_not23">MMC-veld moet 2 of 3 tekens zijn</string>
-  <string name="error_name_empty">Naam kan niet blanco zijn</string>
-  <string name="error_saving">Fout bij opslaan netwerk</string>
-  <string name="error_scanning">Fout bij scannen naar netwerken</string>
-  <string name="error_starting">Fout bij starten van wifi</string>
-  <string name="error_stopping">Fout bij stoppen van wifi</string>
-  <string name="error_title">Ongeldige gegevens</string>
-  <string name="failed_to_connect">Geen verbinding gemaakt met\u0020</string>
-  <string name="favorites_label">Favorieten</string>
-  <string name="firmware_version">Firmwareversie</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">OK</string>
-  <string name="forget_network">Vergeten</string>
-  <string name="fragment_status_authenticating">Controleren met %1$s</string>
-  <string name="fragment_status_connected">Verbonden met %1$s</string>
-  <string name="fragment_status_connecting">Bezig met verbinding maken met %1$s</string>
-  <string name="fragment_status_disconnected">Verbinding verbroken</string>
-  <string name="fragment_status_disconnecting">Verbinding met %1$s wordt verbroken</string>
-  <string name="fragment_status_failed">Mislukt</string>
-  <string name="fragment_status_obtaining_ip">Ip-adres wordt verkregen van %1$s</string>
-  <string name="fragment_status_scanning">Scannen</string>
-  <string name="gsm_version_baseband_label">Basebandversie</string>
-  <string name="gsm_version_ril_impl_label">RIL Impl-versie</string>
-  <string name="intent_sender_account_label">Account: </string>
-  <string name="intent_sender_action_label">Actie:</string>
-  <string name="intent_sender_data_label">Gegevens:</string>
-  <string name="intent_sender_resource_label">Netwerkbron: </string>
-  <string name="intent_sender_sendbroadcast_text">Uitzending versturen</string>
-  <string name="intent_sender_startactivity_text">Activiteit starten</string>
-  <string name="ip_address">Ip-adres</string>
-  <string name="kernel_version_label">Linux kernelversie</string>
-  <string name="keyguard_label">Toetsbescherming</string>
-  <string name="keyguard_password_button_text">OK</string>
-  <string name="keyguard_password_confirm_new_label">Bevestig nieuw wachtwoord:</string>
-  <string name="keyguard_password_mismatch_error_text">De twee wachtwoorden verschillen! Voer ze nogmaals in</string>
-  <string name="keyguard_password_new_label">Nieuw wachtwoord:</string>
-  <string name="keyguard_password_old_label">Oud wachtwoord:</string>
-  <string name="keyguard_password_old_password_error_text">Het oude wachtwoord is onjuist! Probeer het opnieuw</string>
-  <string name="keyguard_pin_mod_text">Pincode wijzigen</string>
-  <string name="keyguard_pw_mod_text">Blokkeringspatroon selecteren</string>
-  <string name="keyguard_sim_pin_label">SIM-pincode</string>
-  <string name="language_picker_title">Taal</string>
-  <string name="large_font">Groot</string>
-  <string name="location_gps">Gebaseerd op gps</string>
-  <string name="location_label">Locatieprovider:</string>
-  <string name="location_neighborhood_level">Nauwkeurigheid op buurtniveau</string>
-  <string name="location_network_based">Gebaseerd op netwerk</string>
-  <string name="location_source">Locatienauwkeurigheid</string>
-  <string name="location_status">Status:</string>
-  <string name="location_street_level">Nauwkeurigheid op straatniveau</string>
-  <string name="lock_settings_title">Blokkeergebaar</string>
-  <string name="lockpattern_change_lock_pattern_label">Patroon voor veranderen blokkering</string>
-  <string name="lockpattern_confirm_button_text">Bevestigen</string>
-  <string name="lockpattern_need_to_unlock">Opgeslagen patroon bevestigen:</string>
-  <string name="lockpattern_need_to_unlock_wrong">Onjuist! Nogmaals proberen:</string>
-  <string name="lockpattern_pattern_confirmed_header">Het nieuwe blokkeringspatroon:</string>
-  <string name="lockpattern_pattern_entered_header">U selecteerde:</string>
-  <string name="lockpattern_recording_incorrect_less_than_three">Onjuist! U moet over minstens drie punten slepen</string>
-  <string name="lockpattern_recording_inprogress">Til de vinger op als u klaar bent</string>
-  <string name="lockpattern_recording_intro_footer">Druk op Menu voor hulp</string>
-  <string name="lockpattern_recording_intro_header">Teken een patroon om als codeblokkering te gebruiken:</string>
-  <string name="lockpattern_restart_button_text">Opnieuw starten</string>
-  <string name="lockpattern_settings_change_lock_pattern">Gebaarpatroon voor veranderen blokkering</string>
-  <string name="lockpattern_settings_choose_lock_pattern">Patroon voor blokkeringsgebaar selecteren</string>
-  <string name="lockpattern_settings_enable_summary">Gebaar vereisen voor vrijgeven</string>
-  <string name="lockpattern_settings_enable_title">Blokkeergebaar</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">Zichtbaar patroon gebruiken</string>
-  <string name="lockpattern_settings_help_how_to_record">Het opnemen van een blokkeringspatroon</string>
-  <string name="lockpattern_settings_title">Blokkeergebaar</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Probeer opnieuw over <xliff:g id="number">%d</xliff:g> seconden</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">Te veel onjuiste bevestigingspogingen</string>
-  <string name="master_clear_button_text">Apparaat opnieuw instellen</string>
-  <string name="master_clear_desc">Herstelt de oorspronkelijke fabriekswaarden van het toestel, waarbij alle gegevens en gedownloade toepassingen worden gewist</string>
-  <string name="master_clear_failed">Geen reset uitgevoerd omdat de service Systeem wissen niet beschikbaar is</string>
-  <string name="master_clear_final_button_text">Alles wissen</string>
-  <string name="master_clear_final_desc">Toestel resetten, waarbij alle gegevens en toepassingen worden gewist? Handeling kan niet worden teruggedraaid!</string>
-  <string name="master_clear_gesture_explanation">U moet het blokkeringspatroon tekeken om een toestelreset goed te keuren</string>
-  <string name="master_clear_gesture_prompt">Teken het blokkeringspatroon</string>
-  <string name="master_clear_title">Hoofd wissen</string>
-  <string name="medium_font">Normaal</string>
-  <string name="menu_cancel">Wissen</string>
-  <string name="menu_delete">APN verwijderen</string>
-  <string name="menu_new">Nieuwe APN</string>
-  <string name="menu_save">Opslaan</string>
-  <string name="mobile_network">Mobiel netwerk</string>
-  <string name="network_settings_title">Netwerkinstellingen</string>
-  <string name="next_label">Volgende</string>
-  <string name="notification_sound_dialog_title">Meldingsbeltonen selecteren</string>
-  <string name="notification_sound_title">Meldingsbeltonen</string>
-  <string name="phone_info_label">Telefooninfo</string>
-  <string name="please_type_passphrase">Voer de draadloze wachtwoordcode in</string>
-  <string name="power_management_label">Energiebeheer</string>
-  <string name="progress_scanning">Scannen</string>
-  <string name="proxy_action_text">Opslaan</string>
-  <string name="proxy_clear_text">Wissen</string>
-  <string name="proxy_defaultView_text">Beginwaarden</string>
-  <string name="proxy_error">Let op!</string>
-  <string name="proxy_error_dismiss">OK</string>
-  <string name="proxy_error_empty_host_set_port">Het poortveld moet blanco zijn als het hostveld blanco is</string>
-  <string name="proxy_error_empty_port">U moet het poortveld voltooien</string>
-  <string name="proxy_error_invalid_host">De opgegeven hostnaam is ongeldig</string>
-  <string name="proxy_error_invalid_port">De opgegeven poort is ongeldig</string>
-  <string name="proxy_hostname_label">Hostnaam</string>
-  <string name="proxy_port_label">Poort</string>
-  <string name="proxy_settings_label">Proxyinstellingen</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">Verbonden</string>
-  <string name="radioInfo_data_connecting">Verbinding</string>
-  <string name="radioInfo_data_disconnected">Verbinding verbroken</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">bytes</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">pkts</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">Gegevensverbinding uitschakelen</string>
-  <string name="radioInfo_menu_enableData">Gegevensverbinding inschakelen</string>
-  <string name="radioInfo_menu_getPDP">PDP-lijst verkrijgen</string>
-  <string name="radioInfo_menu_viewADN">SIM-adresboek weergeven</string>
-  <string name="radioInfo_menu_viewFDN">Vaste nummers weergeven</string>
-  <string name="radioInfo_menu_viewSDN">Service kiesnummers weergeven</string>
-  <string name="radioInfo_phone_idle">Niet-actief</string>
-  <string name="radioInfo_phone_offhook">Gesprek bezig</string>
-  <string name="radioInfo_phone_ringing">Bezig met overgaan</string>
-  <string name="radioInfo_roaming_in">Roaming</string>
-  <string name="radioInfo_roaming_not">Geen roaming</string>
-  <string name="radioInfo_service_emergency">Alleen alarmnummers</string>
-  <string name="radioInfo_service_in">Geactiveerd</string>
-  <string name="radioInfo_service_off">Radio uit</string>
-  <string name="radioInfo_service_out">Buiten dienst</string>
-  <string name="radioInfo_unknown">onbekend</string>
-  <string name="radio_info_band_mode_label">Radioband selecteren</string>
-  <string name="radio_info_call_redirect_label">Gesprek doorsturen:</string>
-  <string name="radio_info_call_status_label">Oproepstatus:</string>
-  <string name="radio_info_current_network_label">Huidig netwerk:</string>
-  <string name="radio_info_data_attempts_label">Gegevenspogingen:</string>
-  <string name="radio_info_data_successes_label">Gegevenssuccessen:</string>
-  <string name="radio_info_gprs_service_label">Gprs-dienst:</string>
-  <string name="radio_info_gsm_disconnects_label">Gsm-verbinding verbreken:</string>
-  <string name="radio_info_gsm_service_label">Gsm-dienst:</string>
-  <string name="radio_info_imei_label">IMEI:</string>
-  <string name="radio_info_imsi_label">IMSI:</string>
-  <string name="radio_info_message_waiting_label">Bericht wachtend op behandeling:</string>
-  <string name="radio_info_neighboring_location_label">Omgevings-CID:</string>
-  <string name="radio_info_network_type_label">Netwerktype:</string>
-  <string name="radio_info_phone_number_label">Telefoonnummer:</string>
-  <string name="radio_info_ppp_received_label">PPP ontvangen:</string>
-  <string name="radio_info_ppp_resets_label">Aantal PPP-resets sinds opstarten:</string>
-  <string name="radio_info_ppp_sent_label">PPP verzonden:</string>
-  <string name="radio_info_radio_resets_label">Radio resets:</string>
-  <string name="radio_info_roaming_label">Roaming:</string>
-  <string name="radio_info_set_perferred_label">Voorkeursnetwerktype instellen:</string>
-  <string name="radio_info_signal_location_label">Locatie:</string>
-  <string name="radio_info_signal_strength_label">Signaalsterkte:</string>
-  <string name="read_only">\u0020(Alleen lezen)</string>
-  <string name="ring_volume_title">Belvolume</string>
-  <string name="ringer_volume_instructions">Gebruik volumetoetsen om het belvolume aan te passen</string>
-  <string name="ringer_volume_ringer_mode_label">Beltoonmodus</string>
-  <string name="ringer_volume_ringtone_label">Beltoon</string>
-  <string name="ringer_volume_screen_increasing_text">Belvolume verhogen</string>
-  <string name="ringtone_title">Telefoonbeltoon</string>
-  <string name="scan_wifi">Scannen</string>
-  <string name="screen_off_timeout_label">Scherm uit time-out</string>
-  <string name="sd_card_settings_label">Sd-kaart</string>
-  <string name="sd_unavailable">Niet beschikbaar</string>
-  <string name="sdcard_changes_instructions">Veranderingen worden toegepast zodra de usb-kabel opnieuw wordt aangesloten</string>
-  <string name="sdcard_removal_alert_ok">OK</string>
-  <string name="sdcard_removal_alert_scolding">De sd-kaart is verwijderd terwijl deze nog in gebruik was!  
-        Om beschadiging van de kaart te vorkomen, gebruikt u het venster Sd-kaartinstellingen om de kaart vrij te geven voordat deze wordt verwijderd</string>
-  <string name="sdcard_removal_alert_title">Onveilige verwijdering van sd-kaart</string>
-  <string name="sdcard_setting">Sd-kaart</string>
-  <string name="sdcard_settings_available_bytes_label">Beschikbare bytes:</string>
-  <string name="sdcard_settings_bad_removal_status">Sd-kaart is verwijderd terwijl deze nog in gebruik was!</string>
-  <string name="sdcard_settings_mass_storage_status">Sd-kaart wordt gebruikt als apparaat voor massaopslag</string>
-  <string name="sdcard_settings_not_present_status">Geen sd-kaart</string>
-  <string name="sdcard_settings_read_only_status">Sd-kaart is alleen-lezen</string>
-  <string name="sdcard_settings_scanning_status">Sd-kaart wordt gescand op media\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">Usb-massaopslag inschakelen</string>
-  <string name="sdcard_settings_total_bytes_label">Totaal aantal bytes:</string>
-  <string name="sdcard_settings_unmounted_status">Nu kunt u de sd-kaart veilig verwijderen</string>
-  <string name="sdcard_settings_used_bytes_label">Gebruikt aantal bytes:</string>
-  <string name="sdcard_unmount">Sd-kaart vrijgeven</string>
-  <string name="sdcard_unmountable_alert_ok">OK</string>
-  <string name="sdcard_unmountable_alert_title">Sd-kaart onleesbaar</string>
-  <string name="sdcard_unmountable_message">De sd-kaart kon niet worden gelezen.  
-        Het bestandssysteem is beschadigd of de kaart is defect</string>
-  <string name="security">Beveiliging</string>
-  <string name="security_label">Beveiliging</string>
-  <string name="settings_chooser_pick_string">
-        Instellingenpictogram moet verwijzen naar:    
-</string>
-  <string name="settings_label">Instellingen</string>
-  <string name="signal">Signaalsterkte</string>
-  <string name="silent_mode_title">Stil</string>
-  <string name="sim_bad_pin">Let op: Onjuiste pincode</string>
-  <string name="sim_change_failed">Veranderen van pincode mislukt\nWellicht onjuiste pincode</string>
-  <string name="sim_change_pin">SIM-pincode wijzigen</string>
-  <string name="sim_change_succeeded">Veranderen van SIM-pincode gelukt</string>
-  <string name="sim_disable_sim_lock">SIM-kaartblokkering uitschakelen</string>
-  <string name="sim_enable_sim_lock">SIM-kaartblokkering inschakelen</string>
-  <string name="sim_enter_cancel">Annuleren</string>
-  <string name="sim_enter_new">Nieuwe pincode invoeren</string>
-  <string name="sim_enter_ok">OK</string>
-  <string name="sim_enter_old">Oude pincode invoeren</string>
-  <string name="sim_enter_pin">SIM-pincode invoeren</string>
-  <string name="sim_lock_failed">Veranderen blokkeringsstatus van SIM-kaart mislukt\nWellicht onjuist pincode</string>
-  <string name="sim_lock_off">SIM-kaartblokkering uit</string>
-  <string name="sim_lock_on">SIM-kaartblokkering aan</string>
-  <string name="sim_lock_settings">SIM-kaartblokkering</string>
-  <string name="sim_lock_settings_title">SIM-blokkeerinstellingen</string>
-  <string name="sim_pin_change">Pincode veranderen</string>
-  <string name="sim_pin_toggle">SIM-kaartblokkering</string>
-  <string name="sim_pins_dont_match">Let op: Pincodes verschillen</string>
-  <string name="sim_reenter_new">Voer nieuwe pincode opnieuw in</string>
-  <string name="small_font">Klein</string>
-  <string name="software_version">Softwareversie</string>
-  <string name="sound_and_alerts_settings">Geluid</string>
-  <string name="status_authenticating">Bezig met verifiëren</string>
-  <string name="status_awake_time">Opwektijd</string>
-  <string name="status_connected">Verbonden</string>
-  <string name="status_connecting">Verbinding</string>
-  <string name="status_data_state">Gegevenstoegang</string>
-  <string name="status_disconnected">Verbinding verbroken</string>
-  <string name="status_disconnecting">Verbinding wordt verbroken</string>
-  <string name="status_failed">Mislukt</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">Netwerktype</string>
-  <string name="status_number">Telefoonnummer</string>
-  <string name="status_obtaining_ip">Bezig met verkrijgen van ip-adres</string>
-  <string name="status_operator">Netwerk</string>
-  <string name="status_roaming">Roaming</string>
-  <string name="status_scanning">Scannen</string>
-  <string name="status_service_state">Dienststatus</string>
-  <string name="status_signal_strength">Signaalsterkte</string>
-  <string name="status_up_time">Tijd geactiveerd</string>
-  <string name="stay_on">Ingeschakeld laten als aangesloten</string>
-  <string name="summary_not_in_range">Niet in bereik</string>
-  <string name="summary_remembered">Onthouden</string>
-  <string name="sync_calendar">Agenda</string>
-  <string name="sync_contacts">Contacten</string>
-  <string name="sync_disabled">Uit</string>
-  <string name="sync_enabled">Synchroniseren met Google-server ingeschakeld</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_menu_sync_cancel">Synchroniseren annuleren</string>
-  <string name="sync_menu_sync_now">Nu synchroniseren</string>
-  <string name="sync_settings">Synchronisatie</string>
-  <string name="target_build_field_label">Opgevraagd versietype</string>
-  <string name="telephony_apn_label">APN:</string>
-  <string name="telephony_mcc_label">MCC:</string>
-  <string name="telephony_mmsc_label">MMSC:</string>
-  <string name="telephony_mmsport_label">MMS-poort:</string>
-  <string name="telephony_mmsproxy_label">MMS-proxy:</string>
-  <string name="telephony_mnc_label">MNC:</string>
-  <string name="telephony_name_label">Naam:</string>
-  <string name="telephony_password_label">Wachtwoord :</string>
-  <string name="telephony_port_label">Poort:</string>
-  <string name="telephony_proxy_label">Proxy:</string>
-  <string name="telephony_server_label">Server:</string>
-  <string name="telephony_user_label">Gebruiker:</string>
-  <string name="turn_off_qxdm">QXDM sd-log uitschakelen</string>
-  <string name="turn_off_radio">Radio uitschakelen</string>
-  <string name="turn_on_qxdm">QXDM sd-log inschakelen</string>
-  <string name="turn_on_radio">Radio uitschakelen</string>
-  <string name="underdeveloped_settings_label">Onderontwikkelde instellingen</string>
-  <string name="wallpaper_label">Achtergrond</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Netwerken</string>
-  <string name="wifi_dns_label">dns:</string>
-  <string name="wifi_gateway_label">gateway:</string>
-  <string name="wifi_host_ip">host-ip:</string>
-  <string name="wifi_netmask_label">netmask:</string>
-  <string name="wifi_prefer_wifi">Wifi heeft voorkeur</string>
-  <string name="wifi_screen_activate_text">Activeren</string>
-  <string name="wifi_screen_dhcp_text">automatisch</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">handmatig</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wifi functioneert</string>
-  <string name="wifi_screen_test_text">Testen</string>
-  <string name="wifi_settings">Wifi-instellingen</string>
-  <string name="wifi_wlan_id">wlan-id:</string>
+    <string name="device_info_default">"Onbekend"</string>
+    <string name="device_info_uptime">"Tijd geactiveerd"</string>
+    <string name="device_info_awaketime">"Opwektijd"</string>
+    <string name="device_info_asleeptime">"Slaaptijd"</string>
+    <string name="turn_on_radio">"Radio uitschakelen"</string>
+    <string name="turn_off_radio">"Radio uitschakelen"</string>
+    <string name="turn_on_qxdm">"QXDM sd-log inschakelen"</string>
+    <string name="turn_off_qxdm">"QXDM sd-log uitschakelen"</string>
+    <string name="radioInfo_menu_viewADN">"SIM-adresboek weergeven"</string>
+    <string name="radioInfo_menu_viewFDN">"Vaste nummers weergeven"</string>
+    <string name="radioInfo_menu_viewSDN">"Service kiesnummers weergeven"</string>
+    <string name="radioInfo_menu_getPDP">"PDP-lijst verkrijgen"</string>
+    <string name="radioInfo_menu_enableData">"Gegevensverbinding inschakelen"</string>
+    <string name="radioInfo_menu_disableData">"Gegevensverbinding uitschakelen"</string>
+    <!-- no translation found for radioInfo_menu_enableDataOnBoot (1926825935390738605) -->
+    <skip />
+    <!-- no translation found for radioInfo_menu_disableDataOnBoot (1229911918312837466) -->
+    <skip />
+    <string name="radioInfo_service_in">"Geactiveerd"</string>
+    <string name="radioInfo_service_out">"Buiten dienst"</string>
+    <string name="radioInfo_service_emergency">"Alleen alarmnummers"</string>
+    <string name="radioInfo_service_off">"Radio uit"</string>
+    <string name="radioInfo_roaming_in">"Roaming"</string>
+    <string name="radioInfo_roaming_not">"Geen roaming"</string>
+    <string name="radioInfo_phone_idle">"Niet-actief"</string>
+    <string name="radioInfo_phone_ringing">"Bezig met overgaan"</string>
+    <string name="radioInfo_phone_offhook">"Gesprek bezig"</string>
+    <string name="radioInfo_data_disconnected">"Verbinding verbroken"</string>
+    <string name="radioInfo_data_connecting">"Verbinding"</string>
+    <string name="radioInfo_data_connected">"Verbonden"</string>
+    <!-- no translation found for radioInfo_data_suspended (4953150687356763202) -->
+    <skip />
+    <string name="radioInfo_unknown">"onbekend"</string>
+    <string name="radioInfo_display_packets">"pkts"</string>
+    <string name="radioInfo_display_bytes">"bytes"</string>
+    <string name="radioInfo_display_dbm">"dBm"</string>
+    <string name="radioInfo_display_asu">"asu"</string>
+    <string name="radioInfo_lac">"LAC"</string>
+    <string name="radioInfo_cid">"CID"</string>
+    <string name="sdcard_unmount">"Sd-kaart vrijgeven"</string>
+    <string name="small_font">"Klein"</string>
+    <string name="medium_font">"Normaal"</string>
+    <string name="large_font">"Groot"</string>
+    <string name="font_size_save">"OK"</string>
+    <string name="sdcard_setting">"Sd-kaart"</string>
+    <string name="screen_off_timeout_label">"Scherm uit time-out"</string>
+    <string name="stay_on">"Ingeschakeld laten als aangesloten"</string>
+    <string name="app_launcher_newView_text">"Nieuwe AppLauncher"</string>
+    <string name="battery_info_status_label">"Batterijstatus:"</string>
+    <string name="battery_info_scale_label">"Batterijschaal:"</string>
+    <string name="battery_info_level_label">"Batterijniveau:"</string>
+    <string name="battery_info_health_label">"Batterijstatus:"</string>
+    <string name="battery_info_technology_label">"Batterijtechnologie:"</string>
+    <string name="battery_info_voltage_label">"Batterijvoltage:"</string>
+    <string name="battery_info_voltage_units">"mV"</string>
+    <string name="battery_info_temperature_label">"Batterijtemperatuur:"</string>
+    <string name="battery_info_temperature_units">"° C"</string>
+    <!-- no translation found for battery_info_uptime (1195623257533912354) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_battery (1529944627925423756) -->
+    <skip />
+    <!-- no translation found for battery_info_awake_plugged (7272044960586959459) -->
+    <skip />
+    <!-- no translation found for battery_info_screen_on (832651425042656482) -->
+    <skip />
+    <string name="battery_info_status_unknown">"Onbekend"</string>
+    <string name="battery_info_status_charging">"opladen"</string>
+    <string name="battery_info_status_charging_ac">"(wisselstroom)"</string>
+    <string name="battery_info_status_charging_usb">"(Usb)"</string>
+    <string name="battery_info_status_discharging">"Bezig met ontladen"</string>
+    <string name="battery_info_status_not_charging">"Wordt niet opgeladen"</string>
+    <string name="battery_info_status_full">"Vol"</string>
+    <string name="battery_info_health_unknown">"Onbekend"</string>
+    <string name="battery_info_health_good">"Goed"</string>
+    <string name="battery_info_health_overheat">"Oververhitting"</string>
+    <string name="battery_info_health_dead">"Dood"</string>
+    <string name="battery_info_health_over_voltage">"Spanning te hoog"</string>
+    <string name="battery_info_health_unspecified_failure">"Onbekende fout"</string>
+    <string name="bluetooth">"Bluetooth"</string>
+    <string name="bluetooth_stopping">"Bluetooth wordt gestopt…"</string>
+    <string name="bluetooth_disabled">"Bluetooth is uitgeschakeld"</string>
+    <string name="bluetooth_enabled">"Bluetooth is nu ingeschakeld"</string>
+    <string name="bluetooth_enabling">"Bluetooth wordt ingeschakeld…"</string>
+    <string name="bluetooth_visibility">"Zichtbaarheid"</string>
+    <string name="bluetooth_is_discoverable">"Toestel is zichtbaar"</string>
+    <string name="bluetooth_not_discoverable">"Toestel is niet zichtbaar"</string>
+    <string name="bluetooth_devices">"Bluetooth-apparaten"</string>
+    <string name="bluetooth_device_name">"Apparaatnaam"</string>
+    <string name="bluetooth_name_not_set">"Geen naam ingesteld, accountnaam wordt gebruikt"</string>
+    <string name="bluetooth_scan_for_devices">"Zoeken naar Bluetooth-apparaten"</string>
+    <string name="bluetooth_clear_list">"Apparaatlijst wissen"</string>
+    <string name="bluetooth_disconnect_blank">"Verbinding met %1$s verbreken?"</string>
+    <string name="bluetooth_connected">"Verbonden"</string>
+    <!-- no translation found for bluetooth_disconnected (779512372559332317) -->
+    <skip />
+    <!-- no translation found for bluetooth_disconnecting (613305857810977890) -->
+    <skip />
+    <string name="bluetooth_connecting">"Verbinden…"</string>
+    <string name="bluetooth_unknown">"Onbekend"</string>
+    <string name="bluetooth_not_connected">"Niet verbonden"</string>
+    <!-- no translation found for bluetooth_failed_to_enable (10261849074413402) -->
+    <skip />
+    <!-- no translation found for bluetooth_pairing (8284273555047880444) -->
+    <skip />
+    <!-- no translation found for failed_to_pair (5265027255173301781) -->
+    <skip />
+    <string name="failed_to_connect">"Geen verbinding gemaakt met "</string>
+    <string name="bluetooth_paired">"Gekoppeld"</string>
+    <!-- no translation found for bluetooth_paired_not_nearby (2890021978719716438) -->
+    <skip />
+    <string name="bluetooth_device">"handsfree / headset"</string>
+    <!-- no translation found for bluetooth_disconnect (4070053533691322466) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect (6123567524009555372) -->
+    <skip />
+    <!-- no translation found for bluetooth_unpair (6786377316984999718) -->
+    <skip />
+    <!-- no translation found for bluetooth_pair (6433088623778842494) -->
+    <skip />
+    <string name="progress_scanning">"Scannen"</string>
+    <!-- no translation found for bluetooth_notif_ticker (6269529534945974964) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_title (3790273649365187417) -->
+    <skip />
+    <!-- no translation found for bluetooth_notif_message (3713615470961259613) -->
+    <skip />
+    <string name="date_and_time">"Datum &amp; Tijd"</string>
+    <!-- no translation found for date_time_12_hour_sample (3346099183513673921) -->
+    <skip />
+    <!-- no translation found for date_time_24_hour_sample (2930431568836213699) -->
+    <skip />
+    <string name="choose_timezone">"Tijdzone selecteren"</string>
+    <string name="display_preview_label">"Voorbld:"</string>
+    <string name="display_font_size_label">"Lettergrootte:"</string>
+    <string name="intent_sender_data_label">"Gegevens:"</string>
+    <string name="intent_sender_sendbroadcast_text">"Uitzending versturen"</string>
+    <string name="intent_sender_action_label">"Actie:"</string>
+    <string name="intent_sender_startactivity_text">"Activiteit starten"</string>
+    <string name="intent_sender_resource_label">"Netwerkbron:"</string>
+    <string name="intent_sender_account_label">"Account:"</string>
+    <string name="keyguard_pw_mod_text">"Blokkeringspatroon selecteren"</string>
+    <string name="keyguard_pin_mod_text">"Pincode wijzigen"</string>
+    <string name="keyguard_label">"Toetsbescherming"</string>
+    <string name="keyguard_sim_pin_label">"SIM-pincode"</string>
+    <string name="keyguard_password_old_password_error_text">"Het oude wachtwoord is onjuist! Probeer het opnieuw"</string>
+    <string name="keyguard_password_button_text">"OK"</string>
+    <string name="keyguard_password_confirm_new_label">"Bevestig nieuw wachtwoord:"</string>
+    <string name="keyguard_password_new_label">"Nieuw wachtwoord:"</string>
+    <string name="keyguard_password_old_label">"Oud wachtwoord:"</string>
+    <string name="keyguard_password_mismatch_error_text">"De twee wachtwoorden verschillen! Voer ze nogmaals in"</string>
+    <string name="proxy_clear_text">"Wissen"</string>
+    <string name="proxy_port_label">"Poort"</string>
+    <string name="proxy_defaultView_text">"Beginwaarden"</string>
+    <string name="proxy_action_text">"Opslaan"</string>
+    <string name="proxy_hostname_label">"Hostnaam"</string>
+    <string name="proxy_error">"Let op!"</string>
+    <string name="proxy_error_dismiss">"OK"</string>
+    <string name="proxy_error_invalid_host">"De opgegeven hostnaam is ongeldig"</string>
+    <string name="proxy_error_empty_port">"U moet het poortveld voltooien"</string>
+    <string name="proxy_error_empty_host_set_port">"Het poortveld moet blanco zijn als het hostveld blanco is"</string>
+    <string name="proxy_error_invalid_port">"De opgegeven poort is ongeldig"</string>
+    <string name="radio_info_signal_location_label">"Locatie:"</string>
+    <string name="radio_info_neighboring_location_label">"Omgevings-CID:"</string>
+    <string name="radio_info_data_attempts_label">"Gegevenspogingen:"</string>
+    <string name="radio_info_imsi_label">"IMSI:"</string>
+    <string name="radio_info_gprs_service_label">"Gprs-dienst:"</string>
+    <string name="radio_info_roaming_label">"Roaming:"</string>
+    <string name="radio_info_imei_label">"IMEI:"</string>
+    <string name="radio_info_call_redirect_label">"Gesprek doorsturen:"</string>
+    <string name="radio_info_ppp_resets_label">"Aantal PPP-resets sinds opstarten:"</string>
+    <string name="radio_info_gsm_disconnects_label">"Gsm-verbinding verbreken:"</string>
+    <string name="radio_info_current_network_label">"Huidig netwerk:"</string>
+    <string name="radio_info_data_successes_label">"Gegevenssuccessen:"</string>
+    <string name="radio_info_ppp_received_label">"PPP ontvangen:"</string>
+    <string name="radio_info_gsm_service_label">"Gsm-dienst:"</string>
+    <string name="radio_info_signal_strength_label">"Signaalsterkte:"</string>
+    <string name="radio_info_call_status_label">"Oproepstatus:"</string>
+    <string name="radio_info_ppp_sent_label">"PPP verzonden:"</string>
+    <string name="radio_info_radio_resets_label">"Radio resets:"</string>
+    <string name="radio_info_message_waiting_label">"Bericht wachtend op behandeling:"</string>
+    <string name="radio_info_phone_number_label">"Telefoonnummer:"</string>
+    <string name="radio_info_band_mode_label">"Radioband selecteren"</string>
+    <string name="radio_info_network_type_label">"Netwerktype:"</string>
+    <string name="radio_info_set_perferred_label">"Voorkeursnetwerktype instellen:"</string>
+    <!-- no translation found for radio_info_ping_ipaddr (7229811664688502621) -->
+    <skip />
+    <!-- no translation found for radio_info_ping_hostname (7817617877155199848) -->
+    <skip />
+    <!-- no translation found for radio_info_http_client_test (5100483824350561339) -->
+    <skip />
+    <!-- no translation found for radio_info_toggle_ciph_label (2705975697585878388) -->
+    <skip />
+    <!-- no translation found for ping_test_label (99396772665008247) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_label (6577522217730406517) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_update_label (6471155265532972448) -->
+    <skip />
+    <!-- no translation found for radio_info_smsc_refresh_label (4334057389927982364) -->
+    <skip />
+    <string name="band_mode_title">"Gsm/umts-band instellen"</string>
+    <string name="band_mode_loading">"Bandlijst wordt geladen…"</string>
+    <string name="band_mode_set">"Instellen"</string>
+    <string name="band_mode_failed">"Mislukt"</string>
+    <string name="band_mode_succeeded">"Geslaagd"</string>
+    <string name="ringer_volume_ringer_mode_label">"Beltoonmodus"</string>
+    <string name="ringer_volume_screen_increasing_text">"Belvolume verhogen"</string>
+    <string name="ringer_volume_ringtone_label">"Beltoon"</string>
+    <string name="ringer_volume_instructions">"Gebruik volumetoetsen om het belvolume aan te passen"</string>
+    <string name="sdcard_changes_instructions">"Veranderingen worden toegepast zodra de usb-kabel opnieuw wordt aangesloten"</string>
+    <string name="sdcard_settings_screen_mass_storage_text">"Usb-massaopslag inschakelen"</string>
+    <string name="sdcard_settings_total_bytes_label">"Totaal aantal bytes:"</string>
+    <string name="sdcard_settings_not_present_status">"Geen sd-kaart"</string>
+    <string name="sdcard_settings_available_bytes_label">"Beschikbare bytes:"</string>
+    <string name="sdcard_settings_mass_storage_status">"Sd-kaart wordt gebruikt als apparaat voor massaopslag"</string>
+    <string name="sdcard_settings_unmounted_status">"Nu kunt u de sd-kaart veilig verwijderen"</string>
+    <string name="sdcard_settings_bad_removal_status">"Sd-kaart is verwijderd terwijl deze nog in gebruik was!"</string>
+    <string name="sdcard_settings_used_bytes_label">"Gebruikt aantal bytes:"</string>
+    <string name="sdcard_settings_scanning_status">"Sd-kaart wordt gescand op media…"</string>
+    <string name="sdcard_settings_read_only_status">"Sd-kaart is alleen-lezen"</string>
+    <string name="sdcard_removal_alert_title">"Onveilige verwijdering van sd-kaart"</string>
+    <string name="sdcard_unmountable_alert_title">"Sd-kaart onleesbaar"</string>
+    <string name="telephony_user_label">"Gebruiker:"</string>
+    <string name="telephony_server_label">"Server:"</string>
+    <string name="telephony_name_label">"Naam:"</string>
+    <string name="telephony_mmsc_label">"MMSC:"</string>
+    <string name="telephony_apn_label">"APN:"</string>
+    <string name="telephony_mcc_label">"MCC:"</string>
+    <string name="telephony_port_label">"Poort:"</string>
+    <string name="telephony_password_label">"Wachtwoord :"</string>
+    <string name="telephony_proxy_label">"Proxy:"</string>
+    <string name="telephony_mnc_label">"MNC:"</string>
+    <string name="telephony_mmsproxy_label">"MMS-proxy:"</string>
+    <string name="telephony_mmsport_label">"MMS-poort:"</string>
+    <string name="next_label">"Volgende"</string>
+    <string name="language_picker_title">"Taal"</string>
+    <!-- no translation found for select_your_language (9081963472187973531) -->
+    <skip />
+    <string name="activity_picker_label">"Activiteit selecteren"</string>
+    <string name="device_info_label">"Toestelinfo"</string>
+    <string name="battery_info_label">"Batterij-info"</string>
+    <string name="display_label">"Scherm"</string>
+    <string name="phone_info_label">"Telefooninfo"</string>
+    <string name="sd_card_settings_label">"Sd-kaart"</string>
+    <string name="proxy_settings_label">"Proxyinstellingen"</string>
+    <string name="cancel">"Annuleren"</string>
+    <string name="settings_label">"Instellingen"</string>
+    <string name="airplane_mode">"Vliegtuigmodus"</string>
+    <!-- no translation found for airplane_mode_summary (3500557633417506553) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_on (1243134862683209663) -->
+    <skip />
+    <!-- no translation found for airplane_mode_turning_off (2291183932542256190) -->
+    <skip />
+    <!-- no translation found for radio_controls_title (4981652151494753702) -->
+    <skip />
+    <!-- no translation found for radio_controls_summary (9105526969569292926) -->
+    <skip />
+    <string name="date_and_time_settings_title">"Datum &amp; Tijd"</string>
+    <!-- no translation found for date_and_time_settings_summary (3489093199543794055) -->
+    <skip />
+    <string name="date_time_auto">"Auto"</string>
+    <string name="date_time_auto_summaryOn">"Gebruik door netwerk geleverde waardes"</string>
+    <string name="date_time_auto_summaryOff">"Gebruik door gebruikers gekozen waardes"</string>
+    <string name="date_time_24hour">"24-uurs indeling"</string>
+    <string name="date_time_set_time">"Tijd instellen"</string>
+    <string name="date_time_set_timezone">"Tijdzone selecteren"</string>
+    <string name="date_time_set_date">"Datum instellen"</string>
+    <string name="date_time_date_format">"Datumindeling instellen"</string>
+    <!-- no translation found for zone_list_menu_sort_alphabetically (8983103881342552870) -->
+    <skip />
+    <!-- no translation found for zone_list_menu_sort_by_timezone (7025442915093990469) -->
+    <skip />
+    <!-- no translation found for security_settings_title (969550777120624897) -->
+    <skip />
+    <!-- no translation found for security_settings_summary (3202445632951595923) -->
+    <skip />
+    <!-- no translation found for security_passwords_title (4466520735598079063) -->
+    <skip />
+    <string name="bluetooth_quick_toggle_title">"Bluetooth"</string>
+    <!-- no translation found for bluetooth_quick_toggle_summary (2292894901949724405) -->
+    <skip />
+    <!-- no translation found for bluetooth_settings (1545097653816106117) -->
+    <skip />
+    <string name="bluetooth_settings_title">"Bluetooth-instellingen"</string>
+    <!-- no translation found for bluetooth_settings_summary (1419697742707330821) -->
+    <skip />
+    <string name="bluetooth_pin_entry">"Bluetooth-pincode invoeren"</string>
+    <string name="bluetooth_device_info">"Bluetooth-toestelinfo"</string>
+    <string name="bluetooth_pairing_msg">"Koppelen…"</string>
+    <string name="bluetooth_enter_pin_msg">"Voer pincode in voor"</string>
+    <string name="bluetooth_new_data">"Voer nieuwe gegevens in"</string>
+    <string name="bluetooth_new_data_confirm">"OK"</string>
+    <string name="bluetooth_new_data_cancel">"Annuleren"</string>
+    <string name="bluetooth_scan_for_new_devices">"Bezig met scannen naar nieuwe toestellen…"</string>
+    <string name="bluetooth_discoverability_panel_title">"Maak me…"</string>
+    <string name="bluetooth_discoverable">"Zichtbaar &amp; met verbinding"</string>
+    <string name="bluetooth_connectable">"Alleen waarmee verbinding mogelijk is"</string>
+    <string name="bluetooth_neither">"Zichtbaar noch met verbinding"</string>
+    <!-- no translation found for bluetooth_preference_scan_title (5457824526570506576) -->
+    <skip />
+    <!-- no translation found for bluetooth_preference_scan_summary (4169248439102381141) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect (1360133741981139570) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect (3848550418295778426) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_pair_connect (3526057462723016574) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_unpair (1842004154350000288) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_disconnect_unpair (302606151874724466) -->
+    <skip />
+    <!-- no translation found for bluetooth_device_context_connect_advanced (5004355397163127842) -->
+    <skip />
+    <!-- no translation found for bluetooth_connect_specific_profiles_title (8557599374974072579) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_a2dp (6848174297822591204) -->
+    <skip />
+    <!-- no translation found for bluetooth_profile_headset (8660680578951214915) -->
+    <skip />
+    <string name="wifi">"Wi-Fi"</string>
+    <!-- no translation found for wifi_quick_toggle_title (4404851801229148146) -->
+    <skip />
+    <!-- no translation found for wifi_quick_toggle_summary (5254705029759236850) -->
+    <skip />
+    <string name="wifi_settings">"Wifi-instellingen"</string>
+    <!-- no translation found for wifi_settings_category (610287013958209636) -->
+    <skip />
+    <!-- no translation found for wifi_settings_summary (8789964612748859011) -->
+    <skip />
+    <string name="forget_network">"Vergeten"</string>
+    <!-- no translation found for wifi_status (4374358089273446404) -->
+    <skip />
+    <!-- no translation found for wifi_link_speed (8766462457818203791) -->
+    <skip />
+    <!-- no translation found for wifi_signal_3 (1264702582845283580) -->
+    <skip />
+    <!-- no translation found for wifi_signal_2 (3765197678751351272) -->
+    <skip />
+    <!-- no translation found for wifi_signal_1 (3469786868912545422) -->
+    <skip />
+    <!-- no translation found for wifi_signal_0 (7285670709111185231) -->
+    <skip />
+    <string name="security">"Beveiliging"</string>
+    <!-- no translation found for wifi_security_open (6529463996240023139) -->
+    <skip />
+    <!-- no translation found for wifi_security_wep (8543279149057388909) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa (7229647924366572707) -->
+    <skip />
+    <!-- no translation found for wifi_security_wpa2 (641020427516679969) -->
+    <skip />
+    <!-- no translation found for wifi_security_unknown (7700764937580224930) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_open (7105261201983314526) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wep (2018232984976185738) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa (7240649761750328761) -->
+    <skip />
+    <!-- no translation found for wifi_security_verbose_wpa2 (5470387821577814216) -->
+    <skip />
+    <string name="ip_address">"Ip-adres"</string>
+    <string name="signal">"Signaalsterkte"</string>
+    <!-- no translation found for wifi_starting (380585178092358776) -->
+    <skip />
+    <!-- no translation found for wifi_stopping (1130828572786743854) -->
+    <skip />
+    <!-- no translation found for wifi_error (7223451684597210919) -->
+    <skip />
+    <string name="error_starting">"Fout bij starten van wifi"</string>
+    <string name="error_stopping">"Fout bij stoppen van wifi"</string>
+    <string name="error_scanning">"Fout bij scannen naar netwerken"</string>
+    <string name="error_connecting">"Fout bij maken van netwerkverbinding"</string>
+    <string name="error_saving">"Fout bij opslaan netwerk"</string>
+    <string name="connect">"Verbinden"</string>
+    <string name="connect_to_blank">"Verbinding maken met %1$s"</string>
+    <string name="please_type_passphrase">"Voer de draadloze wachtwoordcode in"</string>
+    <!-- no translation found for please_type_hex_key (3792966437690051423) -->
+    <skip />
+    <!-- no translation found for wifi_show_password (2142204324333077532) -->
+    <skip />
+    <string name="scan_wifi">"Scannen"</string>
+    <string name="summary_not_in_range">"Niet in bereik"</string>
+    <string name="summary_remembered">"Onthouden"</string>
+    <!-- no translation found for summary_connection_failed (5466501123715222542) -->
+    <skip />
+    <string name="wifi_access_points">"Netwerken"</string>
+    <!-- no translation found for wifi_type_ssid (4389276980911820577) -->
+    <skip />
+    <!-- no translation found for wifi_security (8115513846744543151) -->
+    <skip />
+    <!-- no translation found for wifi_save_config (1041957548332322297) -->
+    <skip />
+    <!-- no translation found for wifi_password_unchanged (5583782979192657008) -->
+    <skip />
+    <!-- no translation found for wifi_add_other_network (914072465709281633) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks (3091942233631075516) -->
+    <skip />
+    <!-- no translation found for wifi_notify_open_networks_summary (1793737931132127488) -->
+    <skip />
+    <!-- no translation found for wifi_password_incorrect_error (8656138222468900361) -->
+    <skip />
+    <!-- no translation found for wifi_generic_connection_error (4414845075108763948) -->
+    <skip />
+    <!-- no translation found for wifi_menu_advanced (7729886219986221918) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_titlebar (6646153875184353089) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_save (5525488681356054899) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_menu_cancel (4123436217014637229) -->
+    <skip />
+    <!-- no translation found for wifi_ip_settings_invalid_ip (1648124374575025870) -->
+    <skip />
+    <!-- no translation found for wifi_use_static_ip (4076793026334955338) -->
+    <skip />
+    <!-- no translation found for wifi_ip_address (6067958502872259392) -->
+    <skip />
+    <!-- no translation found for wifi_dns1 (7502077213876989613) -->
+    <skip />
+    <!-- no translation found for wifi_dns2 (3296825469895827273) -->
+    <skip />
+    <!-- no translation found for wifi_gateway (393330487055540831) -->
+    <skip />
+    <!-- no translation found for wifi_netmask (6024777305439519433) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_connect (3348366738100644008) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_forget (5844111744505938081) -->
+    <skip />
+    <!-- no translation found for wifi_context_menu_change_password (7074463790535015442) -->
+    <skip />
+    <!-- no translation found for wifi_advanced_titlebar (7352048185262676955) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_title (4302664253747096207) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_summary (5137058932628594680) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_error (581404310349899492) -->
+    <skip />
+    <!-- no translation found for wifi_setting_num_channels_channel_phrase (8341967925173918983) -->
+    <skip />
+    <string name="fragment_status_scanning">"Scannen"</string>
+    <string name="fragment_status_connecting">"Bezig met verbinding maken met %1$s"</string>
+    <string name="fragment_status_authenticating">"Controleren met %1$s"</string>
+    <string name="fragment_status_obtaining_ip">"Ip-adres wordt verkregen van %1$s"</string>
+    <string name="fragment_status_connected">"Verbonden met %1$s"</string>
+    <string name="fragment_status_disconnecting">"Verbinding met %1$s wordt verbroken"</string>
+    <string name="fragment_status_disconnected">"Verbinding verbroken"</string>
+    <string name="fragment_status_failed">"Mislukt"</string>
+    <string name="status_scanning">"Scannen"</string>
+    <string name="status_connecting">"Verbinding"</string>
+    <string name="status_authenticating">"Bezig met verifiëren"</string>
+    <string name="status_obtaining_ip">"Bezig met verkrijgen van ip-adres"</string>
+    <string name="status_connected">"Verbonden"</string>
+    <string name="status_disconnecting">"Verbinding wordt verbroken"</string>
+    <string name="status_disconnected">"Verbinding verbroken"</string>
+    <string name="status_failed">"Mislukt"</string>
+    <!-- no translation found for sound_and_display_settings (4749118288236939460) -->
+    <skip />
+    <!-- no translation found for sound_settings (2706184235211157339) -->
+    <skip />
+    <!-- no translation found for sound_and_display_settings_summary (3672623202659031178) -->
+    <skip />
+    <string name="silent_mode_title">"Stil"</string>
+    <!-- no translation found for silent_mode_summary (6135093989634963053) -->
+    <skip />
+    <string name="ringtone_title">"Telefoonbeltoon"</string>
+    <!-- no translation found for ringtone_summary (1766080371183553822) -->
+    <skip />
+    <string name="ring_volume_title">"Belvolume"</string>
+    <!-- no translation found for ring_volume_summary (8107485240454889544) -->
+    <skip />
+    <!-- no translation found for vibrate_title (4376574310180696114) -->
+    <skip />
+    <!-- no translation found for vibrate_summary (6788068739601216797) -->
+    <skip />
+    <string name="notification_sound_title">"Meldingsbeltonen"</string>
+    <!-- no translation found for notification_sound_summary (7617168477811163700) -->
+    <skip />
+    <string name="notification_sound_dialog_title">"Meldingsbeltonen selecteren"</string>
+    <!-- no translation found for media_volume_title (1693540506432790482) -->
+    <skip />
+    <!-- no translation found for media_volume_summary (7399719776785079493) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_title (5173416183471867551) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_on (7206798183944836534) -->
+    <skip />
+    <!-- no translation found for dtmf_tone_enable_summary_off (1555390648905350809) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_title (1955885794556255214) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_on (1491009278452582375) -->
+    <skip />
+    <!-- no translation found for sound_effects_enable_summary_off (1932117674347216086) -->
+    <skip />
+    <string name="sync_settings">"Synchronisatie"</string>
+    <!-- no translation found for sync_settings_summary (2105151329390814783) -->
+    <skip />
+    <!-- no translation found for sync_too_many_deletes (5404332736593108449) -->
+    <skip />
+    <!-- no translation found for sync_automatically (1757054007777364379) -->
+    <skip />
+    <string name="sync_enabled">"Synchroniseren met Google-server ingeschakeld"</string>
+    <string name="sync_disabled">"Uit"</string>
+    <string name="sync_menu_sync_now">"Nu synchroniseren"</string>
+    <string name="sync_menu_sync_cancel">"Synchroniseren annuleren"</string>
+    <string name="sync_gmail">"Gmail"</string>
+    <string name="sync_calendar">"Agenda"</string>
+    <string name="sync_contacts">"Contacten"</string>
+    <!-- no translation found for sync_too_many_deletes_desc (4152554451720380120) -->
+    <skip />
+    <!-- no translation found for sync_really_delete (8529530859370540061) -->
+    <skip />
+    <!-- no translation found for sync_undo_deletes (5506677219430968015) -->
+    <skip />
+    <!-- no translation found for sync_do_nothing (8346666920786786758) -->
+    <skip />
+    <!-- no translation found for sync_is_failing (427555999473172925) -->
+    <skip />
+    <!-- no translation found for sync_plug (7544937220884084907) -->
+    <skip />
+    <string name="display_settings">"Scherm"</string>
+    <!-- no translation found for animations_title (8735876378664711924) -->
+    <skip />
+    <!-- no translation found for animations_summary_on (4910047473170373768) -->
+    <skip />
+    <!-- no translation found for animations_summary_off (7454248311417075336) -->
+    <skip />
+    <string name="brightness">"Helderheid"</string>
+    <!-- no translation found for screen_timeout (8939204183998677539) -->
+    <skip />
+    <string name="dim_screen">"Scherm dimmen"</string>
+    <string name="sim_lock_settings">"SIM-kaartblokkering"</string>
+    <!-- no translation found for sim_lock_settings_category (5039441655358781230) -->
+    <skip />
+    <string name="sim_lock_settings_title">"SIM-blokkeerinstellingen"</string>
+    <string name="sim_pin_toggle">"SIM-kaartblokkering"</string>
+    <string name="sim_lock_on">"SIM-kaartblokkering aan"</string>
+    <string name="sim_lock_off">"SIM-kaartblokkering uit"</string>
+    <string name="sim_pin_change">"Pincode veranderen"</string>
+    <string name="sim_enter_pin">"SIM-pincode invoeren"</string>
+    <string name="sim_enable_sim_lock">"SIM-kaartblokkering inschakelen"</string>
+    <string name="sim_disable_sim_lock">"SIM-kaartblokkering uitschakelen"</string>
+    <string name="sim_enter_old">"Oude pincode invoeren"</string>
+    <string name="sim_enter_new">"Nieuwe pincode invoeren"</string>
+    <string name="sim_reenter_new">"Voer nieuwe pincode opnieuw in"</string>
+    <string name="sim_change_pin">"SIM-pincode wijzigen"</string>
+    <string name="sim_bad_pin">"Let op: Onjuiste pincode"</string>
+    <string name="sim_pins_dont_match">"Let op: Pincodes verschillen"</string>
+    <string name="sim_change_failed">"Veranderen van pincode mislukt"\n"Wellicht onjuiste pincode"</string>
+    <string name="sim_change_succeeded">"Veranderen van SIM-pincode gelukt"</string>
+    <string name="sim_lock_failed">"Veranderen blokkeringsstatus van SIM-kaart mislukt"\n"Wellicht onjuist pincode"</string>
+    <string name="sim_enter_ok">"OK"</string>
+    <string name="sim_enter_cancel">"Annuleren"</string>
+    <string name="device_info_settings">"Toestelinfo"</string>
+    <!-- no translation found for system_update_settings_list_item_title (6730200310196695815) -->
+    <skip />
+    <!-- no translation found for system_update_settings_list_item_summary (6739352515982816664) -->
+    <skip />
+    <string name="firmware_version">"Firmwareversie"</string>
+    <!-- no translation found for model_number (4107796374489189882) -->
+    <skip />
+    <string name="baseband_version">"Basebandversie"</string>
+    <!-- no translation found for kernel_version (55378504731737055) -->
+    <skip />
+    <!-- no translation found for build_number (1198654854394859525) -->
+    <skip />
+    <!-- no translation found for device_info_not_available (6218382614449625943) -->
+    <skip />
+    <!-- no translation found for device_status_activity_title (7855799759928692423) -->
+    <skip />
+    <string name="device_status">"Status"</string>
+    <string name="device_status_summary">"IMEI, telefoonnummer, signaal, enz."</string>
+    <!-- no translation found for storage_settings_title (7861753874184164833) -->
+    <skip />
+    <!-- no translation found for storage_settings_summary (1416818376253802300) -->
+    <skip />
+    <string name="status_number">"Telefoonnummer"</string>
+    <string name="status_network_type">"Netwerktype"</string>
+    <string name="status_data_state">"Gegevenstoegang"</string>
+    <string name="status_service_state">"Dienststatus"</string>
+    <string name="status_signal_strength">"Signaalsterkte"</string>
+    <string name="status_roaming">"Roaming"</string>
+    <string name="status_operator">"Netwerk"</string>
+    <!-- no translation found for status_wifi_mac_address (6992831729694423293) -->
+    <skip />
+    <!-- no translation found for status_bt_address (504373592762785867) -->
+    <skip />
+    <!-- no translation found for status_unavailable (6051510065892966154) -->
+    <skip />
+    <string name="status_up_time">"Tijd geactiveerd"</string>
+    <string name="status_awake_time">"Opwektijd"</string>
+    <!-- no translation found for internal_memory (7561409402817962159) -->
+    <skip />
+    <!-- no translation found for sd_memory (1795406535114313767) -->
+    <skip />
+    <!-- no translation found for memory_available (2899158225295363424) -->
+    <skip />
+    <!-- no translation found for memory_size (427803224818498885) -->
+    <skip />
+    <!-- no translation found for sd_eject (5921913949386442101) -->
+    <skip />
+    <string name="sd_unavailable">"Niet beschikbaar"</string>
+    <string name="read_only">" (Alleen lezen)"</string>
+    <!-- no translation found for battery_status_title (4908729478929871241) -->
+    <skip />
+    <!-- no translation found for battery_level_title (7696801820825704716) -->
+    <skip />
+    <string name="apn_settings">"APN"</string>
+    <string name="apn_edit">"Toegangspunt bewerken"</string>
+    <string name="apn_not_set">"&lt;Niet ingesteld&gt;"</string>
+    <string name="apn_name">"Naam"</string>
+    <string name="apn_apn">"APN"</string>
+    <string name="apn_http_proxy">"Proxy"</string>
+    <string name="apn_http_port">"Poort"</string>
+    <string name="apn_user">"Gebruikersnaam"</string>
+    <string name="apn_password">"Wachtwoord"</string>
+    <string name="apn_server">"Server"</string>
+    <string name="apn_mmsc">"MMSC"</string>
+    <string name="apn_mms_proxy">"MMS-proxy"</string>
+    <string name="apn_mms_port">"MMS-poort"</string>
+    <string name="apn_mcc">"MCC"</string>
+    <string name="apn_mnc">"MNC"</string>
+    <!-- no translation found for apn_type (2506383481268652319) -->
+    <skip />
+    <string name="menu_delete">"APN verwijderen"</string>
+    <string name="menu_new">"Nieuwe APN"</string>
+    <string name="menu_save">"Opslaan"</string>
+    <string name="menu_cancel">"Wissen"</string>
+    <string name="error_title">"Ongeldige gegevens"</string>
+    <string name="error_name_empty">"Naam kan niet blanco zijn"</string>
+    <string name="error_apn_empty">"APN kan niet blanco zijn"</string>
+    <string name="error_mcc_not3">"MMC-veld moet 3 tekens zijn"</string>
+    <string name="error_mnc_not23">"MMC-veld moet 2 of 3 tekens zijn"</string>
+    <string name="master_clear_title">"Hoofd wissen"</string>
+    <!-- no translation found for master_clear_summary (2468534382451112879) -->
+    <skip />
+    <string name="master_clear_desc">"Herstelt de oorspronkelijke fabriekswaarden van het toestel, waarbij alle gegevens en gedownloade toepassingen worden gewist"</string>
+    <string name="master_clear_button_text">"Apparaat opnieuw instellen"</string>
+    <string name="master_clear_final_desc">"Toestel resetten, waarbij alle gegevens en toepassingen worden gewist? Handeling kan niet worden teruggedraaid!"</string>
+    <string name="master_clear_final_button_text">"Alles wissen"</string>
+    <string name="master_clear_gesture_prompt">"Teken het blokkeringspatroon"</string>
+    <string name="master_clear_gesture_explanation">"U moet het blokkeringspatroon tekeken om een toestelreset goed te keuren"</string>
+    <string name="master_clear_failed">"Geen reset uitgevoerd omdat de service Systeem wissen niet beschikbaar is"</string>
+    <string name="call_settings_title">"Belinstellingen"</string>
+    <!-- no translation found for call_settings_summary (3446216896482844237) -->
+    <skip />
+    <string name="network_settings_title">"Netwerkinstellingen"</string>
+    <!-- no translation found for network_settings_summary (8031949240036716110) -->
+    <skip />
+    <!-- no translation found for location_title (4501749309437121375) -->
+    <skip />
+    <string name="location_network_based">"Gebaseerd op netwerk"</string>
+    <!-- no translation found for location_networks_disabled (7048471014395968941) -->
+    <skip />
+    <string name="location_neighborhood_level">"Nauwkeurigheid op buurtniveau"</string>
+    <string name="location_gps">"Gebaseerd op gps"</string>
+    <string name="location_street_level">"Nauwkeurigheid op straatniveau"</string>
+    <!-- no translation found for location_gps_disabled (4004885356658024277) -->
+    <skip />
+    <!-- no translation found for about_settings (1468182090257585152) -->
+    <skip />
+    <!-- no translation found for about_settings_summary (7669309646592260587) -->
+    <skip />
+    <!-- no translation found for legal_information (6712607847710471677) -->
+    <skip />
+    <!-- no translation found for contributors_title (4798193298012318879) -->
+    <skip />
+    <!-- no translation found for copyright_title (2179228277436615247) -->
+    <skip />
+    <!-- no translation found for license_title (819526735187376873) -->
+    <skip />
+    <!-- no translation found for terms_title (7807601861320706623) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_title (7912723098716795094) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_unavailable (2081311778550755077) -->
+    <skip />
+    <!-- no translation found for settings_license_activity_loading (1663818560123999889) -->
+    <skip />
+    <string name="lock_settings_title">"Blokkeergebaar"</string>
+    <string name="lockpattern_change_lock_pattern_label">"Patroon voor veranderen blokkering"</string>
+    <string name="lockpattern_need_to_unlock">"Opgeslagen patroon bevestigen:"</string>
+    <string name="lockpattern_need_to_unlock_wrong">"Onjuist! Nogmaals proberen:"</string>
+    <string name="lockpattern_recording_intro_header">"Teken een patroon om als codeblokkering te gebruiken:"</string>
+    <string name="lockpattern_recording_intro_footer">"Druk op Menu voor hulp"</string>
+    <string name="lockpattern_recording_inprogress">"Til de vinger op als u klaar bent"</string>
+    <!-- no translation found for lockpattern_recording_incorrect_too_short (8234374450664107990) -->
+    <skip />
+    <string name="lockpattern_pattern_entered_header">"U selecteerde:"</string>
+    <!-- no translation found for lockpattern_need_to_confirm (6414172006294337771) -->
+    <skip />
+    <string name="lockpattern_pattern_confirmed_header">"Het nieuwe blokkeringspatroon:"</string>
+    <string name="lockpattern_confirm_button_text">"Bevestigen"</string>
+    <string name="lockpattern_restart_button_text">"Opnieuw starten"</string>
+    <!-- no translation found for lockpattern_retry_button_text (7695474740059017745) -->
+    <skip />
+    <!-- no translation found for lockpattern_continue_button_text (1077275957953266837) -->
+    <skip />
+    <string name="lockpattern_settings_title">"Blokkeergebaar"</string>
+    <string name="lockpattern_settings_enable_title">"Blokkeergebaar"</string>
+    <string name="lockpattern_settings_enable_summary">"Gebaar vereisen voor vrijgeven"</string>
+    <string name="lockpattern_settings_enable_visible_pattern_title">"Zichtbaar patroon gebruiken"</string>
+    <string name="lockpattern_settings_choose_lock_pattern">"Patroon voor blokkeringsgebaar selecteren"</string>
+    <string name="lockpattern_settings_change_lock_pattern">"Gebaarpatroon voor veranderen blokkering"</string>
+    <string name="lockpattern_settings_help_how_to_record">"Het opnemen van een blokkeringspatroon"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_header">"Te veel onjuiste bevestigingspogingen"</string>
+    <string name="lockpattern_too_many_failed_confirmation_attempts_footer">"Probeer opnieuw over <xliff:g id="NUMBER">%d</xliff:g> seconden"</string>
+    <!-- no translation found for skip_button_label (4850708311344393218) -->
+    <skip />
+    <!-- no translation found for next_button_label (3149701380025478958) -->
+    <skip />
+    <!-- no translation found for lock_title (999106562425756837) -->
+    <skip />
+    <!-- no translation found for lock_intro_message (2382351248538397170) -->
+    <skip />
+    <!-- no translation found for lock_example_title (6261868148302088973) -->
+    <skip />
+    <!-- no translation found for lock_example_message (2583534765034914458) -->
+    <skip />
+    <!-- no translation found for manageapplications_settings_title (3359899792647354589) -->
+    <skip />
+    <!-- no translation found for applications_settings (6104314134883460574) -->
+    <skip />
+    <!-- no translation found for applications_settings_summary (7666960391957493763) -->
+    <skip />
+    <!-- no translation found for applications_settings_header (6167136604757235210) -->
+    <skip />
+    <!-- no translation found for install_applications (8586540661161378543) -->
+    <skip />
+    <!-- no translation found for install_unknown_applications (8694019339326383901) -->
+    <skip />
+    <!-- no translation found for install_all_warning (5826871395153503952) -->
+    <skip />
+    <!-- no translation found for manage_applications_title (8288310040777485758) -->
+    <skip />
+    <!-- no translation found for application_info_label (605192869687093760) -->
+    <skip />
+    <!-- no translation found for storage_label (8765276782501761971) -->
+    <skip />
+    <!-- no translation found for auto_launch_label (3546876666453498673) -->
+    <skip />
+    <!-- no translation found for permissions_label (3244346920180368862) -->
+    <skip />
+    <!-- no translation found for total_size_label (5016115699600749568) -->
+    <skip />
+    <!-- no translation found for application_size_label (5378963933449396413) -->
+    <skip />
+    <!-- no translation found for data_size_label (6038126657652457179) -->
+    <skip />
+    <!-- no translation found for uninstall_text (2322009518449651787) -->
+    <skip />
+    <!-- no translation found for clear_user_data_text (3586758620250813061) -->
+    <skip />
+    <!-- no translation found for auto_launch_enable_text (8228619838865933982) -->
+    <skip />
+    <!-- no translation found for auto_launch_disable_text (4696687016762486484) -->
+    <skip />
+    <!-- no translation found for clear_activities (2399981667625036009) -->
+    <skip />
+    <!-- no translation found for unknown (7966307317466394761) -->
+    <skip />
+    <!-- no translation found for sort_order_alpha (210746743398042077) -->
+    <skip />
+    <!-- no translation found for sort_order_size (2716777274377923612) -->
+    <skip />
+    <!-- no translation found for manage_space_text (3118726017144542336) -->
+    <skip />
+    <!-- no translation found for filter_apps_all (5819127882791374920) -->
+    <skip />
+    <!-- no translation found for filter_apps_third_party (8693065498520334174) -->
+    <skip />
+    <!-- no translation found for filter_apps_running (2019159142681656258) -->
+    <skip />
+    <!-- no translation found for loading (5170696093820794830) -->
+    <skip />
+    <!-- no translation found for recompute_size (8376294373548662083) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_title (2115093619616088799) -->
+    <skip />
+    <!-- no translation found for clear_data_dlg_text (3004273956481932846) -->
+    <skip />
+    <!-- no translation found for dlg_ok (2225130755859653348) -->
+    <skip />
+    <!-- no translation found for dlg_cancel (8597172015374919396) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_title (6649900521951617898) -->
+    <skip />
+    <!-- no translation found for app_not_found_dlg_text (6893475426667174751) -->
+    <skip />
+    <!-- no translation found for clear_data_failed (3040984234884359027) -->
+    <skip />
+    <!-- no translation found for security_settings_desc (5898339748632998613) -->
+    <skip />
+    <!-- no translation found for default_app_desc (3475613003133497043) -->
+    <skip />
+    <!-- no translation found for computing_size (7350089935999085554) -->
+    <skip />
+    <!-- no translation found for invalid_size_value (3054945647487201471) -->
+    <skip />
+    <!-- no translation found for language_settings (7247557040404006341) -->
+    <skip />
+    <!-- no translation found for language_settings_summary (721948806318958691) -->
+    <skip />
+    <!-- no translation found for language_category (6646529166552376418) -->
+    <skip />
+    <!-- no translation found for text_category (3133311779500246731) -->
+    <skip />
+    <!-- no translation found for phone_language (4084332836028530631) -->
+    <skip />
+    <!-- no translation found for auto_replace (6134508433464846627) -->
+    <skip />
+    <!-- no translation found for auto_replace_summary (1016177921245107750) -->
+    <skip />
+    <!-- no translation found for auto_caps (6021984352657087728) -->
+    <skip />
+    <!-- no translation found for auto_caps_summary (4783973594319542220) -->
+    <skip />
+    <!-- no translation found for auto_punctuate (2819742922158924703) -->
+    <skip />
+    <!-- no translation found for auto_punctuate_summary (2664143621323054924) -->
+    <skip />
+    <!-- no translation found for show_password (2353636034424349266) -->
+    <skip />
+    <!-- no translation found for show_password_summary (3920555488855590831) -->
+    <skip />
+    <!-- no translation found for testing (555268605244514909) -->
+    <skip />
+    <!-- no translation found for testing_phone_info (8718517606602144606) -->
+    <skip />
+    <!-- no translation found for testing_battery_info (3826036256683980425) -->
+    <skip />
+    <!-- no translation found for quick_launch_title (5423323579273213815) -->
+    <skip />
+    <!-- no translation found for quick_launch_summary (1272194567210324017) -->
+    <skip />
+    <!-- no translation found for quick_launch_assign_application (5949445664563354321) -->
+    <skip />
+    <!-- no translation found for quick_launch_no_shortcut (5958195604101558965) -->
+    <skip />
+    <!-- no translation found for quick_launch_shortcut (1115195051591830635) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_title (5217130241215296612) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_dialog_message (3420665419624963430) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_ok_button (2442832413597511429) -->
+    <skip />
+    <!-- no translation found for quick_launch_clear_cancel_button (1437354385792055993) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_applications (6570683843184675363) -->
+    <skip />
+    <!-- no translation found for quick_launch_display_mode_shortcuts (6642750364678074004) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_title (1752662012056721926) -->
+    <skip />
+    <!-- no translation found for input_methods_settings_summary (5481367119142131313) -->
+    <skip />
+    <!-- no translation found for development_settings_title (4671731485005432632) -->
+    <skip />
+    <!-- no translation found for development_settings_summary (5518361138194831299) -->
+    <skip />
+    <!-- no translation found for enable_adb (7770070343289262572) -->
+    <skip />
+    <!-- no translation found for enable_adb_summary (1498997582065835981) -->
+    <skip />
+    <!-- no translation found for keep_screen_on (5805533478834516956) -->
+    <skip />
+    <!-- no translation found for keep_screen_on_summary (5703353541069794974) -->
+    <skip />
+    <!-- no translation found for allow_mock_location (6204808904743157937) -->
+    <skip />
+    <!-- no translation found for allow_mock_location_summary (3154837501223277592) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 19907b1..0000000
--- a/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,700 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="about_settings">關於電話</string>
-  <string name="about_settings_summary">檢視合法資訊、電話狀態、軟體版本</string>
-  <string name="activity_picker_label">選取活動</string>
-  <string name="airplane_mode">飛安模式</string>
-  <string name="airplane_mode_summary">選取以便停用所有無線連線</string>
-  <string name="airplane_mode_turning_off">正在啟用無線連線\u2026</string>
-  <string name="airplane_mode_turning_on">正在停用無線連線\u2026</string>
-  <string name="android_id_label">Android ID</string>
-  <string name="apn_apn">APN</string>
-  <string name="apn_edit">編輯存取點</string>
-  <string name="apn_http_port">連接埠</string>
-  <string name="apn_http_proxy">Proxy</string>
-  <string name="apn_label">APN</string>
-  <string name="apn_mcc">MCC</string>
-  <string name="apn_mms_port">多媒體簡訊連接埠</string>
-  <string name="apn_mms_proxy">多媒體簡訊 Proxy</string>
-  <string name="apn_mmsc">MMSC</string>
-  <string name="apn_mnc">MNC</string>
-  <string name="apn_name">名稱</string>
-  <string name="apn_not_set">&lt;尚未設定&gt;</string>
-  <string name="apn_password">密碼</string>
-  <string name="apn_server">伺服器</string>
-  <string name="apn_settings">APN</string>
-  <string name="apn_type">APN 類型</string>
-  <string name="apn_user">使用者名稱</string>
-  <string name="app_launcher_newView_text">新增 AppLauncher</string>
-  <string name="app_not_found_dlg_text"> 已安裝之應用程式的清單中找
-不到此應用程式。</string>
-  <string name="app_not_found_dlg_title">找不到應用程式</string>
-  <string name="application_info_label">應用程式資訊</string>
-  <string name="application_size_label">應用程式</string>
-  <string name="applications_settings">應用程式</string>
-  <string name="applications_settings_header">應用程式設定</string>
-  <string name="applications_settings_summary">管理應用程式，設定快速啟動捷徑</string>
-  <string name="auto_caps">自動大寫</string>
-  <string name="auto_caps_summary">句子首字母大寫</string>
-  <string name="auto_launch_disable_text">無預設設定。</string>
-  <string name="auto_launch_enable_text">根據預設，您已經選取啟動此應用程式以便執行某些動作。</string>
-  <string name="auto_launch_label">預設啟動</string>
-  <string name="auto_punctuate">自動標點符號</string>
-  <string name="auto_punctuate_summary">按下 Space 鍵兩次即可插入 \u0022。\u0022</string>
-  <string name="auto_replace">自動取代</string>
-  <string name="auto_replace_summary">修正輸入錯誤的字彙</string>
-  <string name="autorotate">自動旋轉</string>
-  <string name="autorotate_summary_off">變更畫面方向不會旋轉應用程式</string>
-  <string name="autorotate_summary_on">變更畫面方向旋轉應用程式</string>
-  <string name="b_text">B</string>
-  <string name="band_mode_failed">失敗</string>
-  <string name="band_mode_loading">正在載入波段清單\u2026</string>
-  <string name="band_mode_set">設定</string>
-  <string name="band_mode_succeeded">成功</string>
-  <string name="band_mode_title">設定 GSM/UMTS 波段</string>
-  <string name="baseband_version">Baseband 版本</string>
-  <string name="basic_settings_title">電話基本資訊</string>
-  <string name="battery_info_awake_battery">使用電池時的喚醒時間：</string>
-  <string name="battery_info_awake_plugged">充電時的喚醒時間：</string>
-  <string name="battery_info_health_dead">故障</string>
-  <string name="battery_info_health_good">良好</string>
-  <string name="battery_info_health_label">電池壽命：</string>
-  <string name="battery_info_health_over_voltage">電壓超載</string>
-  <string name="battery_info_health_overheat">過熱</string>
-  <string name="battery_info_health_unknown">無法辨識</string>
-  <string name="battery_info_health_unspecified_failure">無法辨識的錯誤</string>
-  <string name="battery_info_label">電池資訊</string>
-  <string name="battery_info_level_label">電池電量：</string>
-  <string name="battery_info_scale_label">電池刻度：</string>
-  <string name="battery_info_screen_on">畫面顯示時間：</string>
-  <string name="battery_info_status_charging">正在充電</string>
-  <string name="battery_info_status_charging_ac">(AC)</string>
-  <string name="battery_info_status_charging_usb">(USB)</string>
-  <string name="battery_info_status_discharging">正在放電</string>
-  <string name="battery_info_status_full">充滿</string>
-  <string name="battery_info_status_label">電池狀態：</string>
-  <string name="battery_info_status_not_charging">尚未充電</string>
-  <string name="battery_info_status_unknown">無法辨識</string>
-  <string name="battery_info_technology_label">電池技術：</string>
-  <string name="battery_info_temperature_label">電池溫度：</string>
-  <string name="battery_info_temperature_units">\u00B0 C</string>
-  <string name="battery_info_uptime">開機後使用時間已經超過：</string>
-  <string name="battery_info_voltage_label">電池電壓：</string>
-  <string name="battery_info_voltage_units">mV</string>
-  <string name="battery_level_title">電池電量</string>
-  <string name="battery_status_title">電池狀態</string>
-  <string name="bluetooth">藍牙</string>
-  <string name="bluetooth_clear_list">清除裝置清單</string>
-  <string name="bluetooth_connect">連線</string>
-  <string name="bluetooth_connectable">僅可連線</string>
-  <string name="bluetooth_connected">已連線</string>
-  <string name="bluetooth_connecting">正在連線\u2026</string>
-  <string name="bluetooth_device">免持聽筒/耳機</string>
-  <string name="bluetooth_device_info">藍牙裝置資訊</string>
-  <string name="bluetooth_device_info_alias">裝置別名</string>
-  <string name="bluetooth_device_info_delete">移除此裝置</string>
-  <string name="bluetooth_device_info_no_alias">在此輸入類型別名\u2026</string>
-  <string name="bluetooth_device_info_sdp">列出支援的服務</string>
-  <string name="bluetooth_device_name">裝置名稱</string>
-  <string name="bluetooth_devices">藍牙裝置</string>
-  <string name="bluetooth_disabled">選取開啟藍牙</string>
-  <string name="bluetooth_disconnect">中斷連線</string>
-  <string name="bluetooth_disconnect_blank">將會與 <xliff:g id="device_name">%1$s</xliff:g> 中斷連線。</string>
-  <string name="bluetooth_discoverability_panel_title">將我設成\u2026</string>
-  <string name="bluetooth_discoverable">可搜尋 %1$s 秒</string>
-  <string name="bluetooth_enable_text">清空按鍵\u2026</string>
-  <string name="bluetooth_enabled">選取開啟藍牙</string>
-  <string name="bluetooth_enabling">正在開啟藍牙\u2026</string>
-  <string name="bluetooth_enter_pin_msg">輸入 PIN 碼\u0020</string>
-  <string name="bluetooth_failed_to_enable">無法開啟藍牙</string>
-  <string name="bluetooth_is_discoverable">可搜尋 %1$s 秒\u2026</string>
-  <string name="bluetooth_name_not_set">尚未設定名稱，使用帳號名稱代替</string>
-  <string name="bluetooth_neither">無法搜尋及連線</string>
-  <string name="bluetooth_new_data">輸入新資料</string>
-  <string name="bluetooth_new_data_cancel">取消</string>
-  <string name="bluetooth_new_data_confirm">確定</string>
-  <string name="bluetooth_not_connected">與此裝置配對</string>
-  <string name="bluetooth_not_discoverable">選取讓裝置設成可搜尋</string>
-  <string name="bluetooth_notif_message">選取配對目標\u0020</string>
-  <string name="bluetooth_notif_ticker">藍牙配對要求</string>
-  <string name="bluetooth_notif_title">藍牙配對要求</string>
-  <string name="bluetooth_pair">配對</string>
-  <string name="bluetooth_paired">已經配對</string>
-  <string name="bluetooth_paired_not_nearby">已經配對</string>
-  <string name="bluetooth_pairing">正在配對\u2026</string>
-  <string name="bluetooth_pairing_msg">正在配對\u2026</string>
-  <string name="bluetooth_pin_entry">輸入藍牙 PIN 碼</string>
-  <string name="bluetooth_quick_toggle_summary">選取開啟藍牙</string>
-  <string name="bluetooth_quick_toggle_title">藍牙</string>
-  <string name="bluetooth_scan_for_devices">掃描裝置</string>
-  <string name="bluetooth_scan_for_new_devices">正在掃描新裝置\u2026</string>
-  <string name="bluetooth_scan_text">清空按鍵\u2026</string>
-  <string name="bluetooth_settings">藍牙設定</string>
-  <string name="bluetooth_settings_summary">管理連線，及設定裝置名稱與可搜尋性</string>
-  <string name="bluetooth_settings_text">清空按鍵\u2026</string>
-  <string name="bluetooth_settings_title">藍牙設定</string>
-  <string name="bluetooth_starting">正在啟動藍牙\u2026</string>
-  <string name="bluetooth_stopping">正在停止藍牙\u2026</string>
-  <string name="bluetooth_unknown">無法辨識</string>
-  <string name="bluetooth_unpair">取消配對</string>
-  <string name="bluetooth_visibility">可搜尋的</string>
-  <string name="bootloader_version">Boot Loader 版本</string>
-  <string name="brightness">亮度</string>
-  <string name="build_date_label">建置日期</string>
-  <string name="build_description_label">建置說明</string>
-  <string name="build_host_label">建置主機</string>
-  <string name="build_id_label">建置 ID</string>
-  <string name="build_number">建置號碼</string>
-  <string name="build_type_label">建置類型</string>
-  <string name="build_user_label">建置使用者</string>
-  <string name="call_settings_summary">設定語音信箱、來電轉接、來電插撥、本機號碼</string>
-  <string name="call_settings_title">通話設定</string>
-  <string name="cancel">取消</string>
-  <string name="checkin_button_label">檢查升級</string>
-  <string name="checkin_download_failed">失敗</string>
-  <string name="checkin_download_label">下載狀態</string>
-  <string name="checkin_download_ongoing">正在下載</string>
-  <string name="checkin_download_pending">等待</string>
-  <string name="checkin_download_succeeded">已完成</string>
-  <string name="checkin_download_suspended">已擱置</string>
-  <string name="checkin_download_unknown">無法辨識的狀態</string>
-  <string name="checkin_failures_label">自上次成功後發生失敗</string>
-  <string name="checkin_last_time_label">最後一次成功檢查</string>
-  <string name="checkin_started_message">已經開始檢查\u2026</string>
-  <string name="checkin_status_label">檢查狀態</string>
-  <string name="checkin_time_never">(永不)</string>
-  <string name="checkin_upgrade_label">正在等待升級</string>
-  <string name="choose_timezone">選取時區</string>
-  <string name="choose_timezone_region">選取地區</string>
-  <string name="clear_activities">清除預設值</string>
-  <string name="clear_data_dlg_text">在此應用程式中已經儲存的所有資訊將會被永久刪除。</string>
-  <string name="clear_data_dlg_title">刪除</string>
-  <string name="clear_data_failed">無法清除應用程式資料。</string>
-  <string name="clear_user_data_text">清除資料</string>
-  <string name="computing_size">正在計算應用程式大小\u2026</string>
-  <string name="connect">連線</string>
-  <string name="connect_to_blank">連線到 <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="contributors_title">代理商</string>
-  <string name="copyright_title">Copyright</string>
-  <string name="data_settings">資料設定</string>
-  <string name="data_settings_summary">SD 卡與電話儲存空間、資料同步</string>
-  <string name="data_settings_title">資料</string>
-  <string name="data_size_label">資料</string>
-  <string name="date_and_time">日期與時間設定</string>
-  <string name="date_and_time_settings_summary">設定日期、時間、時區與格式</string>
-  <string name="date_and_time_settings_title">日期與時間</string>
-  <string name="date_time_24hour">使用 24 小時格式</string>
-  <string name="date_time_auto">自動</string>
-  <string name="date_time_auto_summaryOff">使用網路提供的值</string>
-  <string name="date_time_auto_summaryOn">使用網路提供的值</string>
-  <string name="date_time_changeDate_text">變更日期</string>
-  <string name="date_time_changeTime_text">變更時間</string>
-  <string name="date_time_dateDisplay_text">1997 年 11 月 3 日</string>
-  <string name="date_time_date_format">選取日期格式</string>
-  <string name="date_time_set_date">設定日期</string>
-  <string name="date_time_set_time">設定時間</string>
-  <string name="date_time_set_timezone">設定時區</string>
-  <string name="date_time_setzone_text">變更時區</string>
-  <string name="date_time_timeDisplay_text">11:45 AM</string>
-  <string name="date_time_timezone_label">時區：</string>
-  <string name="debug_intent_sender_label">Debug intent sender</string>
-  <string name="default_date_format">yyyy/MM/dd</string>
-  <string name="default_keyboard_device_label">預設鍵盤裝置</string>
-  <string name="development_settings_summary">應用程式開發設定</string>
-  <string name="development_settings_title">開發</string>
-  <string name="device_info_asleeptime">睡眠時間</string>
-  <string name="device_info_awaketime">喚醒時間</string>
-  <string name="device_info_default">無法辨識</string>
-  <string name="device_info_label">裝置資訊</string>
-  <string name="device_info_not_available">無法使用</string>
-  <string name="device_info_settings">電話狀態</string>
-  <string name="device_info_uptime">正常運作時間</string>
-  <string name="device_status">狀態</string>
-  <string name="device_status_summary">IMEI、電話號碼、訊號等</string>
-  <string name="dim_screen">畫面變暗</string>
-  <string name="disconnect_ums">與 USB 高容量儲存裝置中斷連線</string>
-  <string name="display_font_size_label">字型大小：</string>
-  <string name="display_label">顯示</string>
-  <string name="display_preview_label">預覽：</string>
-  <string name="display_settings">顯示設定</string>
-  <string name="dlg_cancel">取消</string>
-  <string name="dlg_ok">確定</string>
-  <string name="done">確定</string>
-  <string name="dtmf_tone_enable_summary_off">使用撥號鍵台時播放撥號音</string>
-  <string name="dtmf_tone_enable_summary_on">使用撥號鍵台時播放撥號音</string>
-  <string name="dtmf_tone_enable_title">可聽見的觸控撥號音</string>
-  <string name="enable_adb">USB 偵錯</string>
-  <string name="enable_adb_summary">連接 USB 時使用偵錯模式</string>
-  <string name="error_apn_empty">APN 不可以空白。</string>
-  <string name="error_connecting">無法連線到網路</string>
-  <string name="error_mcc_not3">MCC 欄位必須是 3 個數字。</string>
-  <string name="error_mnc_not23">MNC 欄位必須是 2 或 3 個數字。</string>
-  <string name="error_name_empty">名稱欄位不可以空白。</string>
-  <string name="error_saving">無法儲存網路</string>
-  <string name="error_scanning">無法掃描網路</string>
-  <string name="error_starting">無法啟動 Wi-Fi</string>
-  <string name="error_stopping">無法停止 Wi-Fi</string>
-  <string name="error_title">注意</string>
-  <string name="failed_to_connect">無法連線到 <xliff:g id="device_name">%1$s</xliff:g></string>
-  <string name="failed_to_pair">無法與 <xliff:g id="device_name">%1$s</xliff:g> 配對</string>
-  <string name="favorites_label">我的最愛</string>
-  <string name="firmware_version">韌體版本</string>
-  <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
-  <string name="font_size_save">確定</string>
-  <string name="forget_network">忘記</string>
-  <string name="fragment_status_authenticating">驗證 <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_connected">已連線到 <xliff:g id="network_name">%1$s</xliff:g></string>
-  <string name="fragment_status_connecting">正在連線到 <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
-  <string name="fragment_status_disconnected">已中斷連線</string>
-  <string name="fragment_status_disconnecting">正在與 <xliff:g id="network_name">%1$s</xliff:g> 中斷連線\u2026</string>
-  <string name="fragment_status_failed">失敗</string>
-  <string name="fragment_status_obtaining_ip">正在從 <xliff:g id="network_name">%1$s</xliff:g> 取得 IP 位址\u2026</string>
-  <string name="fragment_status_scanning">正在掃描\u2026</string>
-  <string name="gsm_version_baseband_label">Baseband 版本</string>
-  <string name="gsm_version_ril_impl_label">RIL Impl 版本</string>
-  <string name="install_all_warning">您的電話及個人資料極為容易遭受無法辨識之來源的應用程式
-攻擊。您在此同意，任何
-因為使用
-這些應用程式而可能導致的電話損壞或資料遺失皆完全由您自行負責。</string>
-  <string name="install_applications">無法辨識的來源</string>
-  <string name="install_unknown_applications">允許安裝非 Market 的應用程式</string>
-  <string name="intent_sender_account_label">帳號： </string>
-  <string name="intent_sender_action_label">動作：</string>
-  <string name="intent_sender_data_label">資料：</string>
-  <string name="intent_sender_resource_label">資源： </string>
-  <string name="intent_sender_sendbroadcast_text">傳送廣播</string>
-  <string name="intent_sender_startactivity_text">開始活動</string>
-  <string name="internal_memory">電話內建儲存空間</string>
-  <string name="ip_address">IP 位址</string>
-  <string name="kb_text">KB</string>
-  <string name="keep_screen_on">保持喚醒狀態</string>
-  <string name="keep_screen_on_summary">充電時畫面將不會進入睡眠模式</string>
-  <string name="kernel_version">Kernel 版本</string>
-  <string name="kernel_version_label">Linux Kernel 版本</string>
-  <string name="keyguard_label">鍵盤鎖</string>
-  <string name="keyguard_password_button_text">確定</string>
-  <string name="keyguard_password_confirm_new_label">確認新密碼：</string>
-  <string name="keyguard_password_mismatch_error_text">兩組密碼不相符。請再次輸入。</string>
-  <string name="keyguard_password_new_label">新密碼：</string>
-  <string name="keyguard_password_old_label">舊密碼：</string>
-  <string name="keyguard_password_old_password_error_text">輸入的舊密碼不正確。請再試一次。</string>
-  <string name="keyguard_pin_mod_text">變更 PIN 碼</string>
-  <string name="keyguard_pw_mod_text">選取鎖定模式</string>
-  <string name="keyguard_sim_pin_label">SIM 卡 PIN 碼</string>
-  <string name="language_category">語言設定</string>
-  <string name="language_picker_title">地區設定</string>
-  <string name="language_settings">文字</string>
-  <string name="language_settings_summary">選取文字自動修正選項</string>
-  <string name="large_font">大</string>
-  <string name="legal_information">法律資訊</string>
-  <string name="legal_information_summary">檢視條款與細則</string>
-  <string name="license_title">授權</string>
-  <string name="location_gps">啟用 GPS 衛星</string>
-  <string name="location_gps_disabled">定位到街道 (需要更多電池電量及更高衛星可見度)</string>
-  <string name="location_label">位置提供者：</string>
-  <string name="location_neighborhood_level">藉由 Wi-Fi 及/或行動電話網路判斷的位置</string>
-  <string name="location_network_based">使用無線網路</string>
-  <string name="location_networks_disabled">在應用程式中 (例如地圖) 使用無線網路檢視位置</string>
-  <string name="location_source">我的位置</string>
-  <string name="location_source_summary">選取判斷位置的來源</string>
-  <string name="location_status">狀態：</string>
-  <string name="location_street_level">精確定位到街道 (取消選取即可節省電池電量)</string>
-  <string name="location_title">我的位置來源</string>
-  <string name="lock_example_message">連接至少四個點。\n
-        \n當您準備繪製專屬的模式時，請選取「下一步」。
-    </string>
-  <string name="lock_example_title">模式範例</string>
-  <string name="lock_settings_title">畫面解除鎖定模式</string>
-  <string name="lock_title">保護電話</string>
-  <string name="lockpattern_change_lock_pattern_label">變更解除鎖定模式</string>
-  <string name="lockpattern_confirm_button_text">確認</string>
-  <string name="lockpattern_continue_button_text">繼續</string>
-  <string name="lockpattern_need_to_confirm">再次繪製模式以便確定：</string>
-  <string name="lockpattern_need_to_unlock">確認儲存的模式：</string>
-  <string name="lockpattern_need_to_unlock_wrong">抱歉，再試一次：</string>
-  <string name="lockpattern_pattern_confirmed_header">新的解除鎖定模式：</string>
-  <string name="lockpattern_pattern_entered_header">已經記錄模式！</string>
-  <string name="lockpattern_recording_incorrect_too_short">請連接至少 <xliff:g id="number">%d</xliff:g> 個點。再試一次：</string>
-  <string name="lockpattern_recording_inprogress">完成後鬆開手指。</string>
-  <string name="lockpattern_recording_intro_footer">按下功能表開啟說明。</string>
-  <string name="lockpattern_recording_intro_header">繪製解除鎖定模式：</string>
-  <string name="lockpattern_restart_button_text">重新繪製</string>
-  <string name="lockpattern_retry_button_text">重試</string>
-  <string name="lockpattern_settings_change_lock_pattern">變更解除鎖定模式</string>
-  <string name="lockpattern_settings_choose_lock_pattern">設定解除鎖定模式</string>
-  <string name="lockpattern_settings_enable_summary">必須繪製模式以便解除鎖定畫面</string>
-  <string name="lockpattern_settings_enable_title">需要模式</string>
-  <string name="lockpattern_settings_enable_visible_pattern_title">使用可見模式</string>
-  <string name="lockpattern_settings_help_how_to_record">繪製解除鎖定模式的方式：</string>
-  <string name="lockpattern_settings_title">解除鎖定模式</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_footer">請在 <xliff:g id="number">%d</xliff:g> 秒後再試一次。</string>
-  <string name="lockpattern_too_many_failed_confirmation_attempts_header">過多不正確嘗試！</string>
-  <string name="manage_applications_title">管理應用程式</string>
-  <string name="manage_space_text">管理空間</string>
-  <string name="manageapplications_settings_title">管理應用程式</string>
-  <string name="mass_storage">用於 USB 儲存</string>
-  <string name="master_clear_button_text">重設電話</string>
-  <string name="master_clear_desc">此動作將會把電話重設為其初始的出廠狀態，並清除所有的資料及下載的應用程式！</string>
-  <string name="master_clear_failed">尚未執行重設；因為無法使用系統清除服務。</string>
-  <string name="master_clear_final_button_text">全部清除</string>
-  <string name="master_clear_final_desc">重設電話，並清除所有的資料及應用程式？此動作無法還原！</string>
-  <string name="master_clear_gesture_explanation">您必須繪製解除鎖定模式，以便確認重設電話。</string>
-  <string name="master_clear_gesture_prompt">請繪製解除鎖定模式：</string>
-  <string name="master_clear_summary">清除電話上的所有資料</string>
-  <string name="master_clear_title">出廠資料重設</string>
-  <string name="mb_text">MB</string>
-  <string name="media_volume_summary">設定音樂及影片音量</string>
-  <string name="media_volume_title">媒體音量</string>
-  <string name="medium_font">中</string>
-  <string name="memory_available">可用空間</string>
-  <string name="memory_size">總空間</string>
-  <string name="menu_cancel">放棄</string>
-  <string name="menu_delete">刪除 APN</string>
-  <string name="menu_new">新增 APN</string>
-  <string name="menu_save">儲存</string>
-  <string name="model_number">型號</string>
-  <string name="network_settings_summary">設定漫遊、網路及 APN 選項</string>
-  <string name="network_settings_title">行動電話網路</string>
-  <string name="networks">選取電信業者</string>
-  <string name="networks_title">網路設定</string>
-  <string name="next_button_label">下一步</string>
-  <string name="next_label">下一步</string>
-  <string name="notification_sound_dialog_title">選取通知響鈴音調</string>
-  <string name="notification_sound_summary">設定預設的通知響鈴音調</string>
-  <string name="notification_sound_title">通知響鈴音調</string>
-  <string name="permissions_label">權限</string>
-  <string name="phone_info_label">電話資訊</string>
-  <string name="phone_language">選取語言</string>
-  <string name="ping_test_label">執行 Ping 測試</string>
-  <string name="please_type_hex_key">WEP Hex 金鑰 (0-9、A-F)</string>
-  <string name="please_type_passphrase">無線網路密碼</string>
-  <string name="product_brand_label">產品品牌</string>
-  <string name="product_device_label">電話類型</string>
-  <string name="progress_scanning">正在掃描</string>
-  <string name="proxy_action_text">儲存</string>
-  <string name="proxy_clear_text">清除</string>
-  <string name="proxy_defaultView_text">還原預設值</string>
-  <string name="proxy_error">注意</string>
-  <string name="proxy_error_dismiss">確定</string>
-  <string name="proxy_error_empty_host_set_port">如果主機欄位保留空白，則連接埠欄位也必須保留空白。</string>
-  <string name="proxy_error_empty_port">您必須填入連接埠欄位。</string>
-  <string name="proxy_error_invalid_host">輸入的主機名稱無效。</string>
-  <string name="proxy_error_invalid_port">輸入的連接埠無效。</string>
-  <string name="proxy_hostname_label">主機名稱</string>
-  <string name="proxy_port_label">連接埠</string>
-  <string name="proxy_settings_label">Proxy 設定</string>
-  <string name="quick_launch_assign_application">指定應用程式</string>
-  <string name="quick_launch_clear_cancel_button">取消</string>
-  <string name="quick_launch_clear_dialog_message">將會清除 <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) 的捷徑。</string>
-  <string name="quick_launch_clear_dialog_title">清除</string>
-  <string name="quick_launch_clear_ok_button">確定</string>
-  <string name="quick_launch_display_mode_applications">應用程式</string>
-  <string name="quick_launch_display_mode_shortcuts">捷徑</string>
-  <string name="quick_launch_no_shortcut">無捷徑</string>
-  <string name="quick_launch_shortcut">搜尋 + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-  <string name="quick_launch_summary">設定鍵盤捷徑以便啟動應用程式</string>
-  <string name="quick_launch_title">快速啟動</string>
-  <string name="radioInfo_cid">CID</string>
-  <string name="radioInfo_data_connected">已連線</string>
-  <string name="radioInfo_data_connecting">正在連線</string>
-  <string name="radioInfo_data_disconnected">已中斷連線</string>
-  <string name="radioInfo_data_suspended">已擱置</string>
-  <string name="radioInfo_display_asu">asu</string>
-  <string name="radioInfo_display_bytes">位元組</string>
-  <string name="radioInfo_display_dbm">dBm</string>
-  <string name="radioInfo_display_packets">pkts</string>
-  <string name="radioInfo_lac">LAC</string>
-  <string name="radioInfo_menu_disableData">停用資料連線</string>
-  <string name="radioInfo_menu_disableDataOnBoot">開機時停用資料</string>
-  <string name="radioInfo_menu_enableData">啟用資料連線</string>
-  <string name="radioInfo_menu_enableDataOnBoot">開機時啟用資料</string>
-  <string name="radioInfo_menu_getPDP">取得 PDP 清單</string>
-  <string name="radioInfo_menu_viewADN">檢視 SIM 卡通訊錄</string>
-  <string name="radioInfo_menu_viewFDN">檢視固定撥號號碼</string>
-  <string name="radioInfo_menu_viewSDN">檢視服務撥號號碼</string>
-  <string name="radioInfo_phone_idle">閒置</string>
-  <string name="radioInfo_phone_offhook">通話中</string>
-  <string name="radioInfo_phone_ringing">響鈴中</string>
-  <string name="radioInfo_roaming_in">漫遊中</string>
-  <string name="radioInfo_roaming_not">尚未漫遊</string>
-  <string name="radioInfo_service_emergency">僅限緊急通話</string>
-  <string name="radioInfo_service_in">服務中</string>
-  <string name="radioInfo_service_off">關閉無線電話</string>
-  <string name="radioInfo_service_out">超出服務區域</string>
-  <string name="radioInfo_unknown">無法辨識</string>
-  <string name="radio_controls_summary">管理 Wi-Fi、藍牙、飛安模式及行動電話網路</string>
-  <string name="radio_controls_title">無線控制</string>
-  <string name="radio_info_band_mode_label">選取無線電波波段</string>
-  <string name="radio_info_call_redirect_label">撥號重新導向：</string>
-  <string name="radio_info_call_status_label">撥號狀態：</string>
-  <string name="radio_info_current_network_label">目前網路：</string>
-  <string name="radio_info_data_attempts_label">資料嘗試次數：</string>
-  <string name="radio_info_data_successes_label">資料成功次數：</string>
-  <string name="radio_info_gprs_service_label">GPRS 服務：</string>
-  <string name="radio_info_gsm_disconnects_label">與 GSM 中斷連線：</string>
-  <string name="radio_info_gsm_service_label">GSM 服務：</string>
-  <string name="radio_info_http_client_test">HTTP 用戶端測試：</string>
-  <string name="radio_info_imei_label">IMEI：</string>
-  <string name="radio_info_imsi_label">IMSI：</string>
-  <string name="radio_info_message_waiting_label">訊息等待中：</string>
-  <string name="radio_info_neighboring_location_label">鄰近 CID：</string>
-  <string name="radio_info_network_type_label">網路類型：</string>
-  <string name="radio_info_phone_number_label">電話號碼：</string>
-  <string name="radio_info_ping_hostname">Ping 主機名稱 (www.google.com)：</string>
-  <string name="radio_info_ping_ipaddr">Ping IpAddr：</string>
-  <string name="radio_info_ppp_received_label">接收的 PPP：</string>
-  <string name="radio_info_ppp_resets_label">開機後重設 PPP 號碼：</string>
-  <string name="radio_info_ppp_sent_label">傳送的 PPP：</string>
-  <string name="radio_info_radio_resets_label">無線電話重設：</string>
-  <string name="radio_info_roaming_label">漫遊中：</string>
-  <string name="radio_info_set_perferred_label">設定偏好的網路類型：</string>
-  <string name="radio_info_signal_location_label">位置：</string>
-  <string name="radio_info_signal_strength_label">訊號強度：</string>
-  <string name="radio_info_smsc_label">SMSC：</string>
-  <string name="radio_info_smsc_refresh_label">重新整理</string>
-  <string name="radio_info_smsc_update_label">更新</string>
-  <string name="radio_info_toggle_ciph_label">切換密碼</string>
-  <string name="read_only">\u0020(唯讀)</string>
-  <string name="recompute_size">正在重新計算大小\u2026</string>
-  <string name="ring_volume_summary">設定來電音量</string>
-  <string name="ring_volume_title">響鈴音量</string>
-  <string name="ringer_volume_instructions">使用音量鍵調整響鈴音量</string>
-  <string name="ringer_volume_ringer_mode_label">響鈴模式</string>
-  <string name="ringer_volume_ringtone_label">響鈴音調</string>
-  <string name="ringer_volume_screen_increasing_text">鈴聲漸強</string>
-  <string name="ringtone_summary">設定預設的來電響鈴音調</string>
-  <string name="ringtone_title">電話響鈴音調</string>
-  <string name="roaming">資料漫遊</string>
-  <string name="roaming_disable">漫遊時連線到資料服務</string>
-  <string name="roaming_enable">漫遊時連線到資料服務</string>
-  <string name="roaming_reenable_message">您已經關閉主網路的資料漫遊功能，所以無法進行資料連線。</string>
-  <string name="roaming_reenable_title">注意</string>
-  <string name="roaming_turn_it_on_button">請將其開啟</string>
-  <string name="roaming_warning">允許資料漫遊？您可能需要支付一筆漫遊費用！</string>
-  <string name="scan_wifi">掃描</string>
-  <string name="screen_off_timeout_label">充電時永不逾時</string>
-  <string name="screen_timeout">畫面逾時</string>
-  <string name="sd_card_settings_label">SD 卡</string>
-  <string name="sd_eject">卸載/退出 SD 卡</string>
-  <string name="sd_memory">SD 卡</string>
-  <string name="sd_unavailable">不可用</string>
-  <string name="sdcard_changes_instructions">變更會在重新連接 USB 傳輸線時生效</string>
-  <string name="sdcard_removal_alert_ok">確定</string>
-  <string name="sdcard_removal_alert_scolding">SD 卡使用時被取出！
-        若要避免毀損，請先使用 SD 卡的設定畫面來將其卸載，然後再取出。</string>
-  <string name="sdcard_removal_alert_title">不安全的 SD 卡取出動作！</string>
-  <string name="sdcard_setting">SD 卡</string>
-  <string name="sdcard_settings_available_bytes_label">可用的位元組：</string>
-  <string name="sdcard_settings_bad_removal_status">SD 卡使用時被取出！</string>
-  <string name="sdcard_settings_mass_storage_status">正在使用 SD 卡做為高容量儲存裝置</string>
-  <string name="sdcard_settings_not_present_status">無 SD 卡</string>
-  <string name="sdcard_settings_read_only_status">掛載的 SD 卡為唯讀</string>
-  <string name="sdcard_settings_scanning_status">正在掃描 SD 卡的媒體\u2026</string>
-  <string name="sdcard_settings_screen_mass_storage_text">啟用 USB 高容量儲存</string>
-  <string name="sdcard_settings_total_bytes_label">總位元組：</string>
-  <string name="sdcard_settings_unmounted_status">現在可以安全地移除 SD 卡</string>
-  <string name="sdcard_settings_used_bytes_label">使用的位元組：</string>
-  <string name="sdcard_unmount">卸載 SD 卡</string>
-  <string name="sdcard_unmountable_alert_ok">確定</string>
-  <string name="sdcard_unmountable_alert_title">無法讀取 SD 卡</string>
-  <string name="sdcard_unmountable_message">無法讀取 SD 卡。
-        檔案系統可能已經毀損或卡片可能受損。</string>
-  <string name="security">安全性</string>
-  <string name="security_and_data_label">安全性與資料</string>
-  <string name="security_passwords_title">密碼</string>
-  <string name="security_settings_desc">此應用程式可以存取之電話上的資料如下所示：</string>
-  <string name="security_settings_summary">我的位置、畫面解除鎖定、SIM 卡鎖定</string>
-  <string name="security_settings_title">安全性與位置</string>
-  <string name="select_your_language">選取您的語言</string>
-  <string name="set_lock_pattern_label">繪製解除鎖定模式：</string>
-  <string name="settings_chooser_pick_string">
-        設定的圖示應該移動到：
-    </string>
-  <string name="settings_label">設定</string>
-  <string name="settings_license_activity_loading">正在載入\u2026</string>
-  <string name="settings_license_activity_title">開啟來源授權</string>
-  <string name="settings_license_activity_unavailable">載入授權時發生問題。</string>
-  <string name="show_password">可見的密碼</string>
-  <string name="show_password_summary">輸入時顯示密碼</string>
-  <string name="signal">訊號強度</string>
-  <string name="silent_mode_summary">除了媒體以外的所有聲音都會變為靜音。</string>
-  <string name="silent_mode_title">靜音模式</string>
-  <string name="sim_bad_pin">PIN 碼不正確！</string>
-  <string name="sim_change_failed">無法變更 PIN 碼。\n可能是 PIN 碼不正確。</string>
-  <string name="sim_change_pin">變更 SIM 卡 PIN 碼</string>
-  <string name="sim_change_succeeded">變更 SIM 卡 PIN 碼成功</string>
-  <string name="sim_disable_sim_lock">停用 SIM 卡鎖定</string>
-  <string name="sim_enable_sim_lock">啟用 SIM 卡鎖定</string>
-  <string name="sim_enter_cancel">取消</string>
-  <string name="sim_enter_new">輸入新 PIN 碼</string>
-  <string name="sim_enter_ok">確定</string>
-  <string name="sim_enter_old">輸入舊 PIN 碼</string>
-  <string name="sim_enter_pin">輸入 SIM 卡 PIN 碼</string>
-  <string name="sim_lock_failed">無法變更 SIM 卡鎖定狀態。\n可能是 PIN 碼不正確。</string>
-  <string name="sim_lock_off">需要 PIN 碼才能使用電話</string>
-  <string name="sim_lock_on">需要 PIN 碼才能使用電話</string>
-  <string name="sim_lock_settings">SIM 卡鎖定設定</string>
-  <string name="sim_lock_settings_category">設定 SIM 卡鎖定</string>
-  <string name="sim_lock_settings_title">SIM 卡鎖定</string>
-  <string name="sim_pin_change">變更 PIN 碼</string>
-  <string name="sim_pin_toggle">鎖定 SIM 卡</string>
-  <string name="sim_pins_dont_match">PIN 碼不相符！</string>
-  <string name="sim_reenter_new">重新輸入新 PIN 碼</string>
-  <string name="skip_button_label">取消</string>
-  <string name="small_font">小</string>
-  <string name="software_version">軟體版本</string>
-  <string name="sort_order_alpha">依照字母順序排序</string>
-  <string name="sort_order_size">依照大小排序 (遞減)</string>
-  <string name="sound_and_display_settings">聲音與顯示</string>
-  <string name="sound_and_display_settings_summary">設定響鈴音調、通知、畫面亮度</string>
-  <string name="sound_effects_enable_summary_off">點選畫面選項時播放聲音</string>
-  <string name="sound_effects_enable_summary_on">點選畫面選項時播放聲音</string>
-  <string name="sound_effects_enable_title">聲音選取</string>
-  <string name="sound_settings">聲音設定</string>
-  <string name="status_authenticating">正在驗證\u2026</string>
-  <string name="status_awake_time">喚醒時間</string>
-  <string name="status_bt_address">藍牙位址</string>
-  <string name="status_connected">已連線</string>
-  <string name="status_connecting">正在連線\u2026</string>
-  <string name="status_data_state">資料存取</string>
-  <string name="status_disconnected">已中斷連線</string>
-  <string name="status_disconnecting">正在中斷連線\u2026</string>
-  <string name="status_failed">失敗</string>
-  <string name="status_imei">IMEI</string>
-  <string name="status_imei_sv">IMEI SV</string>
-  <string name="status_imsi">IMSI</string>
-  <string name="status_network_type">網路類型</string>
-  <string name="status_number">電話號碼</string>
-  <string name="status_obtaining_ip">正在取得位址\u2026</string>
-  <string name="status_operator">網路</string>
-  <string name="status_roaming">漫遊中</string>
-  <string name="status_scanning">正在掃描\u2026</string>
-  <string name="status_service_state">服務狀態</string>
-  <string name="status_signal_strength">訊號強度</string>
-  <string name="status_unavailable">不可用</string>
-  <string name="status_up_time">正常運作時間</string>
-  <string name="status_wifi_mac_address">Wi-Fi MAC 位址</string>
-  <string name="stay_on">充電時畫面永遠保持開啟</string>
-  <string name="storage_label">儲存空間</string>
-  <string name="storage_settings_summary">卸載 SD 卡，檢視可用的儲存空間</string>
-  <string name="storage_settings_title">SD 卡與電話儲存空間</string>
-  <string name="sum_carrier_select">選取網路電信業者</string>
-  <string name="summary_connection_failed">連線失敗，選取以便再試一次</string>
-  <string name="summary_not_in_range">超出範圍</string>
-  <string name="summary_remembered">已記住</string>
-  <string name="sync_automatically">自動同步</string>
-  <string name="sync_calendar">行事曆</string>
-  <string name="sync_contacts">連絡人</string>
-  <string name="sync_disabled">選取自動同步資料</string>
-  <string name="sync_do_nothing">目前不執行任何動作。</string>
-  <string name="sync_enabled">自動同步資料</string>
-  <string name="sync_gmail">Gmail</string>
-  <string name="sync_is_failing">同步目前發生問題。將會立即恢復正常。</string>
-  <string name="sync_menu_sync_cancel">取消同步</string>
-  <string name="sync_menu_sync_now">立即同步</string>
-  <string name="sync_really_delete">刪除項目。</string>
-  <string name="sync_settings">資料同步</string>
-  <string name="sync_settings_summary">選取要同步的應用程式</string>
-  <string name="sync_too_many_deletes">已經超過刪除上限</string>
-  <string name="sync_too_many_deletes_desc">%d 個 %s 刪除的項目，來自 %s 帳號。處理的方式為？</string>
-  <string name="sync_undo_deletes">復原刪除的項目。</string>
-  <string name="target_build_field_label">要求的建置類型</string>
-  <string name="team_title">團隊</string>
-  <string name="telephony_apn_label">APN：</string>
-  <string name="telephony_mcc_label">MCC：</string>
-  <string name="telephony_mmsc_label">MMSC：</string>
-  <string name="telephony_mmsport_label">多媒體簡訊連接埠：</string>
-  <string name="telephony_mmsproxy_label">多媒體簡訊 Proxy：</string>
-  <string name="telephony_mnc_label">MNC：</string>
-  <string name="telephony_name_label">名稱：</string>
-  <string name="telephony_password_label">密碼：</string>
-  <string name="telephony_port_label">連接埠：</string>
-  <string name="telephony_proxy_label">Proxy：</string>
-  <string name="telephony_server_label">伺服器：</string>
-  <string name="telephony_user_label">使用者：</string>
-  <string name="terms_title">條款和條件</string>
-  <string name="testing">正在測試</string>
-  <string name="testing_battery_info">電池資訊</string>
-  <string name="testing_phone_info">電話資訊</string>
-  <string name="testing_sim_toolkit">SIM Toolkit</string>
-  <string name="text_category">文字設定</string>
-  <string name="total_size_label">總計</string>
-  <string name="turn_off_qxdm">停用 QXDM SD 記錄</string>
-  <string name="turn_off_radio">關閉無線電話</string>
-  <string name="turn_on_qxdm">啟用 QXDM SD 記錄</string>
-  <string name="turn_on_radio">開啟無線電話</string>
-  <string name="underdeveloped_settings_label">開發中的設定</string>
-  <string name="uninstall_failed">無法解除安裝應用程式。</string>
-  <string name="uninstall_text">解除安裝</string>
-  <string name="unknown">無法辨識</string>
-  <string name="vibrate_summary">來電時震動電話</string>
-  <string name="vibrate_title">電話震動</string>
-  <string name="wallpaper_label">桌布</string>
-  <string name="wifi">Wi-Fi</string>
-  <string name="wifi_access_points">Wi-Fi 網路</string>
-  <string name="wifi_add_other_network">新增 Wi-Fi 網路</string>
-  <string name="wifi_context_menu_change_password">變更密碼</string>
-  <string name="wifi_context_menu_connect">連線到網路</string>
-  <string name="wifi_context_menu_forget">忽略網路</string>
-  <string name="wifi_dhcp_timeout_error">取得 IP 位址時發生問題。</string>
-  <string name="wifi_dns1">DNS 1</string>
-  <string name="wifi_dns2">DNS 2</string>
-  <string name="wifi_dns3">DNS 3</string>
-  <string name="wifi_dns_label">DNS：</string>
-  <string name="wifi_error">錯誤</string>
-  <string name="wifi_gateway">閘道</string>
-  <string name="wifi_gateway_label">閘道：</string>
-  <string name="wifi_generic_connection_error">連線到網路時發生問題。請再試一次。</string>
-  <string name="wifi_host_ip">主機 IP：</string>
-  <string name="wifi_ip_address">IP 位址</string>
-  <string name="wifi_ip_settings_invalid_ip">請輸入有效的 IP 位址。</string>
-  <string name="wifi_ip_settings_menu_cancel">取消</string>
-  <string name="wifi_ip_settings_menu_save">儲存</string>
-  <string name="wifi_ip_settings_titlebar">IP 設定</string>
-  <string name="wifi_link_speed">速度</string>
-  <string name="wifi_menu_advanced">進階</string>
-  <string name="wifi_netmask">網路遮罩</string>
-  <string name="wifi_netmask_label">網路遮罩：</string>
-  <string name="wifi_notify_open_networks">網路通知</string>
-  <string name="wifi_notify_open_networks_summary">當找到可用的開放網路時通知我</string>
-  <string name="wifi_password_incorrect_error">輸入的網路密碼不正確。請再試一次。</string>
-  <string name="wifi_password_unchanged">(尚未變更)</string>
-  <string name="wifi_prefer_wifi">偏好 Wi-Fi</string>
-  <string name="wifi_quick_toggle_summary">選取啟動 Wi-Fi</string>
-  <string name="wifi_quick_toggle_title">Wi-Fi</string>
-  <string name="wifi_save_config">儲存</string>
-  <string name="wifi_screen_activate_text">啟動</string>
-  <string name="wifi_screen_dhcp_text">自動</string>
-  <string name="wifi_screen_dns_text">209.81.59.2</string>
-  <string name="wifi_screen_gateway_text">192.168.20.1</string>
-  <string name="wifi_screen_ip_text">192.168.20.10</string>
-  <string name="wifi_screen_manual_text">手動</string>
-  <string name="wifi_screen_netmask_text">255.255.255.0</string>
-  <string name="wifi_screen_status_text">Wi-Fi 運作中</string>
-  <string name="wifi_screen_test_text">測試</string>
-  <string name="wifi_security">安全性</string>
-  <string name="wifi_security_open">開啟</string>
-  <string name="wifi_security_unknown">無法辨識</string>
-  <string name="wifi_security_verbose_open">開啟網路</string>
-  <string name="wifi_security_verbose_wep">已經受到 WEP 保護</string>
-  <string name="wifi_security_verbose_wpa">已經受到 WPA 保護</string>
-  <string name="wifi_security_verbose_wpa2">已經受到 WPA2 保護</string>
-  <string name="wifi_security_wep">WEP</string>
-  <string name="wifi_security_wpa">WPA</string>
-  <string name="wifi_security_wpa2">WPA2</string>
-  <string name="wifi_settings">Wi-Fi 設定</string>
-  <string name="wifi_settings_category">Wi-Fi 設定</string>
-  <string name="wifi_settings_summary">設定與管理無線存取點</string>
-  <string name="wifi_show_password">顯示密碼。</string>
-  <string name="wifi_signal_0">弱</string>
-  <string name="wifi_signal_1">尚可</string>
-  <string name="wifi_signal_2">良好</string>
-  <string name="wifi_signal_3">強</string>
-  <string name="wifi_starting">正在啟動\u2026</string>
-  <string name="wifi_status">狀態</string>
-  <string name="wifi_stopping">正在關閉\u2026</string>
-  <string name="wifi_type_ssid">輸入網路 SSID：</string>
-  <string name="wifi_use_static_ip">使用靜態 IP</string>
-  <string name="wifi_wlan_id">WLAN ID：</string>
-</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index c571e28..2a51d27 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -20,76 +20,106 @@
 <resources>
     <!-- Choices for timezone picker first level.
          These values will be used as search terms for TimeZone displayName
-         strings. -->
+         strings. --> <skip />
+    <!-- The time zone picker screen has two levels.  The first level allows the user to choose a region. -->
     <string-array name="timezone_filters">
+	<!-- The next level of the time zoner picker should show time zones from the Americas. -->
         <item>America</item>
+	<!-- The next level of the time zoner picker should show time zones from Europe. -->
         <item>Europe</item>
+	<!-- The next level of the time zoner picker should show time zones from Africa. -->
         <item>Africa</item>
+	<!-- The next level of the time zoner picker should show time zones from Asia. -->
         <item>Asia</item>
+	<!-- The next level of the time zoner picker should show time zones from Australia. -->
         <item>Australia</item>
+	<!-- The next level of the time zoner picker should show time zones from Pacific. -->
         <item>Pacific</item>
+	<!-- The next level of the time zoner picker should show time zones from ALL regions. -->
         <item>All</item>
     </string-array>
 
-    <!-- List of formats for date display to display
-         in Date & Time Settings screen -->
+    <!-- There is a setting to control the format of dates displayed throughout the system.  This is in the Date & Time Settings screen.  Unfortunately, these cannot be changed at all. --> <skip />
+    <!-- Do not translate.  This is fed directly to the formatter. -->
     <string-array name="date_format_values">
+        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>MM-dd-yyyy</item>
+        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>dd-MM-yyyy</item>
+        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>MMM dd, yyyy</item>
+        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>dd-MMM-yyyy</item>
+        <!-- Do not translate.  This is fed directly to the formatter. -->
         <item>yyyy-MM-dd</item>
     </string-array>
 
-    <!-- Display settings -->
+    <!-- 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>
         <item>30 seconds</item>
         <item>1 minute</item>
         <item>2 minutes</item>
         <item>10 minutes</item>
+        <!-- Choosing this means the screen will only turn off after the user manually does so.  There will be no inactivity check. -->
         <item>Never timeout</item>
     </string-array>
 
+    <!-- Do not translate. -->
     <string-array name="screen_timeout_values">
+        <!-- Do not translate. -->
         <item>15000</item>
+        <!-- Do not translate. -->
         <item>30000</item>
+        <!-- Do not translate. -->
         <item>60000</item>
+        <!-- Do not translate. -->
         <item>120000</item>
+        <!-- Do not translate. -->
         <item>600000</item>
+        <!-- Do not translate. -->
         <item>-1</item>
     </string-array>
 
     <!-- Wi-Fi settings -->
 
-    <!-- Match this with code. -->
+    <!-- Match this with code. --> <skip />
+    <!-- Wi-Fi settings.  The type of security a Wi-Fi network has.  The user can choose this when he adds a manual network, or configures an existing network. -->
     <string-array name="wifi_security_entries">
+        <!-- Let the phone figure out the security type auutomatically. -->
         <item>Auto</item>
+        <!-- The Wi-Fi network does not have any security. -->
         <item>None</item>
+        <!-- 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>
     </string-array>
 
-    <!-- Match this with code. -->
+    <!-- Match this with code. --> <skip />
+    <!-- Wi-Fi settings.  The type of security a Wi-Fi network has.  The user can choose this when he adds a manual network, or configures an existing network. -->
     <string-array name="wifi_security_without_auto_entries">
+        <!-- The Wi-Fi network does not have any security. -->
         <item>None</item>
+        <!-- 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>
     </string-array>
 
-    <!-- Match this with code. -->
+    <!-- Match this with code. --> <skip />
+    <!-- Wi-Fi settings.  Presented as a list dialog to the user.  He chooses the type of WEP key he entered. -->
     <string-array name="wifi_wep_type">
+        <!-- This means the phone should figure out the type automatically the best it can. -->
         <item>Auto</item>
+        <!-- Do not translate. -->
         <item>WEP ASCII</item>
+        <!-- WEP key that is in hexadecimal. -->
         <item>WEP hexadecimal</item>
     </string-array>
 
-    <string-array name="friction_values">
-        <item>normal</item>
-        <item>no friction</item>
-        <item>no inertia</item>
-    </string-array>
-
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ed3eba3..061d114 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -16,473 +16,764 @@
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 
-    <!-- Device Info -->
+    <!-- Device Info --> <skip />
+    <!-- Device Info screen. Used for a status item's value when the proper value is not known -->
     <string name="device_info_default">Unknown</string>
+    <!-- Device Info screen. Status item label. How long the phone has been running since it was turned on -->
     <string name="device_info_uptime">Uptime</string>
+    <!-- Device Info screen. Status item label. How long the main processor in the phone has been running -->
     <string name="device_info_awaketime">Awake time</string>
+    <!-- Device Info screen. Status item label. How long the main processor in the phone has not been running -->
     <string name="device_info_asleeptime">Asleep time</string>
 
+    <!-- Do not translate. Device Info screen. Status item label. The description of the software running on the phone. -->
     <string name="build_description_label">Build description</string>
+    <!-- Do not translate. Device Info screen. Status item label. A short identifier of the software running on the phone. -->
     <string name="build_id_label">Build ID</string>
+    <!-- Do not translate. Device Info screen. Status item label. The date that the software currently running on the phone was built. -->
     <string name="build_date_label">Build date</string>
+    <!-- Do not translate. Device Info screen. Status item label. The type of configuration used while building the software -->
     <string name="build_type_label">Build type</string>
+    <!-- Do not translate. Device Info screen. Status item label. The product type (probably a code name) -->
     <string name="product_device_label">Phone type</string>
+    <!-- Do not translate. Device Info screen. Status item label. The product brand. -->
     <string name="product_brand_label">Product brand</string>
+    <!-- Do not translate. Device Info screen. Status item label. The user that compiled/built the software -->
     <string name="build_user_label">Build user</string>
+    <!-- Do not translate. Device Info screen. Status item label. The computer that compiled/built the software -->
     <string name="build_host_label">Build host</string>
+    <!-- Do not translate. Device Info screen. Status item label. The version of the Linux kernel -->
     <string name="kernel_version_label">Linux kernel version</string>
+    <!-- Do not translate. Device Info screen. Status item label. The version of the radio on the phone -->
     <string name="gsm_version_baseband_label">Baseband version</string>
+    <!-- Do not translate. Device Info screen. Status item label. The version of the radio interface layer implementation -->
     <string name="gsm_version_ril_impl_label">RIL Impl version</string>
+    <!-- Do not translate. Device Info screen. Status item label. The default keyboard's name -->
     <string name="default_keyboard_device_label">Default keyboard device</string>
+    <!-- Do not translate. Device Info screen. Status item label. The Android ID (a unique ID) -->
     <string name="android_id_label">Android ID</string>
+    <!-- Do not translate. Device Info screen. Status item label. The last time the device checked into the servers -->
     <string name="checkin_last_time_label">Last successful checkin</string>
+    <!-- Do not translate. Device Info screen. Status item label. The number of failures since the last successful checkin -->
     <string name="checkin_failures_label">Failures since last success</string>
+    <!-- Do not translate. Device Info screen. Status item label. Whether there is an upgrade pending -->
     <string name="checkin_upgrade_label">Pending upgrade</string>
+    <!-- Do not translate. Device Info screen. Status item label. The download status of an upgrade -->
     <string name="checkin_download_label">Download status</string>
+    <!-- Do not translate. Device Info screen. Status item label. Displayed for checkin_last_time_label if it has never checked in -->
     <string name="checkin_time_never">(never)</string>
+    <!-- Do not translate. Device Info screen. Status item label. The current status of the checkin -->
     <string name="checkin_status_label">Check-in status</string>
+    <!-- Do not translate. Device Info screen. Status item label. The request type of build to get upgrades from -->
     <string name="target_build_field_label">Requested build type</string>
+    <!-- Do not translate. Device Info screen. Checks to see if an upgade is available -->
     <string name="checkin_button_label">Check for upgrade</string>
+    <!-- Do not translate. Device Info screen. Message printed when a checkin has started -->
     <string name="checkin_started_message">Checkin started\u2026</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it is suspended -->
     <string name="checkin_download_suspended">Suspended</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it is pending -->
     <string name="checkin_download_pending">Pending</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it is downloading -->
     <string name="checkin_download_ongoing">Downloading</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it is unsuccessful -->
     <string name="checkin_download_failed">Unsuccessful</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it has completed -->
     <string name="checkin_download_succeeded">Completed</string>
+    <!-- Do not translate. Device Info screen. Status for checkin request when it is unknown -->
     <string name="checkin_download_unknown">Unknown status</string>
 
     <!-- Phone info -->
+    <!-- Phone Info screen. Button label to turn on the radio . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_on_radio">Turn on radio</string>
+    <!-- Phone Info screen. Button label to turn off the radio . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_off_radio">Turn off radio</string>
+    <!-- Phone Info screen. Button label to turn on the log for QXDM SD . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_on_qxdm">Enable QXDM SD log</string>
+    <!-- Phone Info screen. Button label to turn off the log for QXDM SD . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_off_qxdm">Disable QXDM SD log</string>
 
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_viewADN">View SIM address book</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_viewFDN">View Fixed Dialing Numbers</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_viewSDN">View Service Dialing Numbers</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_getPDP">Get PDP list</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_enableData">Enable data connection</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_disableData">Disable data connection</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_enableDataOnBoot">Enable data on boot</string>
+    <!-- Phone Info screen. Menu item label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_menu_disableDataOnBoot">Disable data on boot</string>
 
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_service_in">In service</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_service_out">Out of service</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_service_emergency">Emergency calls only</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_service_off">Radio off</string>
 
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_roaming_in">Roaming</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_roaming_not">Not roaming</string>
 
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_phone_idle">Idle</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_phone_ringing">Ringing</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_phone_offhook">Call in progress</string>
 
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_data_disconnected">Disconnected</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_data_connecting">Connecting</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_data_connected">Connected</string>
+    <!-- Phone Info screen. Status label.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_data_suspended">Suspended</string>
 
+    <!-- Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_unknown">unknown</string>
+    <!-- Phone Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_display_packets">pkts</string>
+    <!-- Phone Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_display_bytes">bytes</string>
+    <!-- Phone Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_display_dbm">dBm</string>
+    <!-- Phone Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_display_asu">asu</string>
+    <!-- Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_lac">LAC</string>
+    <!-- Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radioInfo_cid">CID</string>
 
+    <!-- Used for diagnostic info screens, precise translation isn't needed. Unmounts the SD card from the phone, meaning it will become available for an attached computer  -->
     <string name="sdcard_unmount">Unmount SD card</string>
-    <string name="disconnect_ums">Disconnect USB mass storage</string>
 
-    <!-- labels for the font size spinner -->
+    <!-- choice for the font size spinner -->
     <string name="small_font">Small</string>
+    <!-- choice for the font size spinner -->
     <string name="medium_font">Medium</string>
+    <!-- choice for the font size spinner -->
     <string name="large_font">Large</string>
 
-    <!-- label for font size preview -->
+    <!-- Do not translate. label for font size preview.  Does not need to be translated. -->
     <string name="font_size_preview_text">Servez à ce monsieur une bière et des kiwis.</string>
+    <!-- Button. Chosen when they want to save the chosen text size. -->
     <string name="font_size_save">OK</string>
 
-    <!-- SD card setting -->
+    <!-- Title for a notification shown. -->
     <string name="sdcard_setting">SD card</string>
 
-    <!-- power management settings -->
+    <!-- Label for when the screen will timeout. Used for diagnostic info screens, precise translation isn't needed -->
     <string name="screen_off_timeout_label">Never timeout while charging</string>
+    <!-- Checkbox for whether the screen will stay on when charging.This is in a hidden setting panel, so it's not too important  -->
     <string name="stay_on">Screen is always on while charging</string>
 
+    <!-- Used for diagnostic info screens, precise translation isn't needed -->
     <string name="app_launcher_newView_text">New AppLauncher</string>
+    <!-- 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_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>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_label">Battery health:</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_technology_label">Battery technology:</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_voltage_label">Battery voltage:</string>
+    <!-- Battery Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_voltage_units">mV</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_temperature_label">Battery temperature:</string>
+    <!-- Battery Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_temperature_units">\u00B0 C</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_uptime">Time since boot:</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_awake_battery">Awake time on battery:</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_awake_plugged">Awake time when charging:</string>
+    <!-- Battery Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_screen_on">Screen ON time:</string>
     
 
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_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_status_charging">Charging</string>
+    <!-- Battery Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_charging_ac">(AC)</string>
+    <!-- Battery Info screen. Units shown after a value.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_charging_usb">(USB)</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_discharging">Discharging</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_not_charging">Not charging</string>
+    <!-- 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. 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 -->
     <string name="battery_info_health_good">Good</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_overheat">Overheat</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_dead">Dead</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_over_voltage">Over voltage</string>
+    <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_health_unspecified_failure">Unknown error</string>
 
-    <!--Used as option name on second screen after selecting Bluetooth settings -->
+    <!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings -->
     <string name="bluetooth">Bluetooth</string>
-    <!-- Summary text while Bluetooth is starting or stopping: -->
-    <string name="bluetooth_starting">Bluetooth starting\u2026</string>
+    <!-- Summary text while Bluetooth is stopping -->
     <string name="bluetooth_stopping">Bluetooth stopping\u2026</string>
-    <string name="bluetooth_disabled">Select to turn on Bluetooth</string>
-    <string name="bluetooth_enabled">Select to turn on Bluetooth</string>
+    <!-- Summary used for the Bluetooth on/off checkbox when bluetooth is currently disabled. -->
+    <string name="bluetooth_disabled">Turn on Bluetooth</string>
+    <!-- Summary used for the Bluetooth on/off checkbox when bluetooth is currently enabled. -->
+    <string name="bluetooth_enabled"></string>
+    <!-- Summary text while Bluetooth is turning on -->
     <string name="bluetooth_enabling">Turning on Bluetooth\u2026</string>
-    <!-- Bluetooth settings screen, check box label -->
+    <!-- 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 -->
-    <string name="bluetooth_is_discoverable">Discoverable for %1$s seconds\u2026</string>
-    <!-- Bluetooth settings screen, Discoverable summary text -->
-    <string name="bluetooth_not_discoverable">Select to make device discoverable</string>
-    <!-- Bluetooth settings screen, heading -->
+    <!-- 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>
+    <!-- Bluetooth settings screen, heading above the list of nearby bluetooth devices -->
     <string name="bluetooth_devices">Bluetooth devices</string>
-    <!-- Bluetooth settings screen, heading -->
+    <!-- Bluetooth settings screen, title for the current bluetooth name setting -->
     <string name="bluetooth_device_name">Device name</string>
-    <!-- Bluetooth settings screen, summary text -->
+    <!-- Bluetooth settings screen, summary text when there isn't a name set (for the name setting) -->
     <string name="bluetooth_name_not_set">No name set, using account name</string>
-    <!-- Bluetooth settings screen, menu item -->
+    <!-- Bluetooth settings screen, menu item to scan for nearby bluetooth devices -->
     <string name="bluetooth_scan_for_devices">Scan for devices</string>
-    <!-- Bluetooth settings screen, menu item -->
+    <!-- Bluetooth settings screen, menu item to clear the nearby bluetooth device list -->
     <string name="bluetooth_clear_list">Clear device list</string>
-    <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> will be disconnected</string>
+    <!-- Bluetooth settings.  Message for disconnecting from a bluetooth device -->
+    <string name="bluetooth_disconnect_blank"><xliff:g id="device_name">%1$s</xliff:g> will be disconnected.</string>
+    <!-- Bluetooth settings.  Message when cnonected to a device -->
     <string name="bluetooth_connected">Connected</string>
+    <!-- Bluetooth settings.  Message when a device is disconnected -->
+    <string name="bluetooth_disconnected">Disconnected</string>
+    <!-- Bluetooth settings.  Message when disconnecting from a device -->
+    <string name="bluetooth_disconnecting">Disconnecting\u2026</string>
+    <!-- Bluetooth settings.  Message when connecting to a device -->
     <string name="bluetooth_connecting">Connecting\u2026</string>
+    <!-- Bluetooth settings.  Message when the device state is unknown -->
+    <string name="bluetooth_unknown"></string>
     <!--Bluetooth settings screen, summary text under individual Bluetooth devices when not paired yet -->
     <string name="bluetooth_not_connected">Pair with this device</string>
+    <!--Bluetooth settings screen, summary text when unable to turn on Bluetooth -->
     <string name="bluetooth_failed_to_enable">Unable to turn on Bluetooth</string>
     <!--Bluetooth settings screen, summary text under individual Bluetooth devices when pairing -->
     <string name="bluetooth_pairing">Pairing\u2026</string>
-    <string name="failed_to_pair">Unable to pair with <xliff:g id="device_name">%1$s</xliff:g></string>
-    <string name="failed_to_connect">Unable to connect to <xliff:g id="device_name">%1$s</xliff:g></string>
+    <!--Bluetooth settings screen, summary text under individual Bluetooth devices when failure to pair with one -->
+    <string name="failed_to_pair">Unable to pair with <xliff:g id="device_name">%1$s</xliff:g>.</string>
+    <!--Bluetooth settings screen, summary text under individual Bluetooth devices when failure to connect with one-->
+    <string name="failed_to_connect">Unable to connect to <xliff:g id="device_name">%1$s</xliff:g>.</string>
+    <!--Bluetooth settings screen, summary text under individual Bluetooth devices when paired with one -->
     <string name="bluetooth_paired">Paired</string>
+    <!--Bluetooth settings screen, summary text under individual Bluetooth devices when paired with one and the device is not nearby -->
     <string name="bluetooth_paired_not_nearby">Paired</string>
+    <!--Bluetooth settings screen, summary text under individual Bluetooth devices that are hands free or a headset -->
     <string name="bluetooth_device">handsfree/headset</string>
     <!-- Context menu items for bluetooth device entries -->
     <string name="bluetooth_disconnect">Disconnect</string>
+    <!-- Context menu items for bluetooth device entries -->
     <string name="bluetooth_connect">Connect</string>
+    <!-- Context menu items for bluetooth device entries -->
     <string name="bluetooth_unpair">Unpair</string>
+    <!-- Context menu items for bluetooth device entries -->
     <string name="bluetooth_pair">Pair</string>
     <!--Bluetooth settings screen, text that appears in heading bar when scanning for devices -->
     <string name="progress_scanning">Scanning</string>
+    <!-- Notification ticker text (shown in the status bar) when a Bluetooth device wants to pair with us -->
     <string name="bluetooth_notif_ticker">Bluetooth pairing request</string>
-    <string name="bluetooth_notif_title">Bluetooth pairing request</string>
+    <!-- Notification title when a Bluetooth device wants to pair with us -->
+    <string name="bluetooth_notif_title">Pairing request</string>
+    <!-- Notification message when a Bluetooth device wants to pair with us -->
     <string name="bluetooth_notif_message">Select to pair with\u0020</string>
 
 
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
     <string name="bluetooth_scan_text">Empty button\u2026</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
     <string name="bluetooth_settings_text">Empty button\u2026</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
     <string name="bluetooth_enable_text">Empty button\u2026</string>
 
-    <string name="bluetooth_device_info_connectButton_text"></string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
+    <string name="bluetooth_device_info_connectButton_text">Turn on Bluetooth</string>
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
     <string name="bluetooth_device_info_deviceInfo_text"></string>
 
+    <!-- Do not translate. Used for diagnostic screens, precise translation is not necessary -->
     <string name="bluetooth_sdp_query_services_text"></string>
     <!-- Date & time settings screen title -->
     <string name="date_and_time">Date &amp; time settings</string>
+    <!-- Do not translate. Sample date format -->
     <string name="date_time_dateDisplay_text">Nov 3 1997</string>
+    <!-- Do not translate. Sample time format -->
     <string name="date_time_timeDisplay_text">11:45 AM</string>
+    <!-- Date/time settings.  Summary of the checkbox for choosing between 12 hour time or 24 hour time.  Sample of 12-hour time -->
+    <string name="date_time_12_hour_sample">1:00 pm</string>
+    <!-- Date/time settings.  Summary of the checkbox for choosing between 12 hour time or 24 hour time.  Sample of 24-hour time -->
+    <string name="date_time_24_hour_sample">13:00</string>
+    <!-- Do not translate. Title to change time -->
     <string name="date_time_changeTime_text">Change time</string>
-    <string name="date_time_changeDate_text">Change date</string>
+    <!-- Do not translate. Title to change date -->
+    <string name="date_time_changeDate_text">Date</string>
+    <!-- Do not translate. Title to change time zone -->
     <string name="date_time_setzone_text">Change time zone</string>
+    <!-- Do not translate. Label for current time zone -->
     <string name="date_time_timezone_label">Time zone:</string>
-    <string name="choose_timezone_region">Select region</string>
-        <!-- Date & time settings screen, setting option name -->
+    <!-- The title of the activity to pick a time zone. -->
     <string name="choose_timezone">Select time zone</string>
-    <string name="default_date_format">MM/dd/yyyy</string>
+    <!-- Do not translate. Used as the value for a setting. -->
+    <string name="default_date_format"><xliff:g id="default_date_format">MM/dd/yyyy</xliff:g></string>
 
+    <!-- Label of preview text when tweaking font size -->
     <string name="display_preview_label">Preview:</string>
+    <!-- Label for chosen font size -->
     <string name="display_font_size_label">Font size:</string>
 
-    <string name="intent_sender_data_label">Data:</string>
-    <string name="intent_sender_sendbroadcast_text">Send broadcast</string>
-    <string name="intent_sender_action_label">Action:</string>
-    <string name="intent_sender_startactivity_text">Start activity</string>
-    <string name="intent_sender_resource_label">Resource: </string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
+    <string name="intent_sender_data_label"><xliff:g id="data">Data:</xliff:g></string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
+    <string name="intent_sender_sendbroadcast_text">Send <xliff:g id="broadcast">broadcast</xliff:g></string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
+    <string name="intent_sender_action_label"><xliff:g id="action">Action</xliff:g>:</string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
+    <string name="intent_sender_startactivity_text">Start <xliff:g id="activity">activity</xliff:g></string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
+    <string name="intent_sender_resource_label"><xliff:g id="resource">Resource</xliff:g>: </string>
+    <!-- Used for diagnostic screens, precise translation is not necessary -->
     <string name="intent_sender_account_label">Account: </string>
 
+    <!-- Setting title to choose a lock pattern -->
     <string name="keyguard_pw_mod_text">Select lock pattern</string>
+    <!-- Setting title to change the PIN -->
     <string name="keyguard_pin_mod_text">Change PIN</string>
+    <!-- Setting title for keyguard settings -->
     <string name="keyguard_label">Keyguard</string>
+    <!-- Setting title for SIM PIN -->
     <string name="keyguard_sim_pin_label">SIM PIN</string>
 
+    <!-- Error message when the password entered is incorrect -->
     <string name="keyguard_password_old_password_error_text">The old password you typed is not correct. Please try again.</string>
+    <!-- Button text after they've entered passwords -->
     <string name="keyguard_password_button_text">OK</string>
+    <!-- Label used for field to confirm the entered password -->
     <string name="keyguard_password_confirm_new_label">Confirm new password:</string>
+    <!-- When changing password, the label for the new password -->
     <string name="keyguard_password_new_label">New password:</string>
+    <!-- When changing password, the label for the Old password -->
     <string name="keyguard_password_old_label">Old password:</string>
+    <!-- When changing password, the error message if the new password and the confirmatino don't match -->
     <string name="keyguard_password_mismatch_error_text">The two passwords don\'t match. Please type them again.</string>
 
 
-    <!-- HTTP proxy settings -->
+    <!-- HTTP proxy settings. Button to clear the proxy box. -->
     <string name="proxy_clear_text">Clear</string>
+    <!-- HTTP proxy settings. The port number label. -->
     <string name="proxy_port_label">Port</string>
+    <!-- HTTP proxy settings. The button to restore the defaults. -->
     <string name="proxy_defaultView_text">Restore defaults</string>
+    <!-- HTTP proxy settings. The button to save. -->
     <string name="proxy_action_text">Save</string>
+    <!-- HTTP proxy settings. The text field for the hostname -->
     <string name="proxy_hostname_label">Hostname</string>
+    <!-- HTTP proxy settings. Title if there is an error-->
     <string name="proxy_error">Attention</string>
+    <!-- HTTP proxy settings. Button to get rid of error box-->
     <string name="proxy_error_dismiss">OK</string>
+    <!-- HTTP proxy settings. The error if the hostname is not valid -->
     <string name="proxy_error_invalid_host">The hostname you typed is not valid.</string>
+    <!-- HTTP proxy settings. Error msg -->
     <string name="proxy_error_empty_port">You must complete the port field.</string>
+    <!-- HTTP proxy settings. Error msg -->
     <string name="proxy_error_empty_host_set_port">The port field must be empty if the host field is empty.</string>
+    <!-- HTTP proxy settings. Error msg -->
     <string name="proxy_error_invalid_port">The port you typed is not valid.</string>
 
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_signal_location_label">Location:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_neighboring_location_label">Neighboring CID:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_data_attempts_label">Data attempts:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_imsi_label">IMSI:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_gprs_service_label">GPRS service:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_roaming_label">Roaming:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_imei_label">IMEI:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_call_redirect_label">Call redirect:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_ppp_resets_label">Number of PPP reset since boot:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_gsm_disconnects_label">GSM disconnects:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_current_network_label">Current network:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_data_successes_label">Data successes:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_ppp_received_label">PPP received:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_gsm_service_label">GSM service:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_signal_strength_label">Signal strength:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_call_status_label">Call status:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_ppp_sent_label">PPP sent:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_radio_resets_label">Radio resets:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_message_waiting_label">Message waiting:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_phone_number_label">Phone number:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_band_mode_label">Select radio band</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_network_type_label">Network type:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_set_perferred_label">Set preferred network type:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_ping_ipaddr">Ping IpAddr:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_ping_hostname">Ping Hostname(www.google.com):</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_http_client_test">HTTP Client test:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_toggle_ciph_label">Toggle ciphering</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="ping_test_label">Run ping test</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_smsc_label">SMSC:</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_smsc_update_label">Update</string>
+    <!-- Radio Info screen. Label for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="radio_info_smsc_refresh_label">Refresh</string>
 
     <!-- Band Mode Selection -->
+    <!-- Band mode screen.  Title of activity. -->
     <string name="band_mode_title">Set GSM/UMTS band</string>
+    <!-- Band mode screen.  Loading message. -->
     <string name="band_mode_loading">Loading band list\u2026</string>
+    <!-- Band mode screen. Button caption to set the bandmode. -->
     <string name="band_mode_set">Set</string>
+    <!-- Band mode screen. Status message when unsuccessful. -->
     <string name="band_mode_failed">Unsuccessful</string>
+    <!-- Band mode screen. Statusm essage when successful. -->
     <string name="band_mode_succeeded">Successful</string>
 
-
+    <!-- The label when choosing a ringer mode -->
     <string name="ringer_volume_ringer_mode_label">Ringer mode</string>
+    <!-- The label for the 'increasing ring' checkbox setting -->
     <string name="ringer_volume_screen_increasing_text">Increasing ring</string>
+    <!-- The label/title for the ringtone setting -->
     <string name="ringer_volume_ringtone_label">Ringtone</string>
+    <!-- Instructions telling user hwo to adjust volume using the hardware volume keys -->
     <string name="ringer_volume_instructions">Use volume buttons to adjust ringer volume</string>
 
+    <!-- Instructions after the user changes the mass storage settings -->
     <string name="sdcard_changes_instructions">Changes take effect when USB cable is reconnected</string>
+    <!-- Enable USB mass storage mode checkbox title -->
     <string name="sdcard_settings_screen_mass_storage_text">Enable USB mass storage</string>
+    <!-- The label for total bytes on SD card -->
     <string name="sdcard_settings_total_bytes_label">Total bytes:</string>
+    <!-- Message when there is no SD card present -->
     <string name="sdcard_settings_not_present_status">No SD card</string>
+    <!-- Th label for the available (free) sapce on the SD card -->
     <string name="sdcard_settings_available_bytes_label">Available bytes:</string>
+    <!-- Message when the SD card is being used by the computer as mass storage -->
     <string name="sdcard_settings_mass_storage_status">SD card is being used as a mass storage device</string>
+    <!-- Message when it is safe to remove the SD card -->
     <string name="sdcard_settings_unmounted_status">It is now safe to remove the SD card</string>
+    <!-- Error message when the SD card was removed without properly unmounting -->
     <string name="sdcard_settings_bad_removal_status">SD card was removed while still in use!</string>
+    <!-- Label for used bytes on the SD card -->
     <string name="sdcard_settings_used_bytes_label">Used bytes:</string>
+    <!-- Message when it is scanning the SD card for new files -->
     <string name="sdcard_settings_scanning_status">Scanning SD card for media\u2026</string>
+    <!-- Message when the SD card is mounted as read only -->
     <string name="sdcard_settings_read_only_status">SD card mounted read-only</string>
 
+    <!-- Title for dialog when SD card is removed unsafely -->
     <string name="sdcard_removal_alert_title">Unsafe SD card removal!</string>
-    <string name="sdcard_removal_alert_scolding">The SD card was removed while still in use!
-        To avoid card corruption, use the SD card Settings screen to unmount the card before removal.</string>
-    <string name="sdcard_removal_alert_ok">OK</string>
 
+    <!-- Error dialog's title when SD card is unreadable -->
     <string name="sdcard_unmountable_alert_title">SD card unreadable</string>
-    <string name="sdcard_unmountable_message">The SD card could not be read.
-        The file system may be corrupted or the card may be defective.</string>
-    <string name="sdcard_unmountable_alert_ok">OK</string>
 
+    <!-- Used by the APN editor. The label for user name to use. -->
     <string name="telephony_user_label">User:</string>
+    <!-- Used by the APN editor. The label for server to use. -->
     <string name="telephony_server_label">Server:</string>
+    <!-- Used by the APN editor. The label for the name of the APN. -->
     <string name="telephony_name_label">Name:</string>
+    <!-- Used by the APN editor. The label for the MMSC. -->
     <string name="telephony_mmsc_label">MMSC:</string>
+    <!-- Used by the APN editor. The label for the APN. -->
     <string name="telephony_apn_label">APN:</string>
+    <!-- Used by the APN editor. The label for the MCC. -->
     <string name="telephony_mcc_label">MCC:</string>
+    <!-- Used by the APN editor. The label for the port. -->
     <string name="telephony_port_label">Port:</string>
+    <!-- Used by the APN editor. The label for the password. -->
     <string name="telephony_password_label">Password:</string>
+    <!-- Used by the APN editor. The label for the proxy. -->
     <string name="telephony_proxy_label">Proxy:</string>
+    <!-- Used by the APN editor. The label for the MNC. -->
     <string name="telephony_mnc_label">MNC:</string>
+    <!-- Used by the APN editor. The label for the MMS proxy. -->
     <string name="telephony_mmsproxy_label">MMS proxy:</string>
+    <!-- Used by the APN editor. The label for the MMS port. -->
     <string name="telephony_mmsport_label">MMS port:</string>
 
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi sample netmask -->
     <string name="wifi_screen_netmask_text">255.255.255.0</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi busy text -->
     <string name="wifi_screen_status_text">Wi-Fi is working</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi sample DNS -->
     <string name="wifi_screen_dns_text">209.81.59.2</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi sample gateway -->
     <string name="wifi_screen_gateway_text">192.168.20.1</string>
+    <!-- Do not translate. (This is for unused legacy code)  Translatoin not needed -->
     <string name="wifi_screen_test_text">Test</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for gateway -->
     <string name="wifi_gateway_label">gateway:</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for netmask -->
     <string name="wifi_netmask_label">netmask:</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label DHCP -->
     <string name="wifi_screen_dhcp_text">automatic</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for host IP -->
     <string name="wifi_host_ip">host ip:</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for choosing a wifi access point -->
     <string name="wifi_screen_activate_text">Activate</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for ID -->
     <string name="wifi_wlan_id">wlan id:</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi sample IP -->
     <string name="wifi_screen_ip_text">192.168.20.10</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi code for manually entered info -->
     <string name="wifi_screen_manual_text">manual</string>
+    <!-- Do not translate. (This is for unused legacy code)  Wi-Fi label for DNS -->
     <string name="wifi_dns_label">dns:</string>
 
 
-    <!-- SetupWizard strings used by DateTimeSettingsSetupWizard -->
+    <!-- SetupWizard strings used by DateTimeSettingsSetupWizard.  The button label for going to the next screen. -->
     <string name="next_label">Next</string>
 
     <!-- LocalePicker -->
+    <!-- Title for the locale picker activity -->
     <string name="language_picker_title">Locale</string>
+    <!-- Locale picker screen. Label for choosing the locale -->
     <string name="select_your_language">Select your language</string>
 
     <!--  TODO: 881807 -->
-    <!--  Settings chooser -->
+    <!-- Do not translate. Settings chooser, does not need to be translated -->
     <string name="settings_chooser_pick_string">
         Settings icon should forward to:
     </string>
 
-    <string name="wallpaper_label">Wallpaper</string>
+    <!-- The title of the dialog to pick an activity.  This is shown when there are multiple activities that can do a particular action.  For example, suppose you click on the "Share" menu item in the Browser.  Since you can share the webpage URL via many communication methods, this dialog would come up with choices like "Email", "IM", etc.  This is a generic message, and the previous example is a single possible scenario (so please don't assume it's for the browser or anything :) ). -->
     <string name="activity_picker_label">Select activity</string>
-    <string name="underdeveloped_settings_label">Underdeveloped settings</string>
+    <!-- Do not translate. -->
     <string name="debug_intent_sender_label">Debug intent sender</string>
+    <!-- The title of the activity to see random device info. -->
     <string name="device_info_label">Device info</string>
+    <!-- The title of the activity to see battery info. -->
     <string name="battery_info_label">Battery info</string>
+    <!-- The title of the activity to adjust display settings -->
     <string name="display_label">Display</string>
+    <!-- The title of the activity to see phone info -->
     <string name="phone_info_label">Phone info</string>
+    <!-- The title of the activity to adjust SD card settings-->
     <string name="sd_card_settings_label">SD card</string>
-    <string name="favorites_label">Favorites</string>
-    <string name="apn_label">APN</string>
+    <!-- The title of the activity to adjust proxy settings -->
     <string name="proxy_settings_label">Proxy settings</string>
 
     <!-- ======================================================================================= -->
     <!-- NEW STUFF -->
     <!-- ======================================================================================= -->
 
-    <!-- Widgets -->
-    <string name="done">OK</string>
+    <!-- Button label for generic cancel action -->
     <string name="cancel">Cancel</string>
 
     <!-- Main Settings screen title -->
     <string name="settings_label">Settings</string>
-    <string name="basic_settings_title">Phone basics</string>
     <!-- Wireless controls settings screen, setting check box label -->
     <string name="airplane_mode">Airplane mode</string>
     <!-- Wireless controls settings screen, setting option summary text -->
-    <string name="airplane_mode_summary">Select to disable all wireless connections</string>
-    <!-- Wireless controls settings screen, setting option summary text as check box is selected -->
+    <string name="airplane_mode_summary">Disable all wireless connections</string>
+    <!-- Wireless controls settings screen, setting option summary text as airplane mode is being enabled (so it is disabling all wireless connections)  -->
     <string name="airplane_mode_turning_on">Disabling wireless connections\u2026</string>
-    <!-- Wireless controls settings screen, setting option summary text as check box is cleared -->
+    <!-- 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 -->
+    <!-- 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>
-    <!-- Main Settings screen settings summary text -->
+    <!-- Main Settings screen settings summary text for the "Wireless controls" setting -->
     <string name="radio_controls_summary">Manage Wi-Fi, Bluetooth, airplane mode, &amp; mobile networks</string>
-    <string name="networks_title">Network settings</string>
 
-    <!-- mobile network settings screen, setting check box title -->
-    <string name="roaming">Data roaming</string>
-    <!-- mobile network settings screen, setting option summary text when check box is selected -->
-    <string name="roaming_enable">Connect to data services when roaming</string>
-    <!-- mobile network settings screen, setting option summary text when check box is clear -->
-    <string name="roaming_disable">Connect to data services when roaming</string>
-    <!-- mobile network settings screen, dialog message when you are roaming and clear the "Data roaming" check box -->
-    <string name="roaming_reenable_message">You have lost data connectivity because you left your home network with data roaming turned off.</string>
-    <!-- mobile network settings screen, button on dialog box that appears when you are roaming and clear the "Data roaming" check box -->
-    <string name="roaming_turn_it_on_button">Turn it on</string>
-    <!-- mobile network settings screen, message in dialog box that appears when you select the "Data roaming" check box -->
-    <string name="roaming_warning">Allow data roaming? You may incur significant roaming charges!</string>
-    <!-- mobile network settings screen, title of dialog box that appears when you select the "Data roaming" check box -->
-    <string name="roaming_reenable_title">Attention</string>
-    <!-- mobile network settings screen, setting option name -->
-    <string name="networks">Operator selection</string>
-    <!-- mobile network settings screen, setting option summary text -->
-    <string name="sum_carrier_select">Select a network operator</string>
 
     <!-- Date and time settings -->
-    <!-- Main Settings screen setting option name -->
+    <!-- Main Settings screen setting option name to go into the date and time settings-->
     <string name="date_and_time_settings_title">Date &amp; time</string>
-    <!-- Main Settings screen setting option summary text -->
+    <!-- Main Settings screen setting option summary text for the item to go into the date and time settings. -->
     <string name="date_and_time_settings_summary">Set date, time, time zone &amp; formats</string>
-    <!-- Date & time setting screen setting check box title -->
+    <!-- Date & time setting screen setting check box title if the date and time should be determined automatically -->
     <string name="date_time_auto">Automatic</string>
-    <!-- Date & time setting screen setting option summary text when Automatic check box is selected -->
+    <!-- Date & time setting screen setting option summary text when Automatic check box is selected (that is, when date and time should be determined automatically) -->
     <string name="date_time_auto_summaryOn">Use network-provided values</string>
     <!-- Date & time setting screen setting option summary text when Automatic check box is clear -->
     <string name="date_time_auto_summaryOff">Use network-provided values</string>
     <!-- Date & time setting screen setting check box title -->
     <string name="date_time_24hour">Use 24-hour format</string>
-    <!-- Date & time setting screen setting option name -->
+    <!-- Date & time setting screen setting option title -->
     <string name="date_time_set_time">Set time</string>
-    <!-- Date & time setting screen setting option name -->
-    <string name="date_time_set_timezone">Set time zone</string>
-    <!-- Date & time setting screen setting option name -->
+    <!-- Date & time setting screen setting option title -->
+    <string name="date_time_set_timezone">Select time zone</string>
+    <!-- Date & time setting screen setting option title -->
     <string name="date_time_set_date">Set date</string>
-    <!-- Date & time setting screen setting option name -->
+    <!-- Date & time setting screen setting option title.  This setting allows the user to choose how the date should be displayed in apps (what ordering for month and day, etc.) -->
     <string name="date_time_date_format">Select date format</string>
     <!-- Menu item on Select time zone screen -->
     <string name="zone_list_menu_sort_alphabetically">Sort alphabetically</string>
     <!-- Menu item on Select time zone screen -->
     <string name="zone_list_menu_sort_by_timezone">Sort by time zone</string>
 
-    <!-- Security and data settings -->
-    <string name="security_and_data_label">Security &amp; data</string>
-    <!-- Main Settings screen setting option name -->
+    <!-- Main Settings screen setting option title for the item to take you the security and location screen -->
     <string name="security_settings_title">Security &amp; location</string>
-    <!-- Main Settings screen setting option summary text -->
-    <string name="security_settings_summary">My Location, screen unlock, SIM card lock</string>
-    <string name="data_settings">Data settings</string>
-    <string name="data_settings_title">Data</string>
-    <string name="data_settings_summary">SD card &amp; phone storage, data sync</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</string>
+    <!-- In the security screen, the header title for settings related to  Passwords-->
     <string name="security_passwords_title">Passwords</string>
 
     <!-- Bluetooth settings -->
-    <!-- Bluetooth settings check box title on Main Settings screen; probably unused now -->
+    <!-- Bluetooth settings check box title on Main Settings screen -->
     <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-    <string name="bluetooth_quick_toggle_summary">Select to turn on Bluetooth</string>
+    <!-- Bluetooth settings check box summary for turning on bluetooth -->
+    <string name="bluetooth_quick_toggle_summary">Turn on Bluetooth</string>
     <!--Used as title on second screen after selecting Bluetooth settings -->
     <string name="bluetooth_settings">Bluetooth settings</string>
-    <!--Wireless controls screen, settings title -->
+    <!--Wireless controls screen, settings title for the item to take you to the bluetooth settings screen -->
     <string name="bluetooth_settings_title">Bluetooth settings</string>
-    <!--Wireless controls screen, settings summary -->
+    <!--Wireless controls screen, settings summary for the item tot ake you to the bluetooth settings screen -->
     <string name="bluetooth_settings_summary">Manage connections, set device name &amp; discoverability</string>
 
-    <string name="bluetooth_pin_entry">Bluetooth PIN entry</string>
+    <!-- Title for the dialog to enter PIN.  -->
+    <string name="bluetooth_pin_entry">Bluetooth pairing request</string>
+    <!-- Title for the bluetooth device info screen. -->
     <string name="bluetooth_device_info">Bluetooth device info</string>
-
+    <!-- Message when the bluetooth is pairing with anotehr device -->
     <string name="bluetooth_pairing_msg">Pairing\u2026</string>
-    <string name="bluetooth_enter_pin_msg">Type PIN for\u0020</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>
 
+    <!-- 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> 
+    <!-- Alternative message for the error dialog when BT pairing fails generically. This message suggests the user to try another PIN. -->
+    <string name="bluetooth_pairing_alternate_error_message">There was a problem pairing with <xliff:g id="device_name">%1$s</xliff:g>. Please try another PIN.</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 connecting operation fails generically. -->
+    <string name="bluetooth_connecting_error_message">There was a problem connecting to <xliff:g id="device_name">%1$s</xliff:g>.</string> 
+
+    <!-- Bluetooth title for entering new data -->
     <string name="bluetooth_new_data">Type new data</string>
+    <!-- Bluetooth button for confirming new data-->
     <string name="bluetooth_new_data_confirm">OK</string>
+    <!-- Bluetooth button for canceling new data-->
     <string name="bluetooth_new_data_cancel">Cancel</string>
 
+    <!-- Bluetooth message when scanning for new devices -->
     <string name="bluetooth_scan_for_new_devices">Scanning for new devices\u2026</string>
-
+    <!-- Do not translate -->
     <string name="bluetooth_device_info_alias">Device alias</string>
+    <!-- Do not translate -->
     <string name="bluetooth_device_info_no_alias">Type alias here\u2026</string>
+    <!-- Do not translate -->
     <string name="bluetooth_device_info_delete">Remove this device</string>
+    <!-- Do not translate -->
     <string name="bluetooth_device_info_sdp">List supported services</string>
 
+    <!-- Caption for bluetooth discoverability setting dialog. -->
     <string name="bluetooth_discoverability_panel_title">Make me\u2026</string>
-    <string name="bluetooth_discoverable">Discoverable for %1$s seconds</string>
+    <!-- Summary for discoverable setting when device is discoverable for some amount of time -->
+    <string name="bluetooth_discoverable">Discoverable for <xliff:g id="discoverable_time_period">%1$s</xliff:g> seconds</string>
+    <!-- Summary for discoverable setting when device is connectable -->
     <string name="bluetooth_connectable">Connectable only</string>
+    <!-- Summary for discoverable setting when device is not discoverable or conenctable -->
     <string name="bluetooth_neither">Neither discoverable nor connectable</string>
-    <string name="bluetooth_unknown">Unknown</string>
+    <!-- Bluetooth settings: The title of the preference (list item) that initiates a scan for devices -->
+    <string name="bluetooth_preference_scan_title">Scan for devices</string>
+    <!-- Bluetooth settings: The summary of the preference (list item) that initiates a scan for devices -->
+    <string name="bluetooth_preference_scan_summary">Find devices to pair with</string>
+    
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will connect to all profiles on the device. -->
+    <string name="bluetooth_device_context_connect">Connect</string>
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will disconnect from all profiles on the device. -->
+    <string name="bluetooth_device_context_disconnect">Disconnect</string>
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will first pair, and then connect to all profiles on the device. -->
+    <string name="bluetooth_device_context_pair_connect">Pair &amp; connect</string>
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will remove pairing with the device. -->
+    <string name="bluetooth_device_context_unpair">Unpair</string>
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will disconnect and remove pairing with the device. -->
+    <string name="bluetooth_device_context_disconnect_unpair">Disconnect &amp; unpair</string>
+    <!-- Bluetooth settings.  Context menu item for a device.  Action will take the user to another screen where they can choose exactly which profiles to connect to. -->
+    <string name="bluetooth_device_context_connect_advanced">Options\u2026</string>    
+    
+    <!-- Bluetooth settings.  The title of the screen to pick which profiles to connect to on the device.  For example, headphones may have both A2DP and headset, this allows the user to choose which one he wants to connect to. -->
+    <string name="bluetooth_connect_specific_profiles_title">Connect to\u2026</string>
+
+    <!-- Bluetooth settings.  The user-visible string that is used whenever referring to the A2DP profile. -->
+    <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 summary string when a device is connected to the A2DP profile. -->
+    <string name="bluetooth_summary_connected_to_a2dp">Connected to media audio</string>
+    <!-- Bluetooth settings.  The summary string when a device is connected to the headset profile. -->
+    <string name="bluetooth_summary_connected_to_headset">Connected to phone audio</string>
+    <!-- Bluetooth settings.  The summary string when a device is connected to the A2DP and headset profiles. -->
+    <string name="bluetooth_summary_connected_to_a2dp_headset">Connected to phone and media audio</string>
+
+    <!-- Bluetooth settings.  Connection options screen.  The title of the screen. -->
+    <string name="bluetooth_device_advanced_title"><xliff:g id="device_name">%1$s</xliff:g> options</string>
+    <!-- Bluetooth settings.  Connection options screen.  The title of the checkbox that controls whether the device is in "online" mode or "offline" mode.  This essentially is the checkbox that controls whether any checks / unchecks on a profile should be applied immediately, or next time the device is connected. -->
+    <string name="bluetooth_device_advanced_online_mode_title">Connect</string>
+    <!-- Bluetooth settings.  Connection options screen.  The summary of the online mode checkbox.  This describes what the setting does in the context of the screen. -->
+    <string name="bluetooth_device_advanced_online_mode_summary">Connect to Bluetooth device</string>
+    <!-- Bluetooth settings.  Connection options screen.  The title of the header that is above all of the profiles. -->
+    <string name="bluetooth_device_advanced_profile_header_title">Profiles</string>
+    <!-- Bluetooth settings.  Connection options screen.  The summary for the A2DP checkbox preference when A2DP is connected. -->
+    <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 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>
 
     <!-- Wi-Fi settings -->
     <!-- Used in the 2nd-level settings screen to turn on Wi-Fi -->
@@ -490,43 +781,72 @@
     <!-- Used in the 1st-level settings screen to turn on Wi-Fi -->
     <string name="wifi_quick_toggle_title">Wi-Fi</string>
     <!-- Used in the 1st-level settings screen as the turn-on summary -->
-    <string name="wifi_quick_toggle_summary">Select to turn on Wi-Fi</string>
+    <string name="wifi_quick_toggle_summary">Turn on Wi-Fi</string>
     <!-- Used in the 1st-level settings screen to go to the 2nd-level settings screen -->
     <string name="wifi_settings">Wi-Fi settings</string>
+    <!-- Title of the Wi-fi settings screen -->
     <string name="wifi_settings_category">Wi-Fi settings</string>
     <!--Wireless controls setting screen, Wi-Fi settings summary text -->
     <string name="wifi_settings_summary">Set up &amp; manage wireless access points</string>
+    <!-- Button caption to forget a wifi network -->
     <string name="forget_network">Forget</string>
+    <!-- Label for status of connection -->
     <string name="wifi_status">Status</string>
+    <!-- Label for link speed (wifi) -->
     <string name="wifi_link_speed">Speed</string>
+    <!-- Verbose wifi signal strength.  This is the best out of 4 levels. -->
     <string name="wifi_signal_3">Excellent</string>
+    <!-- Verbose wifi signal strength.  This is the 2nd best out of 4 levels. -->
     <string name="wifi_signal_2">Good</string>
+    <!-- Verbose wifi signal strength.  This is the 3rd best out of 4 levels. -->
     <string name="wifi_signal_1">Fair</string>
+    <!-- Verbose wifi signal strength.  This is the worst out of 4 levels. -->
     <string name="wifi_signal_0">Poor</string>
+    <!-- Label for the security of a wifi network -->
     <string name="security">Security</string>
+    <!-- Value for the wifi security.  This means no encryption. -->
     <string name="wifi_security_open">Open</string>
+    <!-- Value for the wifi security -->
     <string name="wifi_security_wep">WEP</string>
+    <!-- Value for the wifi security -->
     <string name="wifi_security_wpa">WPA</string>
+    <!-- Value for the wifi security -->
     <string name="wifi_security_wpa2">WPA2</string>
+    <!-- Value for the wifi security when it is unknown -->
     <string name="wifi_security_unknown">Unknown</string>
+    <!-- Verbose security type of a wifi network.  Open means no security. -->
     <string name="wifi_security_verbose_open">Open network</string>
+    <!-- Verbose security type of a wifi network.  -->
     <string name="wifi_security_verbose_wep">Secured with WEP</string>
+    <!-- Verbose security type of a wifi network.  -->
     <string name="wifi_security_verbose_wpa">Secured with WPA</string>
+    <!-- Verbose security type of a wifi network.  -->
     <string name="wifi_security_verbose_wpa2">Secured with WPA2</string>
+    <!-- Wi-Fi IP addrress label -->    
     <string name="ip_address">IP address</string>
+    <!-- Label for the signal strength -->
     <string name="signal">Signal strength</string>
     <!--Wireless controls setting screen, Wi-Fi check box summary text when turning Wi-Fi on -->
     <string name="wifi_starting">Turning on\u2026</string>
     <!--Wireless controls setting screen, Wi-Fi check box summary text when turning Wi-Fi off -->
     <string name="wifi_stopping">Turning off\u2026</string>
+    <!-- Generic error message , probably not used-->
     <string name="wifi_error">Error</string>
+    <!-- Error message when Wi-Fi can't start -->
     <string name="error_starting">Unable to start Wi-Fi</string>
+    <!-- Error message when Wi-Fi can't stop -->
     <string name="error_stopping">Unable to stop Wi-Fi</string>
+    <!-- Error message when Wi-Fi can't scan for networks -->
     <string name="error_scanning">Unable to scan for networks</string>
+    <!-- Error message when Wi-Fi can't connect -->
     <string name="error_connecting">Unable to connect to the network</string>
+    <!-- Error message when Wi-Fi can't save the network -->
     <string name="error_saving">Unable to save the network</string>
+    <!-- Button label to connect to a wifi network-->
     <string name="connect">Connect</string>
+    <!-- Dialog title for when the user is trying to connect to a particular network-->
     <string name="connect_to_blank">Connect to <xliff:g id="network_name">%1$s</xliff:g></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 -->
     <string name="please_type_hex_key">WEP hex key (0-9, A-F)</string>
@@ -534,35 +854,53 @@
     <string name="wifi_show_password">Show password.</string>
     <!--Wi-Fi settings screen menu option -->
     <string name="scan_wifi">Scan</string>
+    <!-- Wifi network summary when not in nearby -->
     <string name="summary_not_in_range">Not in range</string>
+    <!-- Wifi network summary when the network is configured previously -->
     <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="wifi_prefer_wifi">Prefer Wi-Fi</string>
+    <!-- Header for the list of wifi networks-->
     <string name="wifi_access_points">Wi-Fi networks</string>
-    <string name="wifi_type_ssid">Type the network SSID:</string>
+    <!-- Caption for entering the SSID of a wifi network -->
+    <string name="wifi_type_ssid">Network SSID</string>
+    <!-- The label for security -->
     <string name="wifi_security">Security</string>
+    <!-- Button caption to save a configuration wifi -->
     <string name="wifi_save_config">Save</string>
+    <!-- An edit field's grayed out value when it has not been modified -->
     <string name="wifi_password_unchanged">(unchanged)</string>
-    <string name="wifi_add_other_network">Add a Wi-Fi network</string>
+    <!-- Action message to add a wifi network -->
+    <string name="wifi_add_other_network">Add Wi-Fi network</string>
+    <!-- Checkbox title for option to notify user when open networks are nearby -->
     <string name="wifi_notify_open_networks">Network notification</string>
+    <!-- Checkbox summary for option to notify user when open networks are nearby -->
     <string name="wifi_notify_open_networks_summary">Notify me when an open network is available</string>
     <!-- This dialog will use the error_title as the title. -->
-    <string name="wifi_dhcp_timeout_error">There is a problem obtaining an IP address.</string>
-    <!-- This dialog will use the error_title as the title. -->
     <string name="wifi_password_incorrect_error">The network password you typed is not correct. Please try again.</string>
+    <!-- Generic error message -->
     <string name="wifi_generic_connection_error">There is a problem connecting to the network. Please try again.</string>
     <!--Wi-Fi settings screen menu option -->
     <string name="wifi_menu_advanced">Advanced</string>
+    <!-- Title of the screen to adjust IP settings -->
     <string name="wifi_ip_settings_titlebar">IP settings</string>
+    <!-- Menu ietm to save the IP settings -->
     <string name="wifi_ip_settings_menu_save">Save</string>
+    <!-- Menu ietm to cancel the IP settings -->
     <string name="wifi_ip_settings_menu_cancel">Cancel</string>
+    <!-- Error message if the IP address is not valid -->
     <string name="wifi_ip_settings_invalid_ip">Please type a valid IP address.</string>
+    <!-- Checkbox for whether to use a static IP address -->
     <string name="wifi_use_static_ip">Use static IP</string>
+    <!-- Label for the IP address -->
     <string name="wifi_ip_address">IP address</string>
+    <!-- Label for the DNS (first one) -->
     <string name="wifi_dns1">DNS 1</string>
+    <!-- Label for the DNS (second one)-->
     <string name="wifi_dns2">DNS 2</string>
-    <string name="wifi_dns3">DNS 3</string>
+    <!-- Label for the gateway of the network -->
     <string name="wifi_gateway">Gateway</string>
+    <!-- Label for the netmask of the network -->
     <string name="wifi_netmask">Netmask</string>
     <!--Wi-Fi settings screen, network context menu item -->
     <string name="wifi_context_menu_connect">Connect to network</string>
@@ -571,47 +909,74 @@
     <!--Wi-Fi settings screen, network context menu item -->
     <string name="wifi_context_menu_change_password">Change password</string>
 
-    <!-- These fragment_status_* will have the network name substituted in -->
+    <!-- Wi-Fi settings screen, advanced, settings section.  This is a header shown above advanced wifi settings. -->
+    <string name="wifi_advanced_titlebar">Advanced</string>
+    <!-- Wi-Fi settings screen, setting title for choosing the number of channels to be used -->
+    <string name="wifi_setting_num_channels_title">Regulatory domain</string>
+    <!-- Wi-Fi settings screen, setting summary for choosing the number of channels to be used -->
+    <string name="wifi_setting_num_channels_summary">Set the number of channels to use</string>
+    <!-- Wi-Fi settings screen, generic error message when the regulatory domain could not be set. -->
+    <string name="wifi_setting_num_channels_error">There was a problem setting the regulatory domain.</string>
+    <!-- Wi-Fi settings screen, label to be appended to the count in displaying the list of valid channel counts -->
+    <string name="wifi_setting_num_channels_channel_phrase"><xliff:g id="num_channels">%1$d</xliff:g> channels</string>
+
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's MAC address. -->
+    <string name="wifi_advanced_mac_address_title">MAC address</string>
+
+    <!-- Status message of Wi-Fi when it is scanning -->
     <string name="fragment_status_scanning">Scanning\u2026</string>
+    <!-- Status message of Wi-Fi when it is connecting to a particular network -->
     <string name="fragment_status_connecting">Connecting to <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
+    <!-- Status message of Wi-Fi when it is authenticating with a network -->
     <string name="fragment_status_authenticating">Authenticating with <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
+    <!-- Status message of Wi-Fi when it is obtaining the IP address from a netwrok -->
     <string name="fragment_status_obtaining_ip">Obtaining IP address from <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
+    <!-- Status message of Wi-Fi when it is connect to a network -->
     <string name="fragment_status_connected">Connected to <xliff:g id="network_name">%1$s</xliff:g></string>
+    <!-- Status message of Wi-Fi when it is disconnecting from a network -->
     <string name="fragment_status_disconnecting">Disconnecting from <xliff:g id="network_name">%1$s</xliff:g>\u2026</string>
+    <!-- Status message of Wi-Fi when it is disconnected from a network-->
     <string name="fragment_status_disconnected">Disconnected</string>
+    <!-- Status message of Wi-Fi when it is a failure (connection) -->
     <string name="fragment_status_failed">Unsuccessful</string>
-    <!-- These status_* will only be the status -->
+
+    <!-- Status message of Wi-Fi when it is scanning -->
     <string name="status_scanning">Scanning\u2026</string>
+    <!-- Status message of Wi-Fi when it is connecting (but the network is not known right now) -->
     <string name="status_connecting">Connecting\u2026</string>
+    <!-- Status message of Wi-Fi when it is authenticating (but the network is not known right now) -->
     <string name="status_authenticating">Authenticating\u2026</string>
     <!--Wi-Fi settings screen, summary text for network when connecting -->
     <string name="status_obtaining_ip">Obtaining address\u2026</string>
     <!--Wi-Fi settings screen, summary text for network when connected -->
     <string name="status_connected">Connected</string>
+    <!-- Status message of Wi-Fi when it is disconnecting (but the network is not known right now) -->
     <string name="status_disconnecting">Disconnecting\u2026</string>
+    <!-- Status message of Wi-Fi when it is disconnected (but the network is not known right now) -->
     <string name="status_disconnected">Disconnected</string>
+    <!-- Status message of Wi-Fi when it is a failure (but the network is not known right now) -->
     <string name="status_failed">Unsuccessful</string>
 
     <!-- Sound and alerts settings -->
-    <!-- Main Settings screen setting option name -->
+    <!-- Main Settings screen setting option name to go into the sound and display settings screen -->
     <string name="sound_and_display_settings">Sound &amp; display</string>
     <!-- Sound settings screen heading -->
     <string name="sound_settings">Sound settings</string>
-    <!-- Main Settings screen setting option summary text -->
+    <!-- Main Settings screen setting option summary text for the item to go into the soudn and display settings screen-->
     <string name="sound_and_display_settings_summary">Set ringtones, notifications, screen brightness</string>
-    <!-- Sound settings screen, setting option name -->
+    <!-- Sound settings screen, setting option name checkbox -->
     <string name="silent_mode_title">Silent mode</string>
     <!-- Sound settings screen, setting option summary text -->
-    <string name="silent_mode_summary">All sounds except media are silenced</string>
-    <!-- Sound settings screen, setting option name -->
+    <string name="silent_mode_summary">All sounds except media &amp; alarms are silenced</string>
+    <!-- Sound settings screen, setting option name to pick ringtone (a list dialog comes up)-->
     <string name="ringtone_title">Phone ringtone</string>
     <!-- Sound settings screen, setting option summary text -->
     <string name="ringtone_summary">Set your default incoming call ringtone</string>
     <!-- Sound settings screen, setting option name -->
     <string name="ring_volume_title">Ringer volume</string>
     <!-- Sound settings screen, setting option summary text -->
-    <string name="ring_volume_summary">Set volume for incoming calls</string>
-    <!-- Sound settings screen, setting option name -->
+    <string name="ring_volume_summary">Set volume for incoming calls and notifications</string>
+    <!-- Sound settings screen, setting option name checkbox -->
     <string name="vibrate_title">Phone vibrate</string>
     <!-- Sound settings screen, setting option summary text -->
     <string name="vibrate_summary">Vibrate phone for incoming calls</string>
@@ -619,7 +984,14 @@
     <string name="notification_sound_title">Notification ringtone</string>
     <!-- Sound settings screen, setting option summary text -->
     <string name="notification_sound_summary">Set your default notification ringtone</string>
-    <!-- Sound settings screen, unused -->
+    <!-- Sound settings screen, the title of the volume bar to adjust the incoming call volume -->
+    <string name="incoming_call_volume_title">Incoming call volume</string>
+    <!-- Sound settings screen, the title of the volume bar to adjust the notification volume -->
+    <string name="notification_volume_title">Notification volume</string>
+    <!-- Sound settings screen, the caption of the checkbox for having the notification volume be
+         the same as the incoming call volume. -->
+    <string name="checkbox_notification_same_as_incoming_call">Use incoming call volume for notifications</string>
+    <!-- Sound settings screen, setting option title-->
     <string name="notification_sound_dialog_title">Select notification ringtone</string>
     <!-- Sound settings screen, setting option name -->
     <string name="media_volume_title">Media volume</string>
@@ -639,10 +1011,15 @@
     <string name="sound_effects_enable_summary_off">Play sound when making screen selection</string>
 
     <!-- Sync settings -->
-    <!-- Main Settings screen setting option name -->
+    <!-- Main Settings screen setting option name to go into the screen for data sync settings-->
     <string name="sync_settings">Data synchronization</string>
-    <!-- Main Settings screen setting option summary text -->
+    <!-- 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>
+    <!-- Data synchronization settings screen, the header title for the settings that are general, for example background data on/off. -->
+    <string name="sync_settings_header_general_settings">General sync settings</string>
+    <!-- Data synchronization settings screen, the header title for the settings that are application-specific. -->
+    <string name="sync_settings_header_application_settings">Application sync settings</string>
+    <!-- Error message when the sync tried to delete too many things -->
     <string name="sync_too_many_deletes">Delete limit exceeded</string>
     <!-- Data synchronization settings screen, setting option name -->
     <string name="sync_automatically">Auto-sync</string>
@@ -654,134 +1031,162 @@
     <string name="sync_menu_sync_now">Sync now</string>
     <!-- Data synchronization settings screen, menu option -->
     <string name="sync_menu_sync_cancel">Cancel sync</string>
-    <!-- Data synchronization settings screen, setting option name -->
+    <!-- Data synchronization settings screen, checkbox setting option name. Controls whether Gmail should be synced. -->
     <string name="sync_gmail">Gmail</string>
-    <!-- Data synchronization settings screen, setting option name -->
+    <!-- Data synchronization settings screen, checkbox setting option name. Controls whether Calendar shoudl be synced. -->
     <string name="sync_calendar">Calendar</string>
-    <!-- Data synchronization settings screen, setting option name -->
+    <!-- Data synchronization settings screen, checkbox setting option name -->
     <string name="sync_contacts">Contacts</string>
-    <string name="sync_too_many_deletes_desc">There are %d deleted items for %s, account %s. What would you like to do?</string>
+    <!-- Dialog message for when there are too many deletes that would take place and we want user confirmation -->
+    <string name="sync_too_many_deletes_desc">There are <xliff:g id="number_of_deleted_items">%1$d</xliff:g> deleted items for <xliff:g id="type_of_sync">%2$s</xliff:g>, account <xliff:g id="account_name">%3$s</xliff:g>. What would you like to do?</string>
+    <!-- Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to delete the items -->
     <string name="sync_really_delete">Delete the items.</string>
+    <!-- Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to undo the deletions -->
     <string name="sync_undo_deletes">Undo the deletes.</string>
+    <!-- Dialog action for when there are too many deletes that would take place and we want user confirmation, and the user wants to do nothing for now -->
     <string name="sync_do_nothing">Do nothing for now.</string>
+    <!-- Message when sync is currently failing -->
     <string name="sync_is_failing">Sync is currently experiencing problems. It will be back shortly.</string>
+    <string name="sync_plug"><font fgcolor="#ffffffff">Welcome to Google Sync!</font>
+    \nA Google approach to synchronizing data to allow access to your contacts, appointments and more from wherever you are.
+    </string>
 
     <!-- Display settings -->
-    <!-- Sound & display settings screen, section header -->
+    <!-- Sound & display settings screen, section header for settings related to display -->
     <string name="display_settings">Display settings</string>
-    <!-- Sound & display settings screen, setting option name -->
+    <!-- Sound & display settings screen, animations check box label -->
+    <string name="animations_title">Animation</string>
+    <!-- Sound & display settings screen, animations option summary text when check box is selected -->
+    <string name="animations_summary_on">Show animation when opening/closing windows</string>
+    <!-- Sound & display settings screen, animations option summary text when check box is clear -->
+    <string name="animations_summary_off">Show animation when opening/closing windows</string>
+    <!-- Sound & display settings screen, setting option name to change brightness -->
     <string name="brightness">Brightness</string>
-    <string name="autorotate">Auto-rotate</string>
-    <string name="autorotate_summary_on">Changing screen orientation rotates application</string>
-    <string name="autorotate_summary_off">Changing screen orientation does not rotate application</string>
-    <!-- Sound & display settings screen, setting option name -->
+    <!-- Sound & display settings screen, setting option name to chagne screen timeout -->
     <string name="screen_timeout">Screen timeout</string>
+    <!-- Sound & display settings screen, setting option name to change whether the screen dims automatically before it is about to turn off -->
     <string name="dim_screen">Dim screen</string>
 
-    <!-- SIM lock settings -->
+    <!-- SIM lock settings title -->
     <string name="sim_lock_settings">SIM card lock settings</string>
     <!-- Security & location settings screen, setting option name -->
     <string name="sim_lock_settings_category">Set up SIM card lock</string>
-    <!-- Security & location settings screen, section heading -->
+    <!-- Security & location settings screen, section heading for settings related to sim card locking -->
     <string name="sim_lock_settings_title">SIM card lock</string>
-    <!-- SIM card lock settings screen, setting check box label & resulting dialog box title -->
+    <!-- SIM card lock settings screen, setting check box label -->
     <string name="sim_pin_toggle">Lock SIM card</string>
-    <!-- SIM card lock settings screen, setting option summary text when check box is selected -->
+    <!-- SIM card lock settings screen, setting option summary text when SIM lock check box is selected -->
     <string name="sim_lock_on">Require PIN to use phone</string>
-    <!-- SIM card lock settings screen, setting option summary text when check box is clear -->
+    <!-- SIM card lock settings screen, setting option summary text when SIM lock check box is clear -->
     <string name="sim_lock_off">Require PIN to use phone</string>
-    <!-- SIM card lock settings screen, setting option name -->
-    <string name="sim_pin_change">Change PIN code</string>
-    <!-- SIM card lock settings screen, SIM PIN dialog title -->
-    <string name="sim_enter_pin">Type SIM PIN</string>
-    <!-- SIM card lock settings screen, SIM PIN dialog title -->
-    <string name="sim_enable_sim_lock">Enable SIM card lock</string>
-    <!-- SIM card lock settings screen, SIM PIN dialog title -->
-    <string name="sim_disable_sim_lock">Disable SIM card lock</string>
+    <!-- SIM card lock settings screen, setting option name to change the SIM PIN -->
+    <string name="sim_pin_change">Change SIM PIN</string>
     <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
-    <string name="sim_enter_old">Type old PIN</string>
+    <string name="sim_enter_pin">SIM PIN</string>
     <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
-    <string name="sim_enter_new">Type new PIN</string>
+    <string name="sim_enable_sim_lock">Lock SIM card</string>
     <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
+    <string name="sim_disable_sim_lock">Unlock SIM card</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
+    <string name="sim_enter_old">Old SIM PIN</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
+    <string name="sim_enter_new">New SIM PIN</string>
     <string name="sim_reenter_new">Re-type new PIN</string>
-    <string name="sim_change_pin">Change SIM PIN</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message instruction -->
+    <string name="sim_change_pin">SIM PIN</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message when wrong PIN is entered -->
     <string name="sim_bad_pin">Incorrect PIN!</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message when PINs don't match -->
     <string name="sim_pins_dont_match">PINs don\'t match!</string>
     <!-- SIM card lock settings screen, toast after not entering correct SIM PIN -->
     <string name="sim_change_failed">Unable to change PIN.\nPossibly incorrect PIN.</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog message when the entered PIN is correct-->
     <string name="sim_change_succeeded">SIM PIN changed successfully</string>
     <!-- SIM card lock settings screen, toast after not entering correct SIM PIN -->
     <string name="sim_lock_failed">Unable to change SIM card lock state.\nPossibly incorrect PIN.</string>
     <!-- SIM card lock settings screen, SIM PIN dialog button labels: -->
     <string name="sim_enter_ok">OK</string>
+    <!-- SIM card lock settings screen, SIM PIN dialog button labels: -->
     <string name="sim_enter_cancel">Cancel</string>
 
-    <!-- Device info settings -->
+    <!-- Advanced (used for diagnostics) device info activity title -->
     <string name="device_info_settings">Phone status</string>
 
-    <string name="software_version">Software version</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen, list item title.  Takes the user to the screen for seeing and installing system updates. -->
+    <string name="system_update_settings_list_item_title">System updates</string>
+    <!-- About phone screen, list item summary.  Takes the user to the screen for seeing and installing system updates. -->
+    <string name="system_update_settings_list_item_summary">Check for system updates</string>
+
+    <!-- About phone screen, status item label -->
     <string name="firmware_version">Firmware version</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen, status item label-->
     <string name="model_number">Model number</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen,  setting option name-->
     <string name="baseband_version">Baseband version</string>
-    <string name="bootloader_version">Boot loader version</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen,  setting option name-->
     <string name="kernel_version">Kernel version</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen,  setting option name-->
     <string name="build_number">Build number</string>
 
+    <!-- About phone screen, show when a value of some status item is unavailable. -->
     <string name="device_info_not_available">Not available</string>
-    <!-- About phone screen, setting option name -->
+    <!-- About phone screen, phone status screen title -->
+    <string name="device_status_activity_title">Status</string>
+    <!-- About phone screen, title of the item to go into the Phone status screen -->
     <string name="device_status">Status</string>
-    <!-- About phone screen, setting option summary text -->
+    <!-- About phone screen, summary of the item to go into the phone status screen -->
     <string name="device_status_summary">IMEI, 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 &amp; phone storage</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>
-    <!-- About phone, Status screen option title -->
+    <!-- Do not translate. About phone, status item title -->
     <string name="status_imei">IMEI</string>
-    <!-- About phone, Status screen option title -->
+    <!-- Do not translate. About phone, status item title -->
     <string name="status_imei_sv">IMEI SV</string>
-    <!-- About phone, Status screen option title -->
+    <!-- Do not translate. About phone, status item title -->
     <string name="status_imsi">IMSI</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title.  The phone number of the current device.-->
     <string name="status_number">Phone number</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title for the type of data phone network we're connected to, for example 3G or Edge or GPRS -->
     <string name="status_network_type">Network type</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title. The status of data access.  For example, the value may be "Connected" -->
     <string name="status_data_state">Data access</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title. The status of whether we have service.  for example, the value may be "In service" -->
     <string name="status_service_state">Service state</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title. The  current cell tower signal strength -->
     <string name="status_signal_strength">Signal strength</string>
+    <!-- About phone, status item title, The status for roaming.  For example, the value might be "Not roaming" -->
     <string name="status_roaming">Roaming</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title. The cell carrier that the user is connected to.  -->
     <string name="status_operator">Network</string>
+    <!-- About phone, status item title.  The MAC address of the Wi-Fi network adapter. -->
     <string name="status_wifi_mac_address">Wi-Fi MAC address</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title.  The bluetooth adapter's hardware address-->
     <string name="status_bt_address">Bluetooth address</string>
-    <!-- About phone, Status screen option summary text -->
+    <!-- About phone, status item value if the actual value is not available. -->
     <string name="status_unavailable">Unavailable</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title.  How long the device has been running since its last reboot. -->
     <string name="status_up_time">Up time</string>
-    <!-- About phone, Status screen option title -->
+    <!-- About phone, status item title.  How much time the device has had its main CPU awake. -->
     <string name="status_awake_time">Awake time</string>
-    <!-- SD card & phone storage settings screen heading -->
+    <!-- SD card & phone storage settings screen heading. This is displayed above items that pertain to the phone's internal storage  -->
     <string name="internal_memory">Internal phone storage</string>
-    <!-- SD card & phone storage settings screen heading -->
+    <!-- SD card & phone storage settings screen heading. This is displayed above items that pertain to the SD card -->
     <string name="sd_memory">SD card</string>
-    <!-- SD card & phone storage settings title -->
+    <!-- SD card & phone storage settings title. The amount of free space for some storage partition.  For example, this is listed under both the "Internal phone storage" section and the "SD card" section. -->
     <string name="memory_available">Available space</string>
-    <!-- SD card & phone storage settings screen heading -->
+    <!-- SD card & phone storage settings screen heading.  The total amount of storage space for some storage partition.  For example, this is listed under both the "Internal phone storage" section and the "SD card" section -->
     <string name="memory_size">Total space</string>
-    <!-- SD card & phone storage settings screen heading -->
+    <!-- SD card & phone storage settings item title that will result in the phone unmounting the SD card.  This will be done before the user phyiscally removes the SD card from the phone.  Kind of like the "Safely remove" on some operating systems.   -->
     <string name="sd_eject">Unmount/eject SD card</string>
+    <!-- SD card status when it is not available status -->
     <string name="sd_unavailable">Unavailable</string>
+    <!-- SD card status when it is mounted as read only  -->
     <string name="read_only">\u0020(Read-only)</string>
-    <string name="mass_storage">Use for USB storage</string>
     <!-- Phone info screen, section titles: -->
     <string name="battery_status_title">Battery status</string>
+    <!-- Phone info screen, section titles: -->
     <string name="battery_level_title">Battery level</string>
 
     <!-- APN Settings -->
@@ -791,38 +1196,53 @@
     <string name="apn_edit">Edit access point</string>
     <!-- Edit access point label summary text when no value has been set -->
     <string name="apn_not_set">&lt;Not set&gt;</string>
-    <!-- Edit access point labels: -->
+    <!-- Edit access point labels: A label the user can give to the APN to allow him to differentiate it from the others -->
     <string name="apn_name">Name</string>
+    <!-- Edit access point labels: The actual access point name-->
     <string name="apn_apn">APN</string>
+    <!-- Edit access point labels: The addess of the proxy to use for this APN -->
     <string name="apn_http_proxy">Proxy</string>
+    <!-- Edit access point labels: The port number of the proxy to use for this APN -->
     <string name="apn_http_port">Port</string>
+    <!-- Edit access point labels: The username that will be used when conencting to this APN-->
     <string name="apn_user">Username</string>
+    <!-- Edit access point labels: The password that will be used when connecting to this APN -->
     <string name="apn_password">Password</string>
+    <!-- Edit access point labels: The server address to conenct to for this APN -->
     <string name="apn_server">Server</string>
+    <!-- Edit access point labels: -->
     <string name="apn_mmsc">MMSC</string>
+    <!-- Edit access point labels: The proxy to use for MMS (multimedia messages)-->
     <string name="apn_mms_proxy">MMS proxy</string>
+    <!-- Edit access point labels: The port on the proxy used for MMS-->
     <string name="apn_mms_port">MMS port</string>
+    <!-- Edit access point labels: -->
     <string name="apn_mcc">MCC</string>
+    <!-- Edit access point labels: -->
     <string name="apn_mnc">MNC</string>
+    <!-- Edit access point labels: The type of APN -->
     <string name="apn_type">APN type</string>
-    <!-- Edit access point screen menu option -->
+    <!-- Edit access point screen menu option to delete this APN -->
     <string name="menu_delete">Delete APN</string>
-    <!-- APNs screen menu option -->
+    <!-- APNs screen menu option to create a brand spanking new APN -->
     <string name="menu_new">New APN</string>
-    <!-- Edit access point screen menu option -->
+    <!-- Edit access point screen menu option to save the user's changes for this APN to the persistent storage -->
     <string name="menu_save">Save</string>
-    <!-- Edit access point screen menu option -->
+    <!-- Edit access point screen menu option to discard the user's changes for this APN -->
     <string name="menu_cancel">Discard</string>
     <!-- APN error dialog title -->
     <string name="error_title">Attention</string>
     <!-- APN error dialog messages: -->
     <string name="error_name_empty">The Name field cannot be empty.</string>
+    <!-- APN error dialog messages: -->
     <string name="error_apn_empty">The APN cannot be empty.</string>
+    <!-- APN error dialog messages: -->
     <string name="error_mcc_not3">MCC field must be 3 digits.</string>
+    <!-- APN error dialog messages: -->
     <string name="error_mnc_not23">MNC field must be 2 or 3 digits.</string>
 
     <!-- Master Clear -->
-    <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading. Also screen title after user selects this setting -->
+    <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading -->
     <string name="master_clear_title">Factory data reset</string>
     <!-- SD card & phone storage settings screen, setting option summary text under Internal phone storage heading -->
     <string name="master_clear_summary">Erases all data on phone</string>
@@ -834,58 +1254,62 @@
     <string name="master_clear_final_desc">Reset phone, erasing all your data and applications? Action cannot be reversed!</string>
     <!-- SD card & phone storage settings screen, button on screen after user selects Reset phone button -->
     <string name="master_clear_final_button_text">Erase everything</string>
-    <string name="master_clear_gesture_prompt">Please draw your unlock pattern:</string>
+    <!-- Message to draw an unlock pattern before clearing the device -->
+    <string name="master_clear_gesture_prompt">Draw your unlock pattern</string>
+    <!-- Explanation of drawing unlockp attern to reset phone -->
     <string name="master_clear_gesture_explanation">You must draw your unlock pattern to confirm a phone reset.</string>
+    <!-- Master clear failed message -->
     <string name="master_clear_failed">No reset was performed because the System Clear service is not available.</string>
 
-    <!-- Main settings screen, Call settings title -->
+    <!-- Main settings screen, Call settings title for item to go into the call settings -->
     <string name="call_settings_title">Call settings</string>
-    <!-- Main settings screen, Call settings message -->
+    <!-- Main settings screen, Call settings summary for item to go into call settings -->
     <string name="call_settings_summary">Set up voicemail, call forwarding, call waiting, caller ID</string>
 
-    <!-- Network settings -->
+    <!-- Wireless controls, item title to go into the network settings -->
     <string name="network_settings_title">Mobile networks</string>
+    <!-- Wireless controls, the item summary for the user to go into the network settings -->
     <string name="network_settings_summary">Set options for roaming, networks, APNs</string>
 
-    <!-- Location Source Settings -->
-    <string name="location_source">My Location</string>
-    <string name="location_source_summary">Select sources for determining location</string>
-    <!-- Security & location settings screen, section header -->
+    <!-- Security & location settings screen, section header for settings relating to location -->
     <string name="location_title">My Location sources</string>
-    <!-- Security & location settings screen, setting check box label -->
+    <!-- Security & location settings screen, setting check box label if the user wants to use wireless network-based positioning (cell ID, wifi, etc.) -->
     <string name="location_network_based">Use wireless networks</string>
     <!-- Security & location settings screen, setting summary when Use wireless networks check box is clear -->
     <string name="location_networks_disabled">See location in applications (such as Maps) using wireless networks</string>
     <!-- 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 -->
+    <!-- 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_disabled">Locate to street-level (requires more battery plus view of sky)</string>
+    <!-- Do not translate. -->
     <string name="location_label">Location provider:</string>
+    <!-- Do not translate. -->
     <string name="location_status">Status:</string>
 
     <!-- About -->
-    <!-- Main settings screen, setting option name -->
+    <!-- Main settings screen, setting title for the user to go into the About phone screen -->
     <string name="about_settings">About phone</string>
-    <!-- Main settings screen, setting summary -->
+    <!-- Main settings screen, setting summary for the user to go into the About phone screen-->
     <string name="about_settings_summary">View legal info, phone status, software version</string>
-    <!-- About phone settings screen, setting option name -->
+    <!-- About phone settings screen, setting option name to go to dialog that shows legal info -->
     <string name="legal_information">Legal information</string>
-    <string name="legal_information_summary">View terms &amp; conditions</string>
-    <!-- About phone settings screen, setting option name -->
+    <!-- About phone settings screen, setting option name to see a list of contributors -->
     <string name="contributors_title">Contributors</string>
-    <string name="team_title">Team</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched -->
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- About phone settings screen, setting option name to see copyright-related info -->
     <string name="copyright_title">Copyright</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched -->
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- About phone settings screen, setting option name to see licensing info -->
     <string name="license_title">License</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched -->
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- About phone settings screen, setting option name to see terms and conditions -->
     <string name="terms_title">Terms and conditions</string>
 
-    <!-- Title for actual Settings license activity. -->
+    <!-- Title for actual Settings license activity. --> <skip />
     <!-- About phone settings, Legal information setting option name and title of dialog box holding license info -->
     <string name="settings_license_activity_title">Open source licenses</string>
     <!-- About phone settings screen, Open source license dialog message when licenses cannot be loaded -->
@@ -898,15 +1322,17 @@
     <string name="lock_settings_title">Screen unlock pattern</string>
     <!-- Security & location settings screen, setting option name -->
     <string name="lockpattern_change_lock_pattern_label">Change unlock pattern</string>
-    <!-- Security & location settings screen, change unlock pattern screen instruction -->
-    <string name="lockpattern_need_to_unlock">Confirm saved pattern:</string>
+    <!-- Security & location settings screen, change unlock pattern screen instruction when the user chooses "Change unlock pattern".  We first ask the user toe nter the current pattern, and this is the message seen -->
+    <string name="lockpattern_need_to_unlock">Confirm saved pattern</string>
+    <!-- Do not translate. -->
     <string name="lockpattern_need_to_unlock_footer"></string>
     <!-- Security & location settings screen, change unlock pattern screen instruction if user draws incorrect pattern -->
     <string name="lockpattern_need_to_unlock_wrong">Sorry, try again:</string>
+    <!-- Do not translate. -->
     <string name="lockpattern_need_to_unlock_wrong_footer"></string>
-    <!-- Security & location settings screen, change unlock pattern screen instruction on top of screen -->
-    <string name="lockpattern_recording_intro_header">Draw an unlock pattern:</string>
-    <!-- Security & location settings screen, change unlock pattern screen hint on bottom of screen -->
+    <!-- Security & location settings screen, change unlock pattern screen instruction on top of screen.  This si when they are supposed to draw a new unlock pattern (for example, if they are changing their unlock patterns)..-->
+    <string name="lockpattern_recording_intro_header">Draw an unlock pattern</string>
+    <!-- Security & location settings screen, change unlock pattern screen hint on bottom of screen.  We are telling them to press the menu button to see more options or help. -->
     <string name="lockpattern_recording_intro_footer">Press Menu for help.</string>
     <!-- Security & location settings screen, change unlock pattern screen instruction on top of screen while drawing pattern -->
     <string name="lockpattern_recording_inprogress">Release finger when done.</string>
@@ -917,33 +1343,39 @@
     <!-- Security & location settings screen, change unlock pattern screen instruction on top of screen to confirm pattern -->
     <string name="lockpattern_need_to_confirm">Draw pattern again to confirm:</string>
     <string name="lockpattern_pattern_confirmed_header">Your new unlock pattern:</string>
-    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen -->
+    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen.  After they draw a pattern and release their finger, we display the pattern so they remember.  When they are ready to draw it once again to confirm it, they press this button. -->
     <string name="lockpattern_confirm_button_text">Confirm</string>
+    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen.  After they draw a pattern and release their finger, we display the pattern so they remember.  If they are nto satisfied with this pattern, they click this button to redraw the pattern. -->
     <string name="lockpattern_restart_button_text">Redraw</string>
-    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen -->
+    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen. If they are supposed to enter their current pattern before being able to draw another one, and they screw up, they hit this button to try again -->
     <string name="lockpattern_retry_button_text">Retry</string>
-    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen -->
+    <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen. Once they draw a new pattern and confirm it by drawing it again, they press this button to exit -->
     <string name="lockpattern_continue_button_text">Continue</string>
+    <!-- Security & location settings screen, unlock screen activity title -->
     <string name="lockpattern_settings_title">Unlock pattern</string>
-    <!-- Security & location settings screen, setting check box title -->
+    <!-- Security & location settings screen, setting check box title if the unlock pattern MUST be drawn everytime they turn on the screen -->
     <string name="lockpattern_settings_enable_title">Require pattern</string>
-    <!-- Security & location settings screen, setting summary -->
+    <!-- Security & location settings screen, setting summary for the checkbox "Require pattern" -->
     <string name="lockpattern_settings_enable_summary">Must draw pattern to unlock screen</string>
-    <!-- Security & location settings screen, setting check box title -->
+    <!-- Security & location settings screen, setting check box title. This setting controls whether a visible green line is drawn as the user moves his finger around while drawing the unlock pattern.  If checked, this line is drawn.  If unchecked, there is nothing drawn so the user does not reveal his pattern while he unlocks the phone.-->
     <string name="lockpattern_settings_enable_visible_pattern_title">Use visible pattern</string>
+    <!-- Security & location settings screen, setting check box title. This setting controls whether tactile feedback will be produced when the user draws the pattern.-->
+    <string name="lockpattern_settings_enable_tactile_feedback_title">Use tactile feedback</string>
     <!-- Security & location settings screen, setting option name when user has never set an unlock pattern -->
     <string name="lockpattern_settings_choose_lock_pattern">Set unlock pattern</string>
-    <!-- Security & location settings screen, setting option name when user has previously set an unlock pattern -->
+    <!-- Security & location settings screen, setting option name when user has previously set an unlock pattern and wants to change to a new pattern -->
     <string name="lockpattern_settings_change_lock_pattern">Change unlock pattern</string>
-    <string name="lockpattern_settings_help_how_to_record">How to draw an unlock pattern:</string>
+    <!-- Security & location settings screen, the help instructions (an animation) caption -->
+    <string name="lockpattern_settings_help_how_to_record">How to draw an unlock pattern</string>
     <!-- Security & location settings screen, change unlock pattern screen instruction on top of screen after too many incorrect attempts -->
     <string name="lockpattern_too_many_failed_confirmation_attempts_header">Too many incorrect attempts!</string>
     <!-- Security & location settings screen, change unlock pattern screen countdown hint on bottom of screen after too many incorrect attempts -->
     <string name="lockpattern_too_many_failed_confirmation_attempts_footer">Try again in <xliff:g id="number">%d</xliff:g> seconds.</string>
 
-    <!-- ChooseLockPatternTutorial -->
-    <!-- ChooseLockPatternTutorial, button labels: -->
+    <!-- ChooseLockPatternTutorial --> <skip />
+    <!-- ChooseLockPatternTutorial, button labels: This is to cancel the tutorial -->
     <string name="skip_button_label">Cancel</string>
+    <!-- ChooseLockPatternTutorial, button labels: Continue to the next page of the tutorial -->
     <string name="next_button_label">Next</string>
     <!-- ChooseLockPatternTutorial, tutorial screen title -->
     <string name="lock_title">Securing your phone</string>
@@ -956,149 +1388,185 @@
         \n<font height="3">\n</font>To leave your phone unprotected, select \u201CCancel\u201D.</font>
     </string>    
         
-    <!-- ChooseLockPatternExample -->
-    <!-- ChooseLockPatternExample, screen title -->
+    <!-- ChooseLockPatternExample --> <skip />
+    <!-- ChooseLockPatternExample, screen title that shows an example pattern -->
     <string name="lock_example_title">Example pattern</string>
-    <!-- ChooseLockPatternExample, screen hint text at bottom of screen. -->
+    <!-- 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.
     </string>
-    <!-- ChooseLockPatternExample, screen instruction text at top of screen. -->
-    <string name="set_lock_pattern_label">Draw your unlock pattern:</string>
 
-    <!-- Applications Settings -->
-    <!-- Applications settings screen, setting option name -->
+    <!-- Applications Settings --> <skip />
+    <!-- Applications settings screen, setting option name for the user to go to the screen to manage installed applications  -->
     <string name="manageapplications_settings_title">Manage applications</string>
-    <!-- Applications settings title, on main settings screen -->
+    <!-- Applications settings title, on main settings screen. If clicked, the user is taken to a settings screen full of application settings-->
     <string name="applications_settings">Applications</string>
-    <!-- Applications settings summary, on main settings screen -->
+    <!-- Applications settings summary, on main settings screen. The summary for the "Applications" item on the main settings screen. Describes what settings are accessible from the "Applications" screen. -->
     <string name="applications_settings_summary">Manage applications, set up quick launch shortcuts</string>
-    <!-- Applications settings screen heading-->
+    <!-- Applications settings screen heading. The header for the Application settings screen. -->
     <string name="applications_settings_header">Application settings</string>
-    <!-- Applications settings screen, setting check box title -->
+    <!-- Applications settings screen, setting check box title. If checked, the system allows installation of applications that are downloaded from random places, such as web sites.  -->
     <string name="install_applications">Unknown sources</string>
-    <!-- Applications settings screen, setting check box summary -->
+    <!-- Applications settings screen, setting check box summary.  This is the summary for "Unknown sources" checkbox  -->
     <string name="install_unknown_applications">Allow install of non-Market applications</string>
-    <!-- Applications settings screen, message text of alert that appears if user selects the "Unknown applications" check box -->
+    <!-- Applications settings screen, message text of alert that appears if user selects the "Unknown sources" check box -->
     <string name="install_all_warning">Your phone and personal data are more vulnerable to attack by applications
  from unknown sources. You agree that you are solely responsible for any
  damage to your phone or loss of data that may result from using
  these applications.</string>
-    <!-- Manage applications settings screen, screen title -->
+    <!-- Manage applications settings screen, screen title. This screen is for managing installed apps, and is a list of apps. -->
     <string name="manage_applications_title">Manage applications</string>
-    <!-- Manage applications, individual application info screen title -->
+    <!-- Manage applications, individual application info screen title. For example, if they click on "Browser" in "Manage applications", the title of the next screen will be this -->
     <string name="application_info_label">Application info</string>
-    <!-- Manage applications, individual application info heading -->
+    <!-- Manage applications, individual application info screen, section heading for stuff relating to an app's storage settings. -->
     <string name="storage_label">Storage</string>
-    <!-- Manage applications, individual application info heading -->
+    <!-- Manage applications, individual application info screen,  heading for settings related to controlling whether this app is the default for some actions -->
     <string name="auto_launch_label">Launch by default</string>
-    <!-- Manage applications, individual application info heading -->
+    <!-- Manage applications, individual application info screen, heading for settings related to the app's permissions. for example, it may list all the permissions the app has. -->
     <string name="permissions_label">Permissions</string>
-    <!-- Manage applications, individual application info label under Storage heading-->
+    <!-- Manage applications, individual application info screen,label under Storage heading.  The total storage space taken up by this app. -->
     <string name="total_size_label">Total</string>
-    <!-- Manage applications, individual application info label under Storage heading-->
+    <!-- Manage applications, individual application info screen, label under Storage heading. The amount of space taken up by the application itself (for example, the java compield files and things like that) -->
     <string name="application_size_label">Application</string>
-    <!-- Manage applications, individual application info label under Storage heading-->
+    <!-- Manage applications, individual application info screen, label under Storage heading.  The amount of sapce taken up by the app's data (for example, downloaded emails or something like that) -->
     <string name="data_size_label">Data</string>
-    <!-- Manage applications, individual application button label under Storage heading-->
+    <!-- Manage applications, individual application info screen, button label under Storage heading. Button to remove the application from the system. -->
     <string name="uninstall_text">Uninstall</string>
-    <!-- Manage applications, individual application button label under Storage heading-->
+    <!-- Manage applications, individual application info screen, button label under Storage heading. Button to clear all data associated with tis app (for exampel, remove all cached emails for an Email app) -->
     <string name="clear_user_data_text">Clear data</string>
-    <!-- Manage applications, individual application screen, text under Launch by default heading -->
+    <!-- Manage applications, individual application info screen, screen, message text under Launch by default heading. This is present if the app is set as a default for some actions. -->
     <string name="auto_launch_enable_text">You have selected to launch this application by default for some actions.</string>
-    <!-- Manage applications, individual application screen, text under Launch by default heading -->
+    <!-- Manage applications, individual application screen, text under Launch by default heading if the app is NOT a default for actions -->
     <string name="auto_launch_disable_text">No defaults set.</string>
-    <!-- Manage applications, individual application button label under Launch by default heading-->
+    <!-- Manage applications, individual application screen, button label under Launch by default heading.  This is used to clear any default actions that may be assigned to this app.  -->
     <string name="clear_activities">Clear defaults</string>
-    <!-- Unknown context -->
+    <!-- Manage apps, individual app screen, substituted for the application's label when the app's label CAN NOT be determined.-->
     <string name="unknown">Unknown</string>
-    <!-- Manage applications screen, menu item -->
-    <string name="sort_order_alpha">Sort alphabetically</string>
-    <!-- Manage applications screen, menu item -->
-    <string name="sort_order_size">Sort by size (descending)</string>
+    <!-- Manage applications screen, menu item.  Sorts all of the apps in the list alphabetically. -->
+    <string name="sort_order_alpha">Sort</string>
+    <!-- Manage applications screen, menu item. Sorts all of the apps in the list based on their file size.  This is used to uninstall when space is getting low. -->
+    <string name="sort_order_size">Sort by size</string>
+    <!-- Manage applications screen, individual app screen, button label when the user wants to manage the space taken up by an app. -->
     <string name="manage_space_text">Manage space</string>
-    <string name="computing_size">Computing application sizes\u2026</string>
+    <!-- Text for menu option in ManageApps screen to display all installed
+    applications -->
+    <string name="filter_apps_all">All</string>
+    <!-- Text for menu option in ManageApps screen to display third party 
+    applications only -->
+    <string name="filter_apps_third_party">Third-party</string>
+    <!-- Text for menu option in ManageApps screen to display list of running
+    packages only. -->
+    <string name="filter_apps_running">Running</string>
+    <string name="loading">Loading\u2026</string>
+    <!-- Manage app screen, shown when the activity is busy recomputing the size of each app -->
     <string name="recompute_size">Recomputing size\u2026</string>
-    <!-- Manage applications, individual application confirmation dialog title. Displays when user selects to "Clear data". -->
+    <!-- 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 confirmation dialog message. Displays when user selects to "Clear data". -->
+    <!-- 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>
-    <!-- Manage applications, individual application confirmation dialog button. Displays when user selects to "Clear data". -->
+    <!-- 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 confirmation dialog button. Displays when user selects to "Clear data". -->
+    <!-- Manage applications, individual application screen, confirmation dialog button. Displays when user selects to "Clear data". -->
     <string name="dlg_cancel">Cancel</string>
-    <!-- Manage applications, individual application dialog box title. -->
+    <!-- Manage applications, individual application dialog box title. Shown when the user somehow got into a state where it wants to manage some app that isn't found. -->
     <string name="app_not_found_dlg_title">Application not found</string>
-    <!-- Manage applications, individual application dialog box message. -->
+    <!-- Manage applications, individual application dialog box message. Shown when the user somehow got into a state where it wants to manage some app that isn't found. -->
     <string name="app_not_found_dlg_text"> The application was not
 found in the list of installed applications.</string>
-    <string name="uninstall_failed">Unable to uninstall application.</string>
+    <!-- Manage applications, individual application dialog box message. Shown when there was an error trying to clear the data. -->
     <string name="clear_data_failed">Unable to clear application data.</string>
-    <string name="b_text">B</string>
-    <string name="kb_text">KB</string>
-    <string name="mb_text">MB</string>
-    <!-- Manage applications, individual application info screen, text that appears under the "Permissions" heading. -->
-    <string name="security_settings_desc">Here\'s what this application can access on your phone:</string>
+    <!-- Manage applications, individual application info screen, text that appears under the "Permissions" heading. This describes the permissions that the application has. -->
+    <string name="security_settings_desc">This application can access the following on your phone:</string>
+    <string name="computing_size">Still 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>
+    <!-- Manage applications, Header name used for cache information -->
+    <string name="cache_header_label">Cache</string>
+    <!-- Manage applications, text label for button -->
+    <string name="clear_cache_btn_text">Clear cache</string>
+    <!-- Manage applications, label that appears next to the cache size -->
+    <string name="cache_size_label">Cache</string>
 
-    <!-- Language Settings -->
-    <!-- Title of setting on main settings screen -->
-    <string name="language_settings">Text</string>
-    <!-- Summary of setting on main settings screen -->
-    <string name="language_settings_summary">Select text auto-correction options</string>
-    <!-- On Text & language settings screen, heading -->
-    <string name="language_category">Language setting</string>
-    <!-- On Text & language settings screen, heading -->
+    <!-- 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 &amp; text</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. -->
+    <string name="language_category">Locale setting</string>
+    <!-- On Text & language settings screen, heading. Inside the "Locale & text" screen, this is the header for settings that relate to text (autotext, autoreplace, autocapitalization). -->
     <string name="text_category">Text settings</string>
-    <!-- On Text & language settings screen, setting option name -->
-    <string name="phone_language">Select language</string>
-    <!-- On Text & language settings screen, setting option name -->
+    <!-- On Text & language settings screen, setting option name. title of the setting to take the user to a screen to select the locale. -->
+    <string name="phone_language">Select locale</string>
+    <!-- On Text & language settings screen, setting option name. title of the setting to enable autoreplace of entered text. auto replace is a feature that will automatically correct mistyped words. -->
     <string name="auto_replace">Auto-replace</string>
-    <!-- On Text & language settings screen, setting summary -->
+    <!-- On Text & language settings screen, setting summary.  This is the summary for the "Auto-replace" setting. -->
     <string name="auto_replace_summary">Correct mistyped words</string>
-    <!-- On Text & language settings screen, setting option name -->
+    <!-- On Text & language settings screen, setting option name.  title of the setting to enable autocapitalization of entered text.  for example, after the user finishes a sentence, the next letter he types will automatically be capitalizated. -->
     <string name="auto_caps">Auto-cap</string>
-    <!-- On Text & language settings screen, setting summary -->
+    <!-- On Text & language settings screen, setting summary. Summary for the Auto-cap setting. -->
     <string name="auto_caps_summary">Capitalize first letter in sentences</string>
-    <!-- On Text & language settings screen, setting option name -->
+    <!-- On Text & language settings screen, setting option name. title of the setting to enable automatic punctuation of entered text.  for example, it will change an entered "youre" to "you're". -->
     <string name="auto_punctuate">Auto-punctuate</string>
-    <!-- On Text & language settings screen, setting summary -->
+    <!-- On Text & language settings screen, setting summary for the Auto-punctuate setting. -->
     <string name="auto_punctuate_summary">Press Space key twice to insert \u0022.\u0022</string>
-    <!-- On Security & location settings screen, setting check box name -->
+    <!-- On Security & location settings screen, setting check box name. Title of the checkbox to set whether password edit fields will show the most recent character typed and then hide it, or just hide it right away.  By hide, I mean mask it out. -->
     <string name="show_password">Visible passwords</string>
-    <!-- On Security & location settings screen, setting check box summary -->
+    <!-- On Security & location settings screen, setting check box summary. Summary for the visible passwords setting. -->
     <string name="show_password_summary">Show password as you type</string>
 
-    <!-- Testing -->
+    <!-- This is for diagnostics screen. The title of a screen with various items realted to launching screens that will giev the user info. For example, it contains "Phone information" and "Battery information" -->
     <string name="testing">Testing</string>
+    <!-- In the Testing screen.  The item title of the activity that shows a bunch of phone-related information.  -->
     <string name="testing_phone_info">Phone information</string>
+    <!-- In the Testing screen. The item title of the activity that shows a bunch of battery-related information.  -->
     <string name="testing_battery_info">Battery information</string>
+    <!-- Do not translate. In the Testing screen. The item title of the activity that shows a bunch of SIM-related operations.  -->
     <string name="testing_sim_toolkit">SIM toolkit</string>
 
-    <!-- Quick launch settings -->
+    <!-- The title of the item to go into the Quick launch settings. -->
     <string name="quick_launch_title">Quick launch</string>
+    <!-- The summary of the item to go into the Quick launch settings. This is a description of what Quick launch offers. -->
     <string name="quick_launch_summary">Set keyboard shortcuts to launch applications</string>
-    <!-- On the Quick launch settings screen, title for letters that are not assigned. -->
+    <!-- On the Quick launch settings screen, title of the item for shortcut letters that are not assigned to an application yet. Quick launch is assigning a global shortcut to launch a specific app. -->
     <string name="quick_launch_assign_application">Assign application</string>
-    <!-- On the Quick launch settings screen, summary text for letters that are not assigned. -->
+    <!-- On the Quick launch settings screen, summary text for the item of letters that are not assigned. See the quick launch "Assign application" for a description of quick launch -->
     <string name="quick_launch_no_shortcut">No shortcut</string>
-    <!-- On the Quick launch settings screen, summary text under each assigned letter. -->
+    <!-- On the Quick launch settings screen, summary text under the item for each assigned letter.  -->
     <string name="quick_launch_shortcut">Search + <xliff:g id="shortcut_letter">%1$s</xliff:g></string>
-    <!-- On the Quick launch settings screen, title of "Clear shortcut" confirmation dialog. -->
+    <!-- On the Quick launch settings screen, title of "Clear shortcut" confirmation dialog. This is reached by longpressing an item for a shortcut letter.  This allows the user to clear the assigned applicatino for that shortcut letter. -->
     <string name="quick_launch_clear_dialog_title">Clear</string>
-    <!-- On the Quick launch settings screen, message in the "Clear shortcut" confirmation dialog. -->
+    <!-- On the Quick launch settings screen, message in the "Clear shortcut" confirmation dialog.  See the title for this dialog for more info. -->
     <string name="quick_launch_clear_dialog_message">Your shortcut for <xliff:g id="shortcut_letter">%1$s</xliff:g> (<xliff:g id="application_name">%2$s</xliff:g>) will be cleared.</string>
-    <!-- Clear dialog box button labels: -->
+    <!-- Clear dialog for quick launch setting box button labels: -->
     <string name="quick_launch_clear_ok_button">OK</string>
+    <!-- Clear dialog for quick launch setting box button labels: -->
     <string name="quick_launch_clear_cancel_button">Cancel</string>
+    <!-- Quick launch screen, when assigning an app to a shortcut, this menu item to show a list of all applications.  -->
     <string name="quick_launch_display_mode_applications">Applications</string>
+    <!-- Quick launch screen, when assigning an app to a shortcut, this menu item to show a list of all shortcutable applications -->
     <string name="quick_launch_display_mode_shortcuts">Shortcuts</string>
 
-    <!-- Development Settings -->
+    <!-- Input methods Settings -->
+    <string name="input_methods_settings_title">Text input</string>
+    <string name="input_methods_settings_summary">Manage text input options</string>
+
+    <!-- Development Settings.  the title for the item to take the user to Development settings.  Development settings are settings meant for application developers.  -->
     <string name="development_settings_title">Development</string>
-    <string name="development_settings_summary">Settings for application development</string>
+    <!-- Development Settings summary.  The summary of the item to take the user to Development settings.  Development settings are settings meant for application developers. -->
+    <string name="development_settings_summary">Set options for application development</string>
+    <!-- Setting checkbox title for Whether to enable USB debugging support on the phone. -->
     <string name="enable_adb">USB debugging</string>
+    <!-- Setting checkbox summary for Whether to enable USB debugging support on the phone -->
     <string name="enable_adb_summary">Debug mode when USB is connected</string>
+    <!-- Setting Checkbox title whether to keep the screen on when plugged in to a power source -->
     <string name="keep_screen_on">Stay awake</string>
+    <!-- setting Checkbox summary whether to keep the screen on when plugged in  -->
     <string name="keep_screen_on_summary">Screen will never sleep while charging</string>
+    <!-- Setting Checkbox title whether to allow mock locations -->
+    <string name="allow_mock_location">Allow mock locations</string>
+    <!-- setting Checkbox summary whether to allow mock locations  -->
+    <string name="allow_mock_location_summary">Allow mock locations</string>
 
 </resources>
diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml
index 832adb2..c4f2bd0 100644
--- a/res/xml/application_settings.xml
+++ b/res/xml/application_settings.xml
@@ -30,6 +30,7 @@
             android:persistent="false" />
         
     <PreferenceScreen
+            android:key="quick_launch"
             android:title="@string/quick_launch_title"
             android:summary="@string/quick_launch_summary">
         <intent android:action="android.intent.action.MAIN"
diff --git a/res/xml/bluetooth_device_advanced.xml b/res/xml/bluetooth_device_advanced.xml
new file mode 100644
index 0000000..5611595
--- /dev/null
+++ b/res/xml/bluetooth_device_advanced.xml
@@ -0,0 +1,36 @@
+<?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.
+-->
+
+<PreferenceScreen
+        xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <PreferenceCategory
+            android:key="title" />
+            
+    <CheckBoxPreference
+            android:key="online_mode"
+            android:title="@string/bluetooth_device_advanced_online_mode_title"
+            android:persistent="false" />
+                
+    <PreferenceCategory
+            android:key="profile_container"
+            android:title="@string/bluetooth_device_advanced_profile_header_title">
+
+        <!-- Profile checkboxes will be added here programmatically. -->
+        
+    </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_settings.xml b/res/xml/bluetooth_settings.xml
index 83fb142..8449343 100644
--- a/res/xml/bluetooth_settings.xml
+++ b/res/xml/bluetooth_settings.xml
@@ -14,33 +14,43 @@
      limitations under the License.
 -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android">
 
     <PreferenceCategory
-        android:title="@string/bluetooth_settings"/>
+        android:title="@string/bluetooth_settings" />
 
-    <CheckBoxPreference android:key="bt_checkbox"
-        android:title="@string/bluetooth" 
-        android:summaryOff="@string/bluetooth_disabled"
-        android:summaryOn="@string/bluetooth_enabled"
-        />
+    <CheckBoxPreference
+        android:key="bt_checkbox"
+        android:title="@string/bluetooth"
+        android:summary="@string/bluetooth_quick_toggle_summary" />
 
-    <CheckBoxPreference android:key="bt_visibility"
-        android:title="@string/bluetooth_visibility" 
-        android:dependency="bt_checkbox"
-        android:summaryOn="@string/bluetooth_is_discoverable"
-        android:summaryOff="@string/bluetooth_not_discoverable"
-        android:persistent="false"
-        />
-        
-    <EditTextPreference android:key="bt_name"
+    <com.android.settings.bluetooth.BluetoothNamePreference
+        android:key="bt_name"
         android:title="@string/bluetooth_device_name"
         android:summary="@string/bluetooth_name_not_set"
         android:dialogTitle="@string/bluetooth_device_name"
         android:dependency="bt_checkbox"
-        android:singleLine="true"/>
-    <com.android.settings.ProgressCategory 
-        android:key="bt_device_list" 
+        android:persistent="false"
+        android:singleLine="true" />
+
+    <CheckBoxPreference
+        android:key="bt_discoverable"
+        android:title="@string/bluetooth_visibility"
+        android:dependency="bt_checkbox"
+        android:summaryOn="@string/bluetooth_is_discoverable"
+        android:summaryOff="@string/bluetooth_not_discoverable"
+        android:persistent="false" />
+
+    <Preference
+        android:key="bt_scan"
+        android:dependency="bt_checkbox"
+        android:title="@string/bluetooth_preference_scan_title" />
+
+    <com.android.settings.ProgressCategory
+        android:key="bt_device_list"
         android:title="@string/bluetooth_devices"
-        android:dependency="bt_checkbox"/>
+        android:dependency="bt_checkbox"
+        android:orderingFromXml="false" />
+
 </PreferenceScreen>
diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml
index 641030f..47e047a 100644
--- a/res/xml/date_time_prefs.xml
+++ b/res/xml/date_time_prefs.xml
@@ -35,8 +35,8 @@
         />
     <CheckBoxPreference android:key="24 hour" 
         android:title="@string/date_time_24hour"
-        android:summaryOn="13:00"
-        android:summaryOff="1:00 pm"/>
+        android:summaryOn="@string/date_time_24_hour_sample"
+        android:summaryOff="@string/date_time_12_hour_sample"/>
     <ListPreference
         android:key="date_format"
         android:title="@string/date_time_date_format" 
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index c64f07a..286497e 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -29,4 +29,9 @@
         android:title="@string/keep_screen_on" 
         android:summary="@string/keep_screen_on_summary"/>
 
+    <CheckBoxPreference 
+        android:key="allow_mock_location" 
+        android:title="@string/allow_mock_location" 
+        android:summary="@string/allow_mock_location_summary"/>
+
 </PreferenceScreen>
diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml
index c39d51e..07716da 100644
--- a/res/xml/device_info_settings.xml
+++ b/res/xml/device_info_settings.xml
@@ -17,6 +17,13 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
     <PreferenceCategory android:title="@string/about_settings">
 
+        <!-- System update settings - launches activity -->
+        <PreferenceScreen android:key="system_update_settings"
+                android:title="@string/system_update_settings_list_item_title" 
+                android:summary="@string/system_update_settings_list_item_summary">
+            <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS" />
+        </PreferenceScreen>
+        
         <!-- Device status - launches activity -->
         <PreferenceScreen android:key="status_info"
                 android:title="@string/device_status" 
diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml
index da4cdca..8fc75cd 100644
--- a/res/xml/device_info_status.xml
+++ b/res/xml/device_info_status.xml
@@ -15,7 +15,7 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-    <PreferenceCategory android:title="@string/device_status"/>
+    <PreferenceCategory android:title="@string/device_status_activity_title"/>
     
     <Preference android:key="battery_status" 
         style="?android:attr/preferenceInformationStyle" 
diff --git a/res/xml/input_methods_prefs.xml b/res/xml/input_methods_prefs.xml
new file mode 100644
index 0000000..b8a415f
--- /dev/null
+++ b/res/xml/input_methods_prefs.xml
@@ -0,0 +1,23 @@
+<?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.
+ */
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    <PreferenceCategory
+        android:title="@string/input_methods_settings_title" />
+
+</PreferenceScreen>
diff --git a/res/xml/ip_settings.xml b/res/xml/ip_settings.xml
index 3c958a8..e5a2b95 100644
--- a/res/xml/ip_settings.xml
+++ b/res/xml/ip_settings.xml
@@ -17,6 +17,22 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
     <PreferenceCategory
+            android:title="@string/wifi_advanced_titlebar"
+            />
+
+    <ListPreference
+            android:key="num_channels"
+            android:title="@string/wifi_setting_num_channels_title"
+            android:summary="@string/wifi_setting_num_channels_summary"
+            android:persistent="false"
+            />
+    
+    <Preference android:key="mac_address" 
+        style="?android:attr/preferenceInformationStyle" 
+        android:title="@string/wifi_advanced_mac_address_title"
+        />
+    
+    <PreferenceCategory
             android:title="@string/wifi_ip_settings_titlebar"
             />
     
diff --git a/res/xml/language_settings.xml b/res/xml/language_settings.xml
index 5d3010c..78b61aa 100644
--- a/res/xml/language_settings.xml
+++ b/res/xml/language_settings.xml
@@ -21,11 +21,10 @@
             android:key="language_category"
             android:title="@string/language_category">
      <!--
-    <ListPreference
+        <ListPreference
             android:title="@string/phone_language"/>
       --> 
             
-    
         <PreferenceScreen
                 android:title="@string/phone_language">
             <intent android:action="android.intent.action.MAIN"
@@ -36,6 +35,13 @@
     
     <PreferenceCategory
             android:title="@string/text_category" />
+    <PreferenceScreen 
+            android:title="@string/input_methods_settings_title" 
+            android:summary="@string/input_methods_settings_summary">
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="com.android.settings"
+                android:targetClass="com.android.settings.InputMethodsSettings" />
+    </PreferenceScreen>
     <CheckBoxPreference
             android:key="auto_replace"
             android:title="@string/auto_replace"
diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_and_display_settings.xml
index 065f50b..709f89b 100644
--- a/res/xml/sound_and_display_settings.xml
+++ b/res/xml/sound_and_display_settings.xml
@@ -27,7 +27,7 @@
                 android:persistent="false"
                 android:disableDependentsState="true" />
     
-        <VolumePreference
+        <com.android.settings.RingerVolumePreference
                 android:key="ring_volume"
                 android:title="@string/ring_volume_title"
                 android:summary="@string/ring_volume_summary"
@@ -42,7 +42,6 @@
                 android:summary="@string/media_volume_summary"
                 android:dialogTitle="@string/media_volume_title"
                 android:persistent="false"
-                android:dependency="silent"
                 android:streamType="music" />
     
         <com.android.settings.DefaultRingtonePreference
@@ -90,6 +89,14 @@
 
     <PreferenceCategory
             android:title="@string/display_settings">
+
+        <CheckBoxPreference
+                android:key="animations"
+                android:title="@string/animations_title"
+                android:summaryOn="@string/animations_summary_on"
+                android:summaryOff="@string/animations_summary_off"
+                android:dependency="silent" />
+
     
         <com.android.settings.BrightnessPreference
                 android:key="brightness"
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 555a570..5cef5e9 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -51,7 +51,7 @@
                     <intent
                         android:action="android.intent.action.MAIN"
                         android:targetPackage="com.android.settings"
-                        android:targetClass="com.android.settings.BluetoothSettings" />
+                        android:targetClass="com.android.settings.bluetooth.BluetoothSettings" />
                 </PreferenceScreen>
 
                 <CheckBoxPreference
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index f47d679..0bd950b 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -100,9 +100,10 @@
      */
     private void onAirplaneModeChanged() {
         ServiceState serviceState = mPhoneStateReceiver.getServiceState();
-        boolean isPhoneOff = serviceState.getState() == ServiceState.STATE_POWER_OFF;
-        mCheckBoxPref.setChecked(isPhoneOff);
-        mCheckBoxPref.setSummary(R.string.airplane_mode_summary);            
+        boolean airplaneModeEnabled = serviceState.getState() == ServiceState.STATE_POWER_OFF;
+        mCheckBoxPref.setChecked(airplaneModeEnabled);
+        mCheckBoxPref.setSummary(airplaneModeEnabled ? null : 
+                mContext.getString(R.string.airplane_mode_summary));            
         mCheckBoxPref.setEnabled(true);
     }
     
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index 9b74eea..f1fa2ef 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -63,6 +63,8 @@
     private EditTextPreference mMmsProxy;
     private EditTextPreference mMmsPort;
     private EditTextPreference mApnType;
+    private String mCurMnc;
+    private String mCurMcc;
     
     private Uri mUri;
     private Cursor mCursor;
@@ -210,6 +212,8 @@
                     // Auto populate MNC and MCC for new entries, based on what SIM reports
                     mMcc.setText(mcc);
                     mMnc.setText(mnc);
+                    mCurMnc = mnc;
+                    mCurMcc = mcc;
                 }
             }
         }
@@ -338,6 +342,12 @@
         
         values.put(Telephony.Carriers.NUMERIC, mcc + mnc);
         
+        if (mCurMnc != null && mCurMcc != null) {
+            if (mCurMnc.equals(mnc) && mCurMcc.equals(mcc)) {
+                values.put(Telephony.Carriers.CURRENT, 1);
+            }
+        }
+        
         getContentResolver().update(mUri, values, null, null);
         
         return true;
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index ea13ee7..83efa3f 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -27,6 +27,7 @@
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceScreen;
 import android.provider.Telephony;
+import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuItem;
 
@@ -68,12 +69,16 @@
             String name = mCursor.getString(NAME_INDEX);
             String apn = mCursor.getString(APN_INDEX);
             
-            Preference pref = new Preference((Context) this);
-            pref.setKey(mCursor.getString(ID_INDEX));
-            pref.setTitle(name);
-            pref.setSummary(apn);
-            pref.setPersistent(false);
-            apnList.addPreference(pref);
+            if (name != null && apn != null && TextUtils.getTrimmedLength(name) > 0
+                    && TextUtils.getTrimmedLength(apn) > 0) {
+                Preference pref = new Preference((Context) this);
+                pref.setKey(mCursor.getString(ID_INDEX));
+                pref.setTitle(name);
+                pref.setSummary(apn);
+                pref.setPersistent(false);
+                apnList.addPreference(pref);
+            }
+            
             mCursor.moveToNext();
         }
     }
diff --git a/src/com/android/settings/ApplicationSettings.java b/src/com/android/settings/ApplicationSettings.java
index 0ee2789..85fe11f 100644
--- a/src/com/android/settings/ApplicationSettings.java
+++ b/src/com/android/settings/ApplicationSettings.java
@@ -18,6 +18,7 @@
 
 import android.app.AlertDialog;
 import android.content.DialogInterface;
+import android.content.res.Configuration;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
@@ -29,6 +30,7 @@
         DialogInterface.OnClickListener {
     
     private static final String KEY_TOGGLE_INSTALL_APPLICATIONS = "toggle_install_applications";
+    private static final String KEY_QUICK_LAUNCH = "quick_launch";
 
     private CheckBoxPreference mToggleAppInstallation;
     
@@ -42,7 +44,12 @@
 
         mToggleAppInstallation = (CheckBoxPreference) findPreference(KEY_TOGGLE_INSTALL_APPLICATIONS);
         mToggleAppInstallation.setChecked(isNonMarketAppsAllowed());
-        
+
+        if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_NOKEYS) {
+            // No hard keyboard, remove the setting for quick launch
+            Preference quickLaunchSetting = findPreference(KEY_QUICK_LAUNCH);
+            getPreferenceScreen().removePreference(quickLaunchSetting);
+        }
     }
 
     @Override
@@ -68,13 +75,13 @@
 
     private void setNonMarketAppsAllowed(boolean enabled) {
         // Change the system setting
-        Settings.System.putInt(getContentResolver(), Settings.System.INSTALL_NON_MARKET_APPS, 
+        Settings.Secure.putInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 
                                 enabled ? 1 : 0);
     }
     
     private boolean isNonMarketAppsAllowed() {
-            return Settings.System.getInt(getContentResolver(), 
-                                           Settings.System.INSTALL_NON_MARKET_APPS, 0) > 0;
+        return Settings.Secure.getInt(getContentResolver(), 
+                                      Settings.Secure.INSTALL_NON_MARKET_APPS, 0) > 0;
     }
 
     private void warnAppInstallation() {
diff --git a/src/com/android/settings/BatteryInfo.java b/src/com/android/settings/BatteryInfo.java
index ef60fc3..ed3e3e3 100644
--- a/src/com/android/settings/BatteryInfo.java
+++ b/src/com/android/settings/BatteryInfo.java
@@ -29,7 +29,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
-import android.pim.DateUtils;
+import android.text.format.DateUtils;
 import android.widget.TextView;
 
 import com.android.internal.app.IBatteryStats;
diff --git a/src/com/android/settings/BluetoothDataEntry.java b/src/com/android/settings/BluetoothDataEntry.java
deleted file mode 100644
index 1c7e0b6..0000000
--- a/src/com/android/settings/BluetoothDataEntry.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.settings;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-
-public class BluetoothDataEntry extends Activity implements OnKeyListener {
-    
-    private Bundle extras;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        setContentView(R.layout.bluetooth_data_entry);
-
-        mDataLabel = (TextView)findViewById(R.id.dataLabel);
-        mDataEntry = (EditText)findViewById(R.id.dataEntry);
-        mConfirmButton = (Button)findViewById(R.id.confirmButton);
-        mCancelButton = (Button)findViewById(R.id.cancelButton);
-
-        mDataEntry.setOnKeyListener(this);
-        Intent intent = getIntent();
-        String label = null;
-        {
-            String labelExtra = intent.getStringExtra("label");
-            if (labelExtra != null) {
-                label = labelExtra;
-            }
-        }
-        extras = intent.getBundleExtra("extras");
-        if (label != null && label.length() > 0) {
-            mDataLabel.setText(label);
-        }
-
-        mConfirmButton.setOnClickListener(new ConfirmButtonListener());
-        mCancelButton.setOnClickListener(new CancelButtonListener());
-    }
-
-    private class ConfirmButtonListener implements OnClickListener {
-        public void onClick(View v) {
-            activityResult(RESULT_OK, mDataEntry.getText().toString(), extras);
-        }
-    }
-
-    private class CancelButtonListener implements OnClickListener {
-        public void onClick(View v) {
-            activityResult(RESULT_CANCELED, null, null);
-        }
-    }
-
-    protected void activityResult(int result, String data, Bundle extras) {
-        setResult(result, (new Intent()).setAction(data).putExtras(extras));
-        finish();
-    }
-
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER 
-                || keyCode == KeyEvent.KEYCODE_ENTER) {
-            activityResult(RESULT_OK, mDataEntry.getText().toString(), extras);
-            return true;
-        }
-        return false;
-    }
-
-    protected TextView mDataLabel;
-    protected EditText mDataEntry;
-    protected Button mConfirmButton;
-    protected Button mCancelButton;
-}
diff --git a/src/com/android/settings/BluetoothListItem.java b/src/com/android/settings/BluetoothListItem.java
deleted file mode 100644
index c75be13..0000000
--- a/src/com/android/settings/BluetoothListItem.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.android.settings;
-
-import android.content.Context;
-import android.preference.Preference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import java.util.Map;
-
-/**
- * This class extends Preference to display bluetooth status icons. One
- * icon specifies the connection/pairing status that is right-aligned.
- * An optional headset icon can be added to its left as well.
- */
-public class BluetoothListItem extends Preference {
-
-    private boolean mIsHeadset;
-    private int mWeight;
-    
-    public BluetoothListItem(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setWidgetLayoutResource(R.layout.preference_widget_btdevice_status);
-    }
-
-    private void updateIcons(View view) {
-        ImageView headsetView = (ImageView) view.findViewById(R.id.device_headset);
-        headsetView.setVisibility(mIsHeadset ? View.VISIBLE : View.GONE);
-    }
-
-    @Override
-    public void onBindView(View view) {
-        super.onBindView(view);
-        updateIcons(view);
-    }
-
-    /**
-     * Set whether the device is of headset type
-     * @param headset whether or not the headset icon should be shown
-     */
-    public void setHeadset(boolean headset) {
-        mIsHeadset = headset;
-        notifyChanged();
-    }
-
-    /**
-     * Sets the weight for ordering by signal strength or importance
-     * @param weight the ordering weight
-     */
-    public void setWeight(int weight) {
-        mWeight = weight;
-    }
-
-    /**
-     * Returns the currently set ordering weight
-     * @return the current ordering weight
-     */
-    public int getWeight() {
-        return mWeight;
-    }
-    
-    @Override
-    public int compareTo(Preference another) {
-        int diff = ((BluetoothListItem)another).mWeight - mWeight;
-        // Let the new one be after the old one, if they are the same weight
-        // TODO: Implement a more reliable way to consistently order items of
-        // the same weight
-        if (diff == 0) diff = 1;
-        return diff;
-    }
-}
diff --git a/src/com/android/settings/BluetoothPINEntry.java b/src/com/android/settings/BluetoothPINEntry.java
deleted file mode 100644
index 8933c03..0000000
--- a/src/com/android/settings/BluetoothPINEntry.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.settings;
-
-import android.app.NotificationManager;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-
-public class BluetoothPINEntry extends BluetoothDataEntry {
-    private BluetoothDevice mBluetooth;
-    private String mAddress;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        Intent intent = getIntent();
-        if (!intent.getAction().equals(BluetoothIntent.PAIRING_REQUEST_ACTION))
-        {
-            Log.e(this.getClass().getName(),
-                  "Error: this activity may be started only with intent " +
-                  BluetoothIntent.PAIRING_REQUEST_ACTION);
-            finish();
-        }
-        
-        // Cancel the notification, if any
-        NotificationManager manager = (NotificationManager) 
-        getSystemService(Context.NOTIFICATION_SERVICE);
-        manager.cancel(0xb100ceee);
-        
-        mAddress = intent.getStringExtra(BluetoothIntent.ADDRESS);
-
-        mBluetooth = (BluetoothDevice)getSystemService(BLUETOOTH_SERVICE);
-        
-        String remoteName = mBluetooth.getRemoteName(mAddress);
-        if (remoteName == null) {
-            remoteName = mAddress;
-        }
-            
-        mDataLabel.setText(getString(R.string.bluetooth_enter_pin_msg) + remoteName);
-    }
-
-    @Override
-    public void activityResult(int result, String data, Bundle extras) {
-        switch (result) {
-        case RESULT_OK:
-            byte[] pin = BluetoothDevice.convertPinToBytes(mDataEntry.getText().toString());
-            if (pin == null) {
-                return;
-            }
-            mBluetooth.setPin(mAddress, pin);
-            break;
-        case RESULT_CANCELED:
-            mBluetooth.cancelPin(mAddress);
-            break;
-        }
-        finish();
-    }
-}
diff --git a/src/com/android/settings/BluetoothPinRequest.java b/src/com/android/settings/BluetoothPinRequest.java
deleted file mode 100644
index d6a12f3..0000000
--- a/src/com/android/settings/BluetoothPinRequest.java
+++ /dev/null
@@ -1,80 +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;
-
-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;
-
-/**
- * This class handles the Bluetooth pairing PIN request from the bluetooth service
- * It checks if the BluetoothSettings activity is currently visible and lets that
- * activity handle the request. 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 {
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        if (intent.getAction().equals(BluetoothIntent.PAIRING_REQUEST_ACTION)) {
-            if (BluetoothSettings.isRunning()) {
-                // Let the BluetoothSettings activity handle it
-                return;
-            } else {
-                Resources res = context.getResources();
-                String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
-                Notification pair = new Notification(
-                        android.R.drawable.stat_sys_data_bluetooth,
-                        res.getString(R.string.bluetooth_notif_ticker),
-                        System.currentTimeMillis());
-
-                Intent pinIntent = new Intent();
-                pinIntent.setClass(context, BluetoothPINEntry.class);
-                pinIntent.putExtra(BluetoothIntent.ADDRESS, address); 
-                pinIntent.setAction(BluetoothIntent.PAIRING_REQUEST_ACTION);
-                PendingIntent pending = PendingIntent.getActivity(context, 0, 
-                        pinIntent, PendingIntent.FLAG_ONE_SHOT);
-                
-                String name = intent.getStringExtra(BluetoothIntent.NAME);
-                
-                if (name == null) {
-                    BluetoothDevice bluetooth = 
-                        (BluetoothDevice)context.getSystemService(Context.BLUETOOTH_SERVICE);
-                    name = bluetooth.getRemoteName(address);
-                    if (name == null) {
-                        name = address;
-                    }
-                }
-                
-                pair.setLatestEventInfo(context, 
-                        res.getString(R.string.bluetooth_notif_title), 
-                        res.getString(R.string.bluetooth_notif_message) + name, 
-                        pending);
-                
-                NotificationManager manager = (NotificationManager) 
-                        context.getSystemService(Context.NOTIFICATION_SERVICE);
-                manager.notify(0xb100ceee, pair);
-            }
-        }
-    }
-}
diff --git a/src/com/android/settings/BluetoothSettings.java b/src/com/android/settings/BluetoothSettings.java
deleted file mode 100644
index 6a19ec4..0000000
--- a/src/com/android/settings/BluetoothSettings.java
+++ /dev/null
@@ -1,1035 +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;
-
-import android.app.AlertDialog;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothHeadset;
-import android.bluetooth.BluetoothIntent;
-import android.bluetooth.DeviceClass;
-import android.bluetooth.IBluetoothDeviceCallback;
-import android.bluetooth.IBluetoothHeadsetCallback;
-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.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceScreen;
-import android.provider.Settings;
-import android.text.method.PasswordTransformationMethod;
-import android.util.Log;
-import android.view.ContextMenu;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ContextMenu.ContextMenuInfo;
-import android.view.View.OnKeyListener;
-import android.widget.AdapterView;
-import android.widget.EditText;
-import android.widget.Toast;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-
-import java.util.HashMap;
-
-public class BluetoothSettings
-        extends PreferenceActivity
-        implements OnSharedPreferenceChangeListener, OnKeyListener,
-                View.OnCreateContextMenuListener {
-
-    private static final String TAG = "BluetoothSettings";
-
-    private static final int MENU_SCAN_ID = Menu.FIRST;
-    private static final int MENU_CLEAR_ID = Menu.FIRST + 1;
-    
-    private static final int MENU_CONNECT = ContextMenu.FIRST;
-    private static final int MENU_DISCONNECT = ContextMenu.FIRST + 1;
-    private static final int MENU_PAIR = ContextMenu.FIRST + 2;
-    private static final int MENU_UNPAIR = ContextMenu.FIRST + 3;
-    
-    private static final String BT_ENABLE = "bt_checkbox";
-    private static final String BT_VISIBILITY = "bt_visibility";
-    private static final String BT_NAME = "bt_name";
-    
-    private static final String BT_KEY_PREFIX = "bt_dev_";
-    private static final int BT_KEY_LENGTH = BT_KEY_PREFIX.length();
-    private static final String FREEZE_ADDRESSES = "addresses";
-    private static final String FREEZE_TYPES = "types";
-    private static final String FREEZE_PIN = "pinText";
-    private static final String FREEZE_PIN_ADDRESS = "pinAddress";
-    private static final String FREEZE_RSSI = "rssi";
-    private static final String FREEZE_DISCOVERABLE_START = "dstart";
-    
-    private static final int HANDLE_FAILED_TO_CONNECT = 1;
-    private static final int HANDLE_CONNECTING = 2;
-    private static final int HANDLE_CONNECTED = 3;
-    private static final int HANDLE_DISCONNECTED = 4;
-    private static final int HANDLE_PIN_REQUEST = 5;
-    private static final int HANDLE_DISCOVERABLE_TIMEOUT = 6;
-    private static final int HANDLE_INITIAL_SCAN = 7;
-    private static final int HANDLE_PAIRING_FAILED = 8;
-    private static final int HANDLE_PAIRING_PASSED = 9;
-    private static final int HANDLE_PAUSE_TIMEOUT = 10;
-    
-
-    
-    private static String STR_CONNECTED;
-    private static String STR_PAIRED;
-    private static String STR_PAIRED_NOT_NEARBY;
-    private static String STR_NOT_CONNECTED;
-    private static String STR_CONNECTING;
-    private static String STR_PAIRING;
-    
-    private static final int WEIGHT_CONNECTED = 1;
-    private static final int WEIGHT_PAIRED = 0;
-    private static final int WEIGHT_UNKNOWN = -1;
-    
-    private CheckBoxPreference mBTToggle;
-    private CheckBoxPreference mBTVisibility;
-    private EditTextPreference mBTName;
-    private ProgressCategory mBTDeviceList;
-    private AlertDialog mPinDialog;
-    private String      mPinAddress;
-    private EditText    mPinEdit;
-    private View        mPinButton1;
-    private String      mDisconnectAddress;
-    
-    private BluetoothDevice mBluetooth;
-    private BluetoothHeadset mBluetoothHeadset;
-    private boolean mIsEnabled;
-    private String mLastConnected;
-    private static boolean sIsRunning;
-    private static DeviceCallback sDeviceCallback;    
-    private IntentFilter mIntentFilter;
-    private Resources mRes;
-    private long mDiscoverableStartTime;
-    private int mDiscoverableTime;
-    private static final String DISCOVERABLE_TIME = "debug.bt.discoverable_time";
-    private static final int DISCOVERABLE_TIME_DEFAULT = 120;
-    private boolean mAutoDiscovery;
-    // After a few seconds after a pause, if the user doesn't restart the 
-    // BT settings, then we need to cleanup a few things in the message handler
-    private static final int PAUSE_TIMEOUT = 3000;
-    
-    private boolean mStartScan;
-    private static final String AUTO_DISCOVERY = "debug.bt.auto_discovery";
-    private HashMap<String,Preference> mDeviceMap;
-
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        
-        addPreferencesFromResource(R.xml.bluetooth_settings);
-    
-        // Deal with restarted activities by passing a static callback object to
-        // the Bluetooth service
-        if (sDeviceCallback == null) {
-            sDeviceCallback = new DeviceCallback();
-        }
-        sDeviceCallback.setHandler(mHandler);
-        
-        mDiscoverableTime = SystemProperties.getInt(DISCOVERABLE_TIME, -1);
-        if (mDiscoverableTime <= 0) {
-            mDiscoverableTime= DISCOVERABLE_TIME_DEFAULT;
-        }
-        mAutoDiscovery = SystemProperties.getBoolean(AUTO_DISCOVERY, true);
-
-        if (!initBluetoothAPI()) {
-            finish();
-            return;
-        }
-        initUI();
-        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
-        
-        mDeviceMap = new HashMap<String,Preference>();
-        if (icicle != null && icicle.containsKey(FREEZE_ADDRESSES)) {
-            addDevices(icicle.getStringArray(FREEZE_ADDRESSES), 
-                    icicle.getStringArray(FREEZE_TYPES), 
-                    icicle.getIntArray(FREEZE_RSSI));
-            if (icicle.containsKey(FREEZE_PIN)) {
-                String savedPin = icicle.getString(FREEZE_PIN);
-                String pinAddress = icicle.getString(FREEZE_PIN_ADDRESS);
-                mPinDialog = showPinDialog(savedPin, pinAddress);
-            }
-            mDiscoverableStartTime = icicle.getLong(FREEZE_DISCOVERABLE_START);
-        } else {
-            mStartScan = true;
-        }
-    }
-
-    private void initUI() {
-        mBTToggle = (CheckBoxPreference) findPreference(BT_ENABLE);
-        mBTVisibility = (CheckBoxPreference) findPreference(BT_VISIBILITY);
-        mBTName = (EditTextPreference) findPreference(BT_NAME);
-        mBTDeviceList = (ProgressCategory) findPreference("bt_device_list");
-        mBTDeviceList.setOrderingAsAdded(false);
-        mRes = getResources();
-        if (mIsEnabled) {
-            String name = mBluetooth.getName();
-            if (name != null) {
-                mBTName.setSummary(name);
-            }
-        }
-        mBTVisibility.setEnabled(mIsEnabled);
-        mBTName.setEnabled(mIsEnabled);
-        STR_CONNECTED = mRes.getString(R.string.bluetooth_connected);
-        STR_PAIRED = mRes.getString(R.string.bluetooth_paired);
-        STR_PAIRED_NOT_NEARBY = 
-            mRes.getString(R.string.bluetooth_paired_not_nearby);
-        STR_CONNECTING = mRes.getString(R.string.bluetooth_connecting);
-        STR_PAIRING = mRes.getString(R.string.bluetooth_pairing);
-        STR_NOT_CONNECTED = mRes.getString(R.string.bluetooth_not_connected);
-        getListView().setOnCreateContextMenuListener(this);
-    }
-    
-    private boolean initBluetoothAPI() {
-        mIntentFilter =
-            new IntentFilter(BluetoothIntent.REMOTE_DEVICE_CONNECTED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.REMOTE_DEVICE_DISCONNECTED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.BONDING_CREATED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.ENABLED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.DISABLED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.REMOTE_DEVICE_FOUND_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.REMOTE_DEVICE_DISAPPEARED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.REMOTE_NAME_UPDATED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.PAIRING_REQUEST_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.DISCOVERY_COMPLETED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.DISCOVERY_STARTED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.MODE_CHANGED_ACTION);
-        
-        mBluetooth = (BluetoothDevice)getSystemService(BLUETOOTH_SERVICE);
-        mBluetoothHeadset = new BluetoothHeadset(this);
-        if (mBluetooth == null) { // If the environment doesn't support BT
-            return false;
-        }
-        mIsEnabled = mBluetooth.isEnabled();
-        return true;
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        
-        sIsRunning = true;
-        mHandler.removeMessages(HANDLE_PAUSE_TIMEOUT);
-        registerReceiver(mReceiver, mIntentFilter);
-
-        mIsEnabled = mBluetooth.isEnabled();
-        updateStatus();
-        final boolean discoverable = mBluetooth.getMode() == 
-            BluetoothDevice.MODE_DISCOVERABLE;
-        mBTDeviceList.setProgress(mIsEnabled && mBluetooth.isDiscovering());
-        mBTVisibility.setChecked(mIsEnabled && discoverable);
-        
-        if (discoverable) {
-            mHandler.sendMessage(
-                    mHandler.obtainMessage(HANDLE_DISCOVERABLE_TIMEOUT));            
-        }
-        
-        if (mIsEnabled && mStartScan) {
-            // First attempt after 100ms
-            mHandler.sendMessageDelayed(
-                    mHandler.obtainMessage(HANDLE_INITIAL_SCAN, 1), 100);
-        }
-        mStartScan = false;
-        
-        // Check if headset status changed since we paused
-        String connected = mBluetoothHeadset.getHeadsetAddress();
-        if (connected != null) {
-            updateRemoteDeviceStatus(connected);
-        }
-        if (mLastConnected != null) {
-            updateRemoteDeviceStatus(mLastConnected);
-        }
-    }
-    
-    @Override
-    protected void onPause() {
-        sIsRunning = false;
-
-        unregisterReceiver(mReceiver);
-
-        // Wait for a few seconds and cleanup any pending requests, states
-        mHandler.sendMessageDelayed(
-                mHandler.obtainMessage(HANDLE_PAUSE_TIMEOUT, 
-                        new Object[] { mBluetooth, mPinAddress }), 
-                PAUSE_TIMEOUT);
-        super.onPause();
-    }
-
-    @Override
-    protected void onDestroy() {
-        mBluetoothHeadset.close();
-        sDeviceCallback.setHandler(null);
-        
-        super.onDestroy();
-    }
-
-    @Override
-    public void onConfigurationChanged(Configuration c) {
-        super.onConfigurationChanged(c);
-        // Don't do anything on keyboardHidden/orientation change, as we need
-        // to make sure that we don't lose pairing request intents.
-    }
-    
-    public static boolean isRunning() {
-        return sIsRunning;
-    }
-    
-    @Override
-    protected void onSaveInstanceState(Bundle icicle) {
-        int deviceCount = mBTDeviceList.getPreferenceCount();
-        String [] addresses = new String[deviceCount];
-        String [] states = new String[deviceCount];
-        int [] weights = new int[deviceCount];
-        for (int i = 0; i < deviceCount; i++) {
-            BluetoothListItem p = (BluetoothListItem) mBTDeviceList.getPreference(i);
-            CharSequence summary = p.getSummary();
-            if (summary != null) {
-                states[i] = summary.toString();
-            } else {
-                states[i] = STR_NOT_CONNECTED;
-            }
-            addresses[i] = getAddressFromKey(p.getKey());
-            weights[i] = p.getWeight();
-        }
-        icicle.putStringArray(FREEZE_ADDRESSES, addresses);
-        icicle.putStringArray(FREEZE_TYPES, states);
-        icicle.putIntArray(FREEZE_RSSI, weights);
-        icicle.putLong(FREEZE_DISCOVERABLE_START, mDiscoverableStartTime);
-        if (mPinDialog != null && mPinDialog.isShowing()) {
-            icicle.putString(FREEZE_PIN, mPinEdit.getText().toString());
-            icicle.putString(FREEZE_PIN_ADDRESS, mPinAddress);
-        }
-        super.onSaveInstanceState(icicle);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        menu.add(0, MENU_SCAN_ID, 0, 
-                mRes.getString(R.string.bluetooth_scan_for_devices))
-            .setIcon(R.drawable.ic_menu_scan_bluetooth);
-        menu.add(0, MENU_CLEAR_ID, 0, 
-                mRes.getString(R.string.bluetooth_clear_list))
-            .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-        case MENU_SCAN_ID:
-            startScanning();
-            return true;
-        case MENU_CLEAR_ID:
-            clearDevices();
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-    
-    @Override
-    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
-        if (!(menuInfo instanceof AdapterContextMenuInfo)) {
-            return;
-        }
-        int position = ((AdapterContextMenuInfo)menuInfo).position;
-        Preference pref = (Preference) getPreferenceScreen().getRootAdapter().getItem(position);
-        if (!(pref instanceof BluetoothListItem)) {
-            return;
-        }
-        String address = getAddressFromKey(pref.getKey());
-        // Setup the menu header
-        String name = mBluetooth.getRemoteName(address);
-        menu.setHeaderTitle(name != null? name : address);
-        int n = 0;
-        if (mBluetoothHeadset.isConnected(address)) {
-            menu.add(0, MENU_DISCONNECT, n++, R.string.bluetooth_disconnect);            
-        } else {
-            menu.add(0, MENU_CONNECT, n++, R.string.bluetooth_connect);
-        }
-        if (mBluetooth.hasBonding(address)) {
-            menu.add(0, MENU_UNPAIR, n++, R.string.bluetooth_unpair);
-        } else {
-            menu.add(0, MENU_PAIR, n++, R.string.bluetooth_pair);
-        }
-    }
-
-    @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        AdapterView.AdapterContextMenuInfo info;
-        if (!(item.getMenuInfo() instanceof AdapterContextMenuInfo)) {
-            return false;
-        }
-        info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
-        Preference pref = (Preference) getPreferenceScreen().getRootAdapter().
-                getItem(info.position);
-        String address = getAddressFromKey(pref.getKey());
-        mBluetooth.cancelDiscovery();
-        switch (item.getItemId()) {
-            case MENU_DISCONNECT:
-                if (mBluetoothHeadset.isConnected(address)) {
-                    mBluetoothHeadset.disconnectHeadset();
-                }
-                break;
-            case MENU_CONNECT:
-                if (!mBluetoothHeadset.isConnected(address)) {
-                    updateRemoteDeviceStatus(address, STR_CONNECTING); 
-                    connect(pref, address);
-                }
-                break;
-            case MENU_UNPAIR:
-                if (mBluetooth.hasBonding(address)) {
-                    mBluetooth.removeBonding(address);
-                    updateRemoteDeviceStatus(address);
-                }
-                break;
-            case MENU_PAIR:
-                if (!mBluetooth.hasBonding(address)) {
-                    pair(pref, address);
-                }
-                break;
-        }
-        return true;
-    }
-    
-    private void startScanning() {
-        if (mIsEnabled && mBluetooth.isDiscovering()) {
-            return;
-        }
-        resetDeviceListUI();
-        if (mIsEnabled) {
-            mBluetooth.startDiscovery();
-        }
-    }
-
-    private void clearDevices() {
-        String [] addresses = mBluetooth.listBondings();
-        if (addresses != null) {
-            for (int i = 0; i < addresses.length; i++) {
-                unbond(addresses[i]);
-            }
-        }
-        resetDeviceListUI();
-    }
-    
-    /* Update the Bluetooth toggle and visibility summary */
-    private void updateStatus() {
-        boolean started = mIsEnabled;
-        mBTToggle.setChecked(started);
-    }
-    
-    private void updateRemoteDeviceStatus(String address) {
-        if (address != null) {
-            Preference device = mDeviceMap.get(address);
-            if (device == null) {
-                // This device is not in our discovered list
-                // Let's add the device, if BT is not shut down already
-                if (mIsEnabled) {
-                    addDeviceToUI(address, null, null, WEIGHT_PAIRED);
-                }
-                return;
-            }
-            device.setEnabled(true);
-            if (address.equals(mBluetoothHeadset.getHeadsetAddress())) {
-                int state = mBluetoothHeadset.getState();
-                switch (state) {
-                    case BluetoothHeadset.STATE_CONNECTED:
-                        device.setSummary(STR_CONNECTED);
-                        mLastConnected = address;
-                        break;
-                    case BluetoothHeadset.STATE_CONNECTING:
-                        device.setSummary(STR_CONNECTING);
-                        break;
-                    case BluetoothHeadset.STATE_DISCONNECTED:
-                        if (mBluetooth.hasBonding(address)) {
-                            device.setSummary(STR_PAIRED);
-                        }
-                        break;
-                }
-            } else if (mBluetooth.hasBonding(address)) {
-                device.setSummary(STR_PAIRED);
-            } else {
-                device.setSummary(STR_NOT_CONNECTED);
-            }
-        }
-    }
-    
-    private void updateRemoteDeviceStatus(String address, String summary) {
-        Preference device = mDeviceMap.get(address);
-        if (device != null) {
-            device.setEnabled(true);
-            device.setSummary(summary);
-        }
-    }
-    
-    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
-        if (key.equals(BT_NAME)) {
-            String name = sharedPreferences.getString(key, null);
-            if (name == null) {
-                return;
-            }
-            if (mBluetooth.setName(name)) {
-                mBTName.setSummary(name);
-            }
-        }
-    }
-        
-    private String getAddressFromKey(String key) {
-        if (key != null) {
-            return key.substring(BT_KEY_LENGTH);
-        }
-        return "";
-    }
-
-    private void sendPin(String pin) {
-        byte[] pinBytes = BluetoothDevice.convertPinToBytes(pin);
-        if (pinBytes == null) {
-            mBluetooth.cancelPin(mPinAddress);
-        } else {
-            mBluetooth.setPin(mPinAddress, pinBytes);
-        }
-        mPinAddress = null;
-    }
-    
-    private AlertDialog showPinDialog(String savedPin, String pinAddress) {
-        if (mPinDialog != null) {
-            return mPinDialog;
-        }
-        View view = LayoutInflater.from(this).inflate(
-                R.layout.bluetooth_pin_entry, null);
-        mPinEdit = (EditText) view.findViewById(R.id.text);
-        mPinEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
-        mPinEdit.setOnKeyListener(this);
-        mPinAddress = pinAddress;
-        
-        if (savedPin != null) {
-            mPinEdit.setText(savedPin);
-        }
-        
-        String remoteName = mBluetooth.getRemoteName(mPinAddress);
-        if (remoteName == null) {
-            remoteName = mPinAddress;
-        }
-            
-        AlertDialog ad = new AlertDialog.Builder(this)
-            .setTitle(getString(R.string.bluetooth_notif_title))
-            .setMessage(getString(R.string.bluetooth_enter_pin_msg) + remoteName)
-            .setView(view)
-            .setPositiveButton(android.R.string.ok, mDisconnectListener)
-            .setNegativeButton(android.R.string.cancel, mDisconnectListener)
-            .setOnCancelListener(mCancelListener)
-            .show();
-        ad.setCanceledOnTouchOutside(false);
-        // Making an assumption here that the dialog buttons have the ids starting
-        // with ...button1 as below
-        mPinButton1 = ad.findViewById(com.android.internal.R.id.button1);
-        if (mPinButton1 != null) {
-            mPinButton1.setEnabled(savedPin != null? savedPin.length() > 0 : false);
-        }
-        return ad;
-    }
-    
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if (preference == mBTToggle) {
-            toggleBT();
-            return false;
-        } else if (preference == mBTVisibility) {
-            boolean vis = mBTVisibility.isChecked();
-            if (!vis) {
-                // Cancel discoverability
-                mBluetooth.setMode(BluetoothDevice.MODE_CONNECTABLE);
-                mHandler.removeMessages(HANDLE_DISCOVERABLE_TIMEOUT);
-            } else {
-                mBluetooth.setMode(BluetoothDevice.MODE_DISCOVERABLE);
-                mBTVisibility.setSummaryOn(
-                        getResources().getString(R.string.bluetooth_is_discoverable,
-                                String.valueOf(mDiscoverableTime)));
-                mDiscoverableStartTime = SystemClock.elapsedRealtime();
-                mHandler.sendMessageDelayed(
-                        mHandler.obtainMessage(HANDLE_DISCOVERABLE_TIMEOUT), 1000);
-            }
-        } else {
-            String key = preference.getKey();
-            if (key.startsWith(BT_KEY_PREFIX)) {
-                // Extract the device address from the key
-                String address = getAddressFromKey(key);
-                if (mBluetoothHeadset.isConnected(address)) {
-                    askDisconnect(address);
-                } else if (mBluetooth.hasBonding(address)) {
-                    if (mIsEnabled) {
-                        mBluetooth.cancelDiscovery();
-                    }
-                    updateRemoteDeviceStatus(address, STR_CONNECTING); 
-                    connect(preference, address);
-                } else {
-                    if (mIsEnabled) {
-                        mBluetooth.cancelDiscovery();
-                    }
-                    pair(preference, address);
-                }
-            }
-        }
-        return false;
-    }
-
-    /* Handle the key input to the PIN entry dialog */
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        
-        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER 
-                || keyCode == KeyEvent.KEYCODE_ENTER) {
-            String pin = ((EditText)v).getText().toString(); 
-            if (pin != null && pin.length() > 0) {
-                sendPin(pin);
-                mPinDialog.dismiss();
-                return true;
-            }
-        } else if (mPinButton1 != null) {
-            boolean valid =
-                    BluetoothDevice.convertPinToBytes(((EditText)v).getText().toString()) != null;
-            mPinButton1.setEnabled(valid);
-        }
-        return false;
-    }
-    
-    private void askDisconnect(String address) {
-        String name = mBluetooth.getRemoteName(address);
-        if (name == null) {
-            name = mRes.getString(R.string.bluetooth_device);
-        }
-        String message = mRes.getString(R.string.bluetooth_disconnect_blank, name);
-
-        mDisconnectAddress = address;
-        
-        AlertDialog ad = new AlertDialog.Builder(this)
-                .setTitle(message)
-                .setPositiveButton(android.R.string.ok, mDisconnectListener)
-                .setNegativeButton(android.R.string.cancel, null)
-                .show();
-        ad.setCanceledOnTouchOutside(false);
-
-    }
-
-    private void pairingDone(String address, boolean result) {
-        Preference pref = mDeviceMap.get(address);
-        if (pref != null) {
-            pref.setEnabled(true);
-            updateRemoteDeviceStatus(address);
-        } else if (result) {
-            // We've paired to a device that isn't in our list
-            addDeviceToUI(address, STR_PAIRED, mBluetooth.getRemoteName(address), 
-                    WEIGHT_PAIRED);
-        }
-    }
-    
-    private void pair(Preference pref, String address) {
-        pref.setEnabled(false);
-        pref.setSummary(STR_PAIRING);
-        mBluetooth.createBonding(address, sDeviceCallback);
-    }
-    
-    private void connect(Preference pref, String address) {
-        pref.setEnabled(false);
-        //TODO: Prompt the user to confirm they will disconnect current headset
-        disconnect();
-        mBluetoothHeadset.connectHeadset(address, mHeadsetCallback);
-    }
-
-    private void disconnect() {
-        int state = mBluetoothHeadset.getState();
-        if (state == BluetoothHeadset.STATE_CONNECTING ||
-                state == BluetoothHeadset.STATE_CONNECTED) {
-            mBluetoothHeadset.disconnectHeadset();
-        }
-    }
-    
-    private void toggleBT() {
-        if (mIsEnabled) {
-            mBTToggle.setSummaryOn(mRes.getString(R.string.bluetooth_stopping));
-            mBTDeviceList.setProgress(false);
-            // Force shutdown.
-            mBluetooth.cancelDiscovery();
-            mBluetooth.disable();
-        } else {
-            mBTToggle.setSummaryOff(mRes.getString(R.string.bluetooth_enabling));
-            mBTToggle.setChecked(false);
-            mBTToggle.setEnabled(false);
-            if (!mBluetooth.enable()) {
-                mBTToggle.setEnabled(true);
-            }
-        }
-    }
-
-    private void addDeviceToUI(String address, String summary, String name, 
-            int rssi) {
-        
-        if (address == null) {
-            return;
-        }
-
-        BluetoothListItem p;
-        if (mDeviceMap.containsKey(address)) {
-            p = (BluetoothListItem) mDeviceMap.get(address);
-            if (summary != null && summary.equals(STR_NOT_CONNECTED)) {
-                if (mBluetooth.hasBonding(address)) {
-                    summary = STR_PAIRED;
-                }
-            }
-            CharSequence oldSummary = p.getSummary();
-            if (oldSummary != null && oldSummary.equals(STR_CONNECTED)) {
-                summary = STR_CONNECTED; // Don't override connected with paired
-                mLastConnected = address;
-            }
-        } else {
-            p = new BluetoothListItem(this, null);
-        }
-        if (name == null) {
-            name = mBluetooth.getRemoteName(address);
-        }
-        if (name == null) {
-            name = address;
-        }
-
-        p.setTitle(name);
-        p.setSummary(summary);
-        p.setKey(BT_KEY_PREFIX + address);
-        // Enable the headset icon if it is most probably a headset class device
-        if (DeviceClass.getMajorClass(mBluetooth.getRemoteClass(address)) == 
-                DeviceClass.MAJOR_CLASS_AUDIO_VIDEO) {
-            p.setHeadset(true);
-        }
-        p.setWeight(rssi);
-        if (!mDeviceMap.containsKey(address)) {
-            mBTDeviceList.addPreference(p);
-            mDeviceMap.put(address, p);
-        }
-    }
-
-    private void addDevices(String [] addresses,
-            String[] deviceStatus, int[] rssi) {
-        for (int i = 0; i < addresses.length; i++) {
-            String status = deviceStatus[i];
-            String name = mBluetooth.getRemoteName(addresses[i]);
-            String address = addresses[i];
-            // Query the status if it's not known
-            if (status == null) {
-                if (mBluetoothHeadset.isConnected(addresses[i])) {
-                    status = STR_CONNECTED;
-                    mLastConnected = address;
-                } else if (mBluetooth.hasBonding(addresses[i])) {
-                    status = STR_PAIRED;
-                } else {
-                    status = STR_NOT_CONNECTED;
-                }
-            }
-            addDeviceToUI(address, status, name, rssi[i]);
-        }
-    }
-    
-    private void removeDeviceFromUI(String address) {
-        Preference p = mDeviceMap.get(address);
-        if (p == null) {
-            return;
-        }
-        mBTDeviceList.removePreference(p);
-        mDeviceMap.remove(address);
-    }
-    
-    private void updateDeviceName(String address, String name) {
-        Preference p = mDeviceMap.get(address);
-        if (p != null) {
-            p.setTitle(name);
-        }
-    }
-        
-    private void resetDeviceListUI() {
-        mDeviceMap.clear();
-
-        while (mBTDeviceList.getPreferenceCount() > 0) {
-            mBTDeviceList.removePreference(mBTDeviceList.getPreference(0));
-        }
-        if (!mIsEnabled) {
-            return;
-        }
-        
-        String connectedDevice = mBluetoothHeadset.getHeadsetAddress();
-        if (connectedDevice != null && mBluetoothHeadset.isConnected(connectedDevice)) {
-            addDeviceToUI(connectedDevice, STR_CONNECTED, 
-                    mBluetooth.getRemoteName(connectedDevice), WEIGHT_CONNECTED);
-        }
-        String [] bondedDevices = mBluetooth.listBondings();
-        if (bondedDevices != null) {
-            for (int i = 0; i < bondedDevices.length; i++) {
-                addDeviceToUI(bondedDevices[i], STR_PAIRED_NOT_NEARBY, 
-                        mBluetooth.getRemoteName(bondedDevices[i]), WEIGHT_PAIRED);
-            }
-        }
-    }
-    
-    private void unbond(String address) {
-        mBluetooth.removeBonding(address);
-    }
-
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
-            if (action.equals(BluetoothIntent.ENABLED_ACTION)) {
-                mIsEnabled = true;
-                mBTToggle.setChecked(true);
-                mBTToggle.setSummaryOn(mRes.getString(R.string.bluetooth_enabled));
-                mBTToggle.setEnabled(true);
-                String name = mBluetooth.getName();
-                if (name != null) {
-                    mBTName.setSummary(name);
-                }
-                // save the "enabled" setting to database, so we can
-                // remember it on startup.
-                Settings.System.putInt(getContentResolver(),
-                                       Settings.System.BLUETOOTH_ON, 1);
-                resetDeviceListUI();
-                if (mAutoDiscovery) {
-                    mBluetooth.startDiscovery();
-                }
-            } else if (action.equals(BluetoothIntent.DISABLED_ACTION)) {
-                mIsEnabled = false;
-                mBTToggle.setSummaryOff(mRes.getString(R.string.bluetooth_disabled));
-                resetDeviceListUI();
-                mBTVisibility.setChecked(false);
-                // save the "disabled" setting to database
-                Settings.System.putInt(getContentResolver(), 
-                                       Settings.System.BLUETOOTH_ON, 0);
-            } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_FOUND_ACTION)) {
-                if (address != null) {
-                    int rssi = intent.getShortExtra(BluetoothIntent.RSSI, 
-                            (short) WEIGHT_UNKNOWN);
-                    addDeviceToUI(address, STR_NOT_CONNECTED, null, rssi);
-                }
-            } else if (action.equals(BluetoothIntent.REMOTE_NAME_UPDATED_ACTION)) {
-                String name = intent.getStringExtra(BluetoothIntent.NAME);
-                updateDeviceName(address, name);
-            } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_DISAPPEARED_ACTION)) {
-                removeDeviceFromUI(address);
-            } else if (action.equals(BluetoothIntent.PAIRING_REQUEST_ACTION)) {
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_PIN_REQUEST, address));
-            } else if (action.equals(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION)) {
-                int state = intent.getIntExtra(BluetoothIntent.HEADSET_STATE,
-                                               BluetoothHeadset.STATE_ERROR);
-                if (state == BluetoothHeadset.STATE_CONNECTED) {
-                    mHandler.sendMessage(mHandler.obtainMessage(HANDLE_CONNECTED, address));
-                } else if (state == BluetoothHeadset.STATE_DISCONNECTED) {
-                    mHandler.sendMessage(mHandler.obtainMessage(HANDLE_DISCONNECTED, address));
-                } else if (state == BluetoothHeadset.STATE_CONNECTING) {
-                    mHandler.sendMessage(mHandler.obtainMessage(HANDLE_CONNECTING, address));                    
-                }
-            } else if (action.equals(BluetoothIntent.DISCOVERY_STARTED_ACTION)) {
-                mBTDeviceList.setProgress(true);
-            } else if (action.equals(BluetoothIntent.DISCOVERY_COMPLETED_ACTION)) {
-                mBTDeviceList.setProgress(false);
-            } else if (action.equals(BluetoothIntent.MODE_CHANGED_ACTION)) {
-                mBTVisibility.setChecked(
-                        mBluetooth.getMode() == BluetoothDevice.MODE_DISCOVERABLE);
-            } else if (action.equals(BluetoothIntent.BONDING_CREATED_ACTION)) {
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_PAIRING_PASSED, address));
-            } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_CONNECTED_ACTION)) { 
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_CONNECTED, address));
-            } else if (action.equals(BluetoothIntent.REMOTE_DEVICE_DISCONNECTED_ACTION)) { 
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_DISCONNECTED, address));
-            }
-        }
-    };
-
-    
-    static class DeviceCallback extends IBluetoothDeviceCallback.Stub {
-        Handler messageHandler;
-
-        public void setHandler(Handler handler) {
-            synchronized (this) {
-                messageHandler = handler;
-            }
-        }
-        
-        public void onCreateBondingResult(String address, int result) {
-            synchronized (this) {
-                if (messageHandler != null) {
-                    if (result == BluetoothDevice.RESULT_FAILURE) {
-                        messageHandler.sendMessage(messageHandler.obtainMessage(
-                                HANDLE_PAIRING_FAILED, address));
-                    } else {
-                        messageHandler.sendMessage(messageHandler.obtainMessage(
-                                HANDLE_PAIRING_PASSED, address));
-                    }
-                }
-            }
-        }
-        
-        public void onEnableResult(int result) { }
-        public void onGetRemoteServiceChannelResult(String address, int channel) { }
-    };
-    
-    private IBluetoothHeadsetCallback mHeadsetCallback = new IBluetoothHeadsetCallback.Stub() {
-        public void onConnectHeadsetResult(String address, int resultCode) {
-            if (resultCode == BluetoothHeadset.RESULT_SUCCESS) {
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_CONNECTED, address));
-            } else {
-                // Make toast in UI thread
-                mHandler.sendMessage(mHandler.obtainMessage(HANDLE_FAILED_TO_CONNECT, resultCode,
-                            -1, address));
-            }
-        }
-    };
-
-    private Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case HANDLE_CONNECTED:
-                case HANDLE_DISCONNECTED:
-                case HANDLE_CONNECTING:
-                    updateRemoteDeviceStatus((String) msg.obj);
-                    break;
-                case HANDLE_FAILED_TO_CONNECT:
-                    updateRemoteDeviceStatus((String) msg.obj);
-                    String name = mBluetooth.getRemoteName((String) msg.obj);
-                    if (name == null) {
-                        name = (String) msg.obj;
-                    }
-                    if (msg.arg1 == BluetoothHeadset.RESULT_FAILURE) {
-                        Toast.makeText(BluetoothSettings.this, 
-                                mRes.getString(R.string.failed_to_connect, name),
-                                Toast.LENGTH_SHORT).show();
-                    }
-                    break;
-                case HANDLE_PIN_REQUEST:
-                    mPinDialog = showPinDialog(null, (String) msg.obj);
-                    break;
-                case HANDLE_DISCOVERABLE_TIMEOUT:
-                    long nowTime = SystemClock.elapsedRealtime();
-                    int secondsLeft = mDiscoverableTime
-                            - (int) (nowTime - mDiscoverableStartTime) / 1000;
-                    if (secondsLeft > 0) {
-                        mBTVisibility.setSummaryOn(
-                                getResources().getString(R.string.bluetooth_is_discoverable,
-                                        String.valueOf(secondsLeft)));
-                        sendMessageDelayed(obtainMessage(HANDLE_DISCOVERABLE_TIMEOUT), 1000);
-                    } else {
-                        mBluetooth.setMode(BluetoothDevice.MODE_CONNECTABLE);
-                        mBTVisibility.setChecked(false);
-                    }
-                    break;
-                case HANDLE_INITIAL_SCAN:
-                    if (mBluetoothHeadset.getState() == BluetoothHeadset.STATE_ERROR &&
-                            ((Integer)msg.obj).intValue() < 2) {
-                        // Second attempt after another 100ms
-                        sendMessageDelayed(obtainMessage(HANDLE_INITIAL_SCAN, 2), 100);
-                    } else {
-                        resetDeviceListUI();
-                        if (mAutoDiscovery) {
-                            mBluetooth.cancelDiscovery();
-                            mBluetooth.startDiscovery();
-                        }
-                    }
-                    break;
-                case HANDLE_PAIRING_PASSED:
-                    String addr = (String) msg.obj;
-                    pairingDone(addr, true);
-                    break;
-                case HANDLE_PAIRING_FAILED:
-                    String address = (String) msg.obj;
-                    pairingDone(address, false);
-                    String pairName = mBluetooth.getRemoteName(address);
-                    if (pairName == null) {
-                        pairName = address;
-                    }
-                    Toast.makeText(BluetoothSettings.this, 
-                            mRes.getString(R.string.failed_to_pair, pairName),
-                            Toast.LENGTH_SHORT).show();
-                    break;
-                case HANDLE_PAUSE_TIMEOUT:
-                    // Possibility of race condition, but not really harmful
-                    if (!sIsRunning) {
-                        Object[] params = (Object[]) msg.obj;
-                        BluetoothDevice bluetooth = (BluetoothDevice) params[0];
-                        if (bluetooth.isEnabled()) {
-                            if (bluetooth.isDiscovering()) {
-                                bluetooth.cancelDiscovery();
-                            }
-                            if (params[1] != null) {
-                                bluetooth.cancelBondingProcess((String) params[1]);
-                            }
-                            bluetooth.setMode(BluetoothDevice.MODE_CONNECTABLE);
-                        }
-                    }
-                    break;
-            }
-        }
-    };
-
-    private DialogInterface.OnClickListener mDisconnectListener = 
-        new DialogInterface.OnClickListener() {
-        
-            public void onClick(DialogInterface dialog, int which) {
-                if (dialog == mPinDialog) {
-                    if (which == DialogInterface.BUTTON1) {
-                        String pin = mPinEdit.getText().toString();
-                        if (pin != null && pin.length() > 0) {
-                            sendPin(pin);
-                        } else {
-                            sendPin(null);
-                        }
-                    } else {
-                        sendPin(null);
-                    }
-                    mPinDialog = null;
-                    mPinEdit = null;
-                } else {
-                    if (which == DialogInterface.BUTTON1) {
-                        disconnect();
-                    }
-                }
-            }
-    };
-
-    private DialogInterface.OnCancelListener mCancelListener =
-        new DialogInterface.OnCancelListener() {
-            public void onCancel(DialogInterface dialog) {
-                if (dialog == mPinDialog) {
-                    sendPin(null);
-                }
-                mPinDialog = null;
-                mPinEdit = null;
-            }
-    };
-}
-
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 973e655..3097e96 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -45,6 +45,17 @@
  */
 public class ChooseLockPattern extends Activity implements View.OnClickListener{
 
+    /**
+     * Used by the choose lock pattern wizard to indicate the wizard is
+     * finished, and each activity in the wizard should finish.
+     * <p>
+     * Previously, each activity in the wizard would finish itself after
+     * starting the next activity. However, this leads to broken 'Back'
+     * behavior. So, now an activity does not finish itself until it gets this
+     * result.
+     */
+    static final int RESULT_FINISHED = RESULT_FIRST_USER;
+    
     // how long after a confirmation message is shown before moving on
     static final int INFORMATION_MSG_TIMEOUT_MS = 3000;
 
@@ -298,6 +309,8 @@
                 mLockPatternView.clearPattern();
                 updateStage(Stage.Introduction);
             } else if (mUiStage.leftMode == LeftButtonMode.Cancel) {
+                // They are canceling the entire wizard
+                setResult(RESULT_FINISHED);
                 finish();
             } else {
                 throw new IllegalStateException("left footer button pressed, but stage of " +
@@ -368,6 +381,7 @@
         }
 
         if (resultCode != Activity.RESULT_OK) {
+            setResult(RESULT_FINISHED);
             finish();
         }
         updateStage(Stage.Introduction);
@@ -475,6 +489,8 @@
             mLockPatternUtils.setLockPatternEnabled(true);
             mLockPatternUtils.setVisiblePatternEnabled(true);
         }
+        
+        setResult(RESULT_FINISHED);
         finish();
     }
 }
diff --git a/src/com/android/settings/ChooseLockPatternExample.java b/src/com/android/settings/ChooseLockPatternExample.java
index 5feba4c..77517b9 100644
--- a/src/com/android/settings/ChooseLockPatternExample.java
+++ b/src/com/android/settings/ChooseLockPatternExample.java
@@ -25,6 +25,7 @@
 import android.widget.ImageView;
 
 public class ChooseLockPatternExample extends Activity implements View.OnClickListener {
+    private static final int REQUESTCODE_CHOOSE = 1;
     private static final long START_DELAY = 1000;
     protected static final String TAG = "Settings";
     private View mNextButton;
@@ -59,15 +60,24 @@
     
     public void onClick(View v) {
         if (v == mSkipButton) {
+            // Canceling, so finish all
+            setResult(ChooseLockPattern.RESULT_FINISHED);
             finish();
         } else if (v == mNextButton) {
             stopAnimation(mAnimation);
             Intent intent = new Intent(this, ChooseLockPattern.class);
-            startActivity(intent);
+            startActivityForResult(intent, REQUESTCODE_CHOOSE);
+        }
+    }
+    
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUESTCODE_CHOOSE && resultCode == ChooseLockPattern.RESULT_FINISHED) {
+            setResult(resultCode);
             finish();
         }
     }
-
+    
     private void initViews() {
         mNextButton = findViewById(R.id.next_button);
         mNextButton.setOnClickListener(this);
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index 9687b55..a0a878a 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -24,8 +24,10 @@
 import android.view.View;
 
 public class ChooseLockPatternTutorial extends Activity implements View.OnClickListener {
-    protected View mNextButton;
-    protected View mSkipButton;
+    private static final int REQUESTCODE_EXAMPLE = 1;
+    
+    private View mNextButton;
+    private View mSkipButton;
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -52,11 +54,22 @@
 
     public void onClick(View v) {
         if (v == mSkipButton) {
+            // Canceling, so finish all
+            setResult(ChooseLockPattern.RESULT_FINISHED);
             finish();
         } else if (v == mNextButton) {
-            startActivity(new Intent(this, ChooseLockPatternExample.class));
+            startActivityForResult(new Intent(this, ChooseLockPatternExample.class),
+                    REQUESTCODE_EXAMPLE);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUESTCODE_EXAMPLE && resultCode == ChooseLockPattern.RESULT_FINISHED) {
+            setResult(resultCode);
             finish();
         }
     }
+    
 }
 
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index ce9dd8c..ead38d1 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -27,7 +27,6 @@
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.os.Bundle;
 import android.os.SystemClock;
-import android.pim.DateFormat;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
@@ -35,6 +34,7 @@
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
+import android.text.format.DateFormat;
 import android.widget.DatePicker;
 import android.widget.TimePicker;
 
@@ -281,9 +281,7 @@
     /*  Get & Set values from the system settings  */
     
     private boolean is24Hour() {
-        String setting = Settings.System.getString(getContentResolver(),
-                Settings.System.TIME_12_24);
-        return HOURS_24.equals(setting);
+        return DateFormat.is24HourFormat(this);
     }
     
     private void set24Hour(boolean is24Hour) {
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 02b852b..155f085 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import android.os.BatteryManager;
 import android.os.Bundle;
 import android.os.SystemProperties;
 import android.preference.Preference;
@@ -32,9 +33,11 @@
 
     private static final String ENABLE_ADB = "enable_adb";
     private static final String KEEP_SCREEN_ON = "keep_screen_on";
+    private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
 
     private CheckBoxPreference mEnableAdb;
     private CheckBoxPreference mKeepScreenOn;
+    private CheckBoxPreference mAllowMockLocation;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -44,16 +47,19 @@
 
         mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB);
         mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON);
+        mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
         
-        mEnableAdb.setChecked(Settings.System.getInt(getContentResolver(),
-                Settings.System.ADB_ENABLED, 0) != 0);
+        mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.ADB_ENABLED, 0) != 0);
         mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(),
                 Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
+        mAllowMockLocation.setChecked(Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
     }
 
     @Override
@@ -66,11 +72,15 @@
         }
 
         if (preference == mEnableAdb) {
-            Settings.System.putInt(getContentResolver(), Settings.System.ADB_ENABLED, 
+            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 
                     mEnableAdb.isChecked() ? 1 : 0);
         } else if (preference == mKeepScreenOn) {
             Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN, 
-                    mKeepScreenOn.isChecked() ? 1 : 0);
+                    mKeepScreenOn.isChecked() ? 
+                    (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
+        } else if (preference == mAllowMockLocation) {
+            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION,
+                    mAllowMockLocation.isChecked() ? 1 : 0);
         }
         
         return false;
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 58fc91e..5d72afc 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -46,6 +46,7 @@
     private static final String KEY_TERMS = "terms";
     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";
     
     @Override
     protected void onCreate(Bundle icicle) {
@@ -56,7 +57,7 @@
         setSummary("firmware_version", "ro.build.version.release");
         setSummary("baseband_version", "gsm.version.baseband");
         setSummary("device_model", "ro.product.model");
-        setSummary("build_number", "ro.build.description");
+        setSummary("build_number", "ro.build.version.incremental");
         findPreference("kernel_version").setSummary(getFormattedKernelVersion());
 
         /*
@@ -74,6 +75,8 @@
                 Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
         Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference, KEY_TEAM,
                 Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
+        Utils.updatePreferenceToSpecificActivityOrRemove(this, parentPreference, KEY_SYSTEM_UPDATE_SETTINGS,
+                Utils.UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY);
     }
     
     private void setSummary(String preference, String property) {
diff --git a/src/com/android/settings/InputMethodsSettings.java b/src/com/android/settings/InputMethodsSettings.java
new file mode 100644
index 0000000..d38779d
--- /dev/null
+++ b/src/com/android/settings/InputMethodsSettings.java
@@ -0,0 +1,191 @@
+/*
+ * 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;
+
+import java.util.HashSet;
+import java.util.List;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.SystemProperties;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+/*
+ * Displays preferences for input methods.
+ */
+public class InputMethodsSettings extends PreferenceActivity {
+    private List<InputMethodInfo> mInputMethodProperties;
+
+    final TextUtils.SimpleStringSplitter mStringColonSplitter
+            = new TextUtils.SimpleStringSplitter(':');
+    
+    private String mLastInputMethodId;
+    private String mLastTickedInputMethodId;
+
+    static public String getInputMethodIdFromKey(String key) {
+        return key;
+    }
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        addPreferencesFromResource(R.xml.input_methods_prefs);
+
+        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+
+        mInputMethodProperties = imm.getInputMethodList();
+
+        mLastInputMethodId = Settings.Secure.getString(getContentResolver(),
+            Settings.Secure.DEFAULT_INPUT_METHOD);
+
+        int N = (mInputMethodProperties == null ? 0 : mInputMethodProperties
+                .size());
+        for (int i = 0; i < N; ++i) {
+            InputMethodInfo property = mInputMethodProperties.get(i);
+            String prefKey = property.getId();
+
+            CharSequence label = property.loadLabel(getPackageManager());
+            
+            // Add a check box.
+            CheckBoxPreference chkbxPref = new CheckBoxPreference(this);
+            chkbxPref.setKey(prefKey);
+            chkbxPref.setTitle(label);
+            getPreferenceScreen().addPreference(chkbxPref);
+
+            // If setting activity is available, add a setting screen entry.
+            if (null != property.getSettingsActivity()) {
+                PreferenceScreen prefScreen = new PreferenceScreen(this, null);
+                prefScreen.setKey(property.getSettingsActivity());
+                // XXX TODO: handle localization properly.
+                prefScreen.setTitle(label + " settings");
+                getPreferenceScreen().addPreference(prefScreen);
+            }
+        }
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        final HashSet<String> enabled = new HashSet<String>();
+        String enabledStr = Settings.Secure.getString(getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS);
+        if (enabledStr != null) {
+            final TextUtils.SimpleStringSplitter splitter = mStringColonSplitter;
+            splitter.setString(enabledStr);
+            while (splitter.hasNext()) {
+                enabled.add(splitter.next());
+            }
+        }
+        
+        // Update the statuses of the Check Boxes.
+        int N = mInputMethodProperties.size();
+        for (int i = 0; i < N; ++i) {
+            final String id = mInputMethodProperties.get(i).getId();
+            CheckBoxPreference pref = (CheckBoxPreference) findPreference(mInputMethodProperties
+                    .get(i).getId());
+            pref.setChecked(enabled.contains(id));
+        }
+        mLastTickedInputMethodId = null;
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        StringBuilder builder = new StringBuilder(256);
+        
+        boolean haveLastInputMethod = false;
+        
+        int firstEnabled = -1;
+        int N = mInputMethodProperties.size();
+        for (int i = 0; i < N; ++i) {
+            final String id = mInputMethodProperties.get(i).getId();
+            CheckBoxPreference pref = (CheckBoxPreference) findPreference(id);
+            boolean hasIt = id.equals(mLastInputMethodId);
+            if (pref.isChecked()) {
+                if (builder.length() > 0) builder.append(':');
+                builder.append(id);
+                if (firstEnabled < 0) {
+                    firstEnabled = i;
+                }
+                if (hasIt) haveLastInputMethod = true;
+            } else if (hasIt) {
+                mLastInputMethodId = mLastTickedInputMethodId;
+            }
+        }
+
+        // If the last input method is unset, set it as the first enabled one.
+        if (null == mLastInputMethodId || "".equals(mLastInputMethodId)) {
+            if (firstEnabled >= 0) {
+                mLastInputMethodId = mInputMethodProperties.get(firstEnabled).getId();
+            } else {
+                mLastInputMethodId = null;
+            }
+        }
+        
+        Settings.Secure.putString(getContentResolver(),
+            Settings.Secure.ENABLED_INPUT_METHODS, builder.toString());
+        Settings.Secure.putString(getContentResolver(),
+            Settings.Secure.DEFAULT_INPUT_METHOD, mLastInputMethodId);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+            Preference preference) {
+
+        // Those monkeys kept committing suicide, so we add this property
+        // to disable this functionality
+        if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
+            return false;
+        }
+
+        if (preference instanceof CheckBoxPreference) {
+            CheckBoxPreference chkPref = (CheckBoxPreference) preference;
+            String id = getInputMethodIdFromKey(chkPref.getKey());
+            if (chkPref.isChecked()) {
+                mLastTickedInputMethodId = id;
+            } else if (id.equals(mLastTickedInputMethodId)) {
+                mLastTickedInputMethodId = null;
+            }
+        } else if (preference instanceof PreferenceScreen) {
+            if (preference.getIntent() == null) {
+                PreferenceScreen pref = (PreferenceScreen) preference;
+                String activityName = pref.getKey();
+                String packageName = activityName.substring(0, activityName
+                        .lastIndexOf("."));
+                if (activityName.length() > 0) {
+                    Intent i = new Intent(Intent.ACTION_MAIN);
+                    i.setClassName(packageName, activityName);
+                    startActivity(i);
+                }
+            }
+        }
+
+        return false;
+    }
+}
diff --git a/src/com/android/settings/InstalledAppDetails.java b/src/com/android/settings/InstalledAppDetails.java
index 712f94d..d3e7344 100644
--- a/src/com/android/settings/InstalledAppDetails.java
+++ b/src/com/android/settings/InstalledAppDetails.java
@@ -29,7 +29,6 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageStatsObserver;
-import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageStats;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -37,6 +36,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.format.Formatter;
 import android.util.Config;
 import android.util.Log;
 import java.util.ArrayList;
@@ -50,33 +50,62 @@
 import android.widget.TextView;
 
 /**
- * Activity to display application information from Settings
- * 
+ * Activity to display application information from Settings. This activity presents
+ * extended information associated with a package like code, data, total size, permissions
+ * used by the application and also the set of default launchable activities.
+ * For system applications, an option to clear user data is displayed only if data size is > 0.
+ * System applications that do not want clear user data do not have this option.
+ * For non-system applications, there is no option to clear data. Instead there is an option to
+ * uninstall the application.
  */
 public class InstalledAppDetails extends Activity implements View.OnClickListener, DialogInterface.OnClickListener  {
     private static final String TAG="InstalledAppDetails";
     private static final int _UNKNOWN_APP=R.string.unknown;
-   //wait times used for the async package manager api
     private ApplicationInfo mAppInfo;
-    private Button mUninstallButton;
+    private Button mAppButton;
     private Button mActivitiesButton;
-    private boolean mSysPackage;
-    private boolean localLOGV=Config.LOGV || true;
+    private boolean mCanUninstall;
+    private boolean localLOGV=Config.LOGV || false;
     private TextView mTotalSize;
     private TextView mAppSize;
     private TextView mDataSize;
+    private PkgSizeObserver mSizeObserver;
+    private ClearUserDataObserver mClearDataObserver;
+    // Views related to cache info
+    private View mCachePanel;
+    private TextView mCacheSize;
+    private Button mClearCacheButton;
+    private ClearCacheObserver mClearCacheObserver;
+    
     PackageStats mSizeInfo;
     private Button mManageSpaceButton;
     private PackageManager mPm;
-    private String mBStr, mKbStr, mMbStr;
     
     //internal constants used in Handler
-    private static final int CLEAR_USER_DATA = 1;
     private static final int OP_SUCCESSFUL = 1;
     private static final int OP_FAILED = 2;
+    private static final int CLEAR_USER_DATA = 1;
     private static final int GET_PKG_SIZE = 2;
+    private static final int CLEAR_CACHE = 3;
     private static final String ATTR_PACKAGE_STATS="PackageStats";
     
+    // invalid size value used initially and also when size retrieval through PackageManager
+    // fails for whatever reason
+    private static final int SIZE_INVALID = -1;
+    
+    // Resource strings
+    private CharSequence mInvalidSizeStr;
+    private CharSequence mComputingStr;
+    private CharSequence mAppButtonText;
+    
+    // Possible btn states
+    private enum AppButtonStates {
+        CLEAR_DATA,
+        UNINSTALL,
+        NONE
+    } 
+    private AppButtonStates mAppButtonState;
+    
     private Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
             switch (msg.what) {
@@ -86,17 +115,22 @@
                 case GET_PKG_SIZE:
                     refreshSizeInfo(msg);
                     break;
+                case CLEAR_CACHE:
+                    // Refresh size info
+                    mPm.getPackageSizeInfo(mAppInfo.packageName, mSizeObserver);
+                    break;
                 default:
                     break;
             }
         }
     };
     
-    private boolean isSystemPackage() {
-        if ((mAppInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0) {
-            return true;
+    private boolean isUninstallable() {
+        if (((mAppInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0) && 
+                ((mAppInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0)) {
+            return false;
         }
-        return false;
+        return true;
     }
     
     class ClearUserDataObserver extends IPackageDataObserver.Stub {
@@ -119,28 +153,46 @@
          }
      }
     
+    class ClearCacheObserver extends IPackageDataObserver.Stub {
+        public void onRemoveCompleted(final String packageName, final boolean succeeded) {
+            final Message msg = mHandler.obtainMessage(CLEAR_CACHE);
+            msg.arg1 = succeeded?OP_SUCCESSFUL:OP_FAILED;
+            mHandler.sendMessage(msg);
+         }
+     }
+    
     private String getSizeStr(long size) {
-        String retStr = "";
-        if(size < 1024) {
-            return String.valueOf(size)+mBStr;
+        if (size == SIZE_INVALID) {
+            return mInvalidSizeStr.toString();
         }
-        long kb, mb, rem;
-        kb = size >> 10;
-        rem = size - (kb << 10);
-        if(kb < 1024) {
-            if(rem > 512) {
-                kb++;
+        return Formatter.formatFileSize(this, size);
+    }
+    
+    private void setAppBtnState() {
+        boolean visible = false;
+        if(mCanUninstall) {
+            //app can clear user data
+            if((mAppInfo.flags & ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) 
+                    == ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) {
+                mAppButtonText = getText(R.string.clear_user_data_text);
+               mAppButtonState = AppButtonStates.CLEAR_DATA;
+               visible = true;
+            } else {
+                //hide button if diableClearUserData is set
+                visible = false;
+                mAppButtonState = AppButtonStates.NONE;
             }
-            retStr += String.valueOf(kb)+mKbStr;
-            return retStr;
+        } else {
+            visible = true;
+            mAppButtonState = AppButtonStates.UNINSTALL;
+            mAppButtonText = getText(R.string.uninstall_text);
         }
-        mb = kb >> 10;
-        if(kb >= 512) {
-            //round off
-            mb++;
-       }
-       retStr += String.valueOf(mb)+ mMbStr;
-       return retStr;
+        if(visible) {
+            mAppButton.setText(mAppButtonText);
+            mAppButton.setVisibility(View.VISIBLE);
+        } else {
+            mAppButton.setVisibility(View.GONE);
+        }
     }
     
     /** Called when the activity is first created. */
@@ -152,45 +204,25 @@
         //get application's name from intent
         Intent intent = getIntent();
         final String packageName = intent.getStringExtra(ManageApplications.APP_PKG_NAME);
-        mSizeInfo = intent.getParcelableExtra(ManageApplications.APP_PKG_SIZE);
-        long total = -1;
-        long code = -1;
-        long data = -1;
-        if(mSizeInfo != null) {
-            total = mSizeInfo.cacheSize+mSizeInfo.codeSize+mSizeInfo.dataSize;
-            code = mSizeInfo.codeSize;
-            data = mSizeInfo.dataSize+mSizeInfo.cacheSize;
-        }
-        String unknownStr = getString(_UNKNOWN_APP);
-        mBStr = getString(R.string.b_text);
-        mKbStr = getString(R.string.kb_text);
-        mMbStr = getString(R.string.mb_text);
-        String totalSizeStr = unknownStr;
-        if(total != -1) {
-            totalSizeStr = getSizeStr(total);
-        }
-        String appSizeStr = unknownStr;
-        if(code != -1) {
-            appSizeStr = getSizeStr(code);
-        }
-        String dataSizeStr = unknownStr;
-        if(data != -1) {
-            dataSizeStr = getSizeStr(data);
-        }
-        if(localLOGV) Log.i(TAG, "packageName:"+packageName+", total="+total+
-                "code="+code+", data="+data);
+        mComputingStr = getText(R.string.computing_size);
+        // Try retrieving package stats again
+        CharSequence totalSizeStr, appSizeStr, dataSizeStr;
+        totalSizeStr = appSizeStr = dataSizeStr = mComputingStr;
+        if(localLOGV) Log.i(TAG, "Have to compute package sizes");
+        mSizeObserver = new PkgSizeObserver();
+        mPm.getPackageSizeInfo(packageName, mSizeObserver);
+
         try {
-            mAppInfo = mPm.getApplicationInfo(packageName, 0);
+            mAppInfo = mPm.getApplicationInfo(packageName, 
+                    PackageManager.GET_UNINSTALLED_PACKAGES);
         } catch (NameNotFoundException e) {
-           Throwable th = e.fillInStackTrace();
             Log.e(TAG, "Exception when retrieving package:"+packageName, e);
             displayErrorDialog(R.string.app_not_found_dlg_text, true, true);
         }
-        setContentView(R.layout.installed_app_details);
-        ((ImageView)findViewById(R.id.app_icon)).setImageDrawable(mPm.
-                getApplicationIcon(mAppInfo));
+        setContentView(R.layout.installed_app_details);       
+        ((ImageView)findViewById(R.id.app_icon)).setImageDrawable(mAppInfo.loadIcon(mPm));
         //set application name TODO version
-        CharSequence appName = mPm.getApplicationLabel(mAppInfo);
+        CharSequence appName = mAppInfo.loadLabel(mPm);
         if(appName == null) {
             appName = getString(_UNKNOWN_APP);
         }
@@ -208,33 +240,22 @@
         mDataSize = (TextView)findViewById(R.id.data_size_text);
         mDataSize.setText(dataSizeStr);
          
-         mUninstallButton = ((Button)findViewById(R.id.uninstall_button));
+         mAppButton = ((Button)findViewById(R.id.uninstall_button));
         //determine if app is a system app
-         mSysPackage = isSystemPackage();
-         if(localLOGV) Log.i(TAG, "Is systemPackage "+mSysPackage);
-         int btnText;
-         boolean btnClickable = true;
-         
-         if(mSysPackage) {
-             //app can clear user data
-             if((mAppInfo.flags & ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) 
-                     == ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA) {
-                 mUninstallButton.setText(R.string.clear_user_data_text);
-                 //disable button if data is 0
-                 if(data == 0) {
-                     mUninstallButton.setEnabled(false);
-                 } else {
-                     //enable button
-                     mUninstallButton.setOnClickListener(this);
-                 }
-             } else {
-                 //hide button if diableClearUserData is set
-                 mUninstallButton.setVisibility(View.GONE);
-             }
-         } else {
-             mUninstallButton.setText(R.string.uninstall_text);
-             mUninstallButton.setOnClickListener(this);
+         mCanUninstall = !isUninstallable();
+         if(localLOGV) Log.i(TAG, "Is systemPackage "+mCanUninstall);
+         setAppBtnState();
+         mManageSpaceButton = (Button)findViewById(R.id.manage_space_button);
+         if(mAppInfo.manageSpaceActivityName != null) {
+             mManageSpaceButton.setVisibility(View.VISIBLE);
+             mManageSpaceButton.setOnClickListener(this);
          }
+         
+         // Cache section
+         mCachePanel = findViewById(R.id.cache_panel);
+         mCacheSize = (TextView) findViewById(R.id.cache_size_text);
+         mClearCacheButton = (Button) findViewById(R.id.clear_cache_button);
+         
          //clear activities
          mActivitiesButton = (Button)findViewById(R.id.clear_activities_button);
          List<ComponentName> prefActList = new ArrayList<ComponentName>();
@@ -251,23 +272,19 @@
              autoLaunchView.setText(R.string.auto_launch_enable_text);
              mActivitiesButton.setOnClickListener(this);
          }
-         mManageSpaceButton = (Button)findViewById(R.id.manage_space_button);
-         if(mAppInfo.manageSpaceActivityName != null) {
-             mManageSpaceButton.setVisibility(View.VISIBLE);
-             mManageSpaceButton.setOnClickListener(this);
+         
+         // security permissions section
+         LinearLayout permsView = (LinearLayout) findViewById(R.id.permissions_section);
+         AppSecurityPermissions asp = new AppSecurityPermissions(this, packageName);
+         if(asp.getPermissionCount() > 0) {
+             permsView.setVisibility(View.VISIBLE);
+             // Make the security sections header visible
+             LinearLayout securityList = (LinearLayout) permsView.findViewById(
+                     R.id.security_settings_list);
+             securityList.addView(asp.getPermissionsView());
+         } else {
+             permsView.setVisibility(View.GONE);
          }
-         //security permissions section
-         AppSecurityPermissions asp = new AppSecurityPermissions(this);
-         PackageInfo pkgInfo;
-        try {
-            pkgInfo = mPm.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
-        } catch (NameNotFoundException e) {
-            Log.w(TAG, "Couldnt retrieve permissions for package:"+packageName);
-            return;
-        }
-         asp.setSecurityPermissionsView(pkgInfo);
-         LinearLayout securityList = (LinearLayout) findViewById(R.id.security_settings_list);
-         securityList.addView(asp.getPermissionsView());
     }
     
     private void displayErrorDialog(int msgId, final boolean finish, final boolean changed) {
@@ -292,7 +309,7 @@
         Intent intent = new Intent();
         intent.putExtra(ManageApplications.APP_CHG, appChanged);
         setResult(ManageApplications.RESULT_OK, intent);
-        mUninstallButton.setEnabled(false);
+        mAppButton.setEnabled(false);
         if(finish) {
             finish();
         }
@@ -305,29 +322,53 @@
      */
     private void refreshSizeInfo(Message msg) {
         boolean changed = false;
-        Intent intent = new Intent();
         PackageStats newPs = msg.getData().getParcelable(ATTR_PACKAGE_STATS);
         long newTot = newPs.cacheSize+newPs.codeSize+newPs.dataSize;
-        long oldTot = mSizeInfo.cacheSize+mSizeInfo.codeSize+mSizeInfo.dataSize;
-        if(newTot != oldTot) {
-            mTotalSize.setText(getSizeStr(newTot));
-            changed = true;
-        }
-        if(newPs.codeSize != mSizeInfo.codeSize) {
-            mAppSize.setText(getSizeStr(newPs.codeSize));
-            changed = true;
-        }
-        if((newPs.dataSize != mSizeInfo.dataSize) || (newPs.cacheSize != mSizeInfo.cacheSize)) {
-            mDataSize.setText(getSizeStr(newPs.dataSize+newPs.cacheSize));
-            changed = true;
-        }
-        if(changed) {
-            mUninstallButton.setText(R.string.clear_user_data_text);
+        if(mSizeInfo == null) {
             mSizeInfo = newPs;
-            intent.putExtra(ManageApplications.APP_PKG_SIZE, mSizeInfo);
+            mTotalSize.setText(getSizeStr(newTot));
+            mAppSize.setText(getSizeStr(newPs.codeSize));
+            mDataSize.setText(getSizeStr(newPs.dataSize+newPs.cacheSize));
+        } else {
+            long oldTot = mSizeInfo.cacheSize+mSizeInfo.codeSize+mSizeInfo.dataSize;
+            if(newTot != oldTot) {
+                mTotalSize.setText(getSizeStr(newTot));
+                changed = true;
+            }
+            if(newPs.codeSize != mSizeInfo.codeSize) {
+                mAppSize.setText(getSizeStr(newPs.codeSize));
+                changed = true;
+            }
+            if((newPs.dataSize != mSizeInfo.dataSize) || (newPs.cacheSize != mSizeInfo.cacheSize)) {
+                mDataSize.setText(getSizeStr(newPs.dataSize+newPs.cacheSize));
+            }
+            if(changed) {
+                mSizeInfo = newPs;
+            }
         }
-        intent.putExtra(ManageApplications.APP_CHG, changed);
-        setResult(ManageApplications.RESULT_OK, intent);
+        
+        long data = mSizeInfo.dataSize+mSizeInfo.cacheSize;
+        // Disable button if data is 0
+        if(mAppButtonState != AppButtonStates.NONE){
+            mAppButton.setText(mAppButtonText);
+            if((mAppButtonState == AppButtonStates.CLEAR_DATA) && (data == 0)) {
+                mAppButton.setEnabled(false);
+            } else {
+                mAppButton.setEnabled(true);
+                mAppButton.setOnClickListener(this);
+            }            
+        }
+        refreshCacheInfo(newPs.cacheSize);
+    }
+    
+    private void refreshCacheInfo(long cacheSize) {
+        // Set cache info
+        mCacheSize.setText(getSizeStr(cacheSize));
+        if (cacheSize <= 0) {
+            mClearCacheButton.setEnabled(false);
+        } else {
+            mClearCacheButton.setOnClickListener(this);
+        }
     }
     
     /*
@@ -339,11 +380,10 @@
         String packageName = mAppInfo.packageName;
         if(result == OP_SUCCESSFUL) {
             Log.i(TAG, "Cleared user data for system package:"+packageName);
-            PkgSizeObserver observer = new PkgSizeObserver();
-            mPm.getPackageSizeInfo(packageName, observer);
+            mPm.getPackageSizeInfo(packageName, mSizeObserver);
         } else {
-            mUninstallButton.setText(R.string.clear_user_data_text);
-            mUninstallButton.setEnabled(true);
+            mAppButton.setText(R.string.clear_user_data_text);
+            mAppButton.setEnabled(true);
         }
     }
     
@@ -352,20 +392,21 @@
      * button for a system package
      */
     private  void initiateClearUserDataForSysPkg() {
-        mUninstallButton.setEnabled(false);
+        mAppButton.setEnabled(false);
         //invoke uninstall or clear user data based on sysPackage
-        boolean recomputeSizes = false;
         String packageName = mAppInfo.packageName;
         Log.i(TAG, "Clearing user data for system package");
-        ClearUserDataObserver observer = new ClearUserDataObserver();
+        if(mClearDataObserver == null) {
+            mClearDataObserver = new ClearUserDataObserver();
+        }
         ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
-        boolean res = am.clearApplicationUserData(packageName, observer);
+        boolean res = am.clearApplicationUserData(packageName, mClearDataObserver);
         if(!res) {
             //doesnt initiate clear. some error. should not happen but just log error for now
             Log.i(TAG, "Couldnt clear application user data for package:"+packageName);
             displayErrorDialog(R.string.clear_data_failed, false, false);
         } else {
-                mUninstallButton.setText(R.string.recompute_size);
+                mAppButton.setText(R.string.recompute_size);
         }
     }
     
@@ -375,8 +416,8 @@
      */
     public void onClick(View v) {
         String packageName = mAppInfo.packageName;
-        if(v == mUninstallButton) {
-            if(mSysPackage) {
+        if(v == mAppButton) {
+            if(mCanUninstall) {
                 //display confirmation dialog
                 new AlertDialog.Builder(this)
                 .setTitle(getString(R.string.clear_data_dlg_title))
@@ -399,11 +440,17 @@
             Intent intent = new Intent(Intent.ACTION_DEFAULT);
             intent.setClassName(mAppInfo.packageName, mAppInfo.manageSpaceActivityName);
             startActivityForResult(intent, -1);
+        } else if (v == mClearCacheButton) {
+            // Lazy initialization of observer
+            if (mClearCacheObserver == null) {
+                mClearCacheObserver = new ClearCacheObserver();
+            }
+            mPm.deleteApplicationCacheFiles(packageName, mClearCacheObserver);
         }
     }
 
     public void onClick(DialogInterface dialog, int which) {
-        if(which == AlertDialog.BUTTON1) {
+        if(which == AlertDialog.BUTTON_POSITIVE) {
             //invoke uninstall or clear user data based on sysPackage
             initiateClearUserDataForSysPkg();
         } else {
diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java
index 46d9b52..9ee8260 100644
--- a/src/com/android/settings/LocalePicker.java
+++ b/src/com/android/settings/LocalePicker.java
@@ -63,30 +63,55 @@
         setContentView(getContentView());
 
         String[] locales = getAssets().getLocales();
-        final int N = locales.length;
-        mLocales = new Loc[N];
-        for (int i = 0; i < N; i++) {
-            Locale locale = null;
+        Arrays.sort(locales);
+
+        final int origSize = locales.length;
+        Loc[] preprocess = new Loc[origSize];
+        int finalSize = 0;
+        for (int i = 0 ; i < origSize; i++ ) {
             String s = locales[i];
             int len = s.length();
-            if (len == 0) {
-                locale = new Locale("en", "US");
-            } else if (len == 2) {
-                locale = new Locale(s);
+            if (len == 2) {
+                Locale l = new Locale(s);
+                preprocess[finalSize++] = new Loc(l.getDisplayLanguage(), l);
             } else if (len == 5) {
-                locale = new Locale(s.substring(0, 2), s.substring(3, 5));
-            }
-            String displayName = "";
-            if (locale != null) {
-                displayName = locale.getDisplayName();
-            }
-            if ("zz_ZZ".equals(s)) {
-                displayName = "Pseudo...";
-            }
+                String language = s.substring(0, 2);
+                String country = s.substring(3, 5);
+                Locale l = new Locale(language, country);
 
-            mLocales[i] = new Loc(displayName, locale);
+                if (finalSize == 0) {
+                    preprocess[finalSize++] = new Loc(l.getDisplayLanguage(), l);
+                } else {
+                    // check previous entry:
+                    //  same lang and no country -> overwrite it with a lang-only name
+                    //  same lang and a country -> upgrade to full name and 
+                    //    insert ours with full name
+                    //  diff lang -> insert ours with lang-only name
+                    if (preprocess[finalSize-1].locale.getLanguage().equals(language)) {
+                       String prevCountry = preprocess[finalSize-1].locale.getCountry();
+                       if (prevCountry.length() == 0) {
+                            preprocess[finalSize-1].locale = l;
+                            preprocess[finalSize-1].label = l.getDisplayLanguage();
+                        } else {
+                            preprocess[finalSize-1].label = preprocess[finalSize-1].locale.getDisplayName();
+                            preprocess[finalSize++] = new Loc(l.getDisplayName(), l);
+                        }
+                    } else {
+                        String displayName;
+                        if (s.equals("zz_ZZ")) {
+                            displayName = "Pseudo...";
+                        } else {
+                            displayName = l.getDisplayLanguage();
+                        }
+                        preprocess[finalSize++] = new Loc(displayName, l);
+                    }
+                }
+            }
         }
-
+        mLocales = new Loc[finalSize];
+        for (int i = 0; i < finalSize ; i++) {
+            mLocales[i] = preprocess[i];
+        }
         int layoutId = R.layout.locale_picker_item;
         int fieldId = R.id.locale;
         ArrayAdapter<Loc> adapter = new ArrayAdapter<Loc>(this, layoutId, fieldId, mLocales);
@@ -107,25 +132,11 @@
 
             Loc loc = mLocales[position];
             config.locale = loc.locale;
-            final String language = loc.locale.getLanguage();
-            final String region = loc.locale.getCountry();
+
+            // indicate this isn't some passing default - the user wants this remembered
+            config.userSetLocale = true;
 
             am.updateConfiguration(config);
-            
-            // Update the System properties
-            SystemProperties.set("user.language", language);
-            SystemProperties.set("user.region", region);
-            // Write to file for persistence across reboots
-            try {
-                BufferedWriter bw = new BufferedWriter(new java.io.FileWriter(
-                        System.getenv("ANDROID_DATA") + "/locale"));
-                bw.write(language + "_" + region);
-                bw.close();
-            } catch (java.io.IOException ioe) {
-                Log.e(TAG, 
-                        "Unable to persist locale. Error writing to locale file." 
-                        + ioe);
-            }    
         } catch (RemoteException e) {
             // Intentionally left blank
         }
diff --git a/src/com/android/settings/ManageApplications.java b/src/com/android/settings/ManageApplications.java
index 8389502..f1550f9 100644
--- a/src/com/android/settings/ManageApplications.java
+++ b/src/com/android/settings/ManageApplications.java
@@ -18,8 +18,12 @@
 
 import com.android.settings.R;
 import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.ListActivity;
+import android.app.ProgressDialog;
 import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
@@ -27,320 +31,954 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageStats;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.format.Formatter;
 import android.util.Config;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
 import android.widget.AdapterView;
+import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.ListView;
-import android.widget.SimpleAdapter;
 import android.widget.TextView;
 import android.widget.AdapterView.OnItemClickListener;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.TreeMap;
 
 /**
  * Activity to pick an application that will be used to display installation information and
- * options to upgrade/uninstall/delete user data for system applications.
+ * options to uninstall/delete user data for system applications. This activity
+ * can be launched through Settings or via the ACTION_MANAGE_PACKAGE_STORAGE
+ * intent.
  *  Initially a compute in progress message is displayed while the application retrieves
- *  the size information of installed packages which is done asynchronously through a 
- *  handler. Once the computation is done package resource information is retrieved 
- *  and then the information is displayed on the screen. All 
- *  messages are passed through a Handler object.
- *  Known issue: There could be some ordering issues when installing/uninstalling
- *  applications when the application list is being scanned.
+ *  the list of application information from the PackageManager. The size information
+ *  for each package is refreshed to the screen. The resource(app description and
+ *  icon) information for each package is not available yet, so some default values for size
+ *  icon and descriptions are used initially. Later the resource information for each 
+ *  application is retrieved and dynamically updated on the screen.
+ *  A Broadcast receiver registers for package additions or deletions when the activity is
+ *  in focus. If the user installs or deletes packages when the activity has focus, the receiver
+ *  gets notified and proceeds to add/delete these packages from the list on the screen.
+ *  This is an unlikely scenario but could happen. The entire list gets created every time
+ *  the activity's onStart gets invoked. This is to avoid having the receiver for the entire
+ *  life cycle of the application.
+ *  The applications can be sorted either alphabetically or 
+ *  based on size(descending). If this activity gets launched under low memory
+ *  situations(A low memory notification dispatches intent 
+ *  ACTION_MANAGE_PACKAGE_STORAGE) the list is sorted per size.
+ *  If the user selects an application, extended info(like size, uninstall/clear data options,
+ *  permissions info etc.,) is displayed via the InstalledAppDetails activity.
+ *  This activity passes the package name and size information to the 
+ *  InstalledAppDetailsActivity to avoid recomputation of the package size information.
  */
-public class ManageApplications extends Activity implements SimpleAdapter.ViewBinder, OnItemClickListener {
+public class ManageApplications extends ListActivity implements
+        OnItemClickListener, DialogInterface.OnCancelListener {
+    // TAG for this activity
     private static final String TAG = "ManageApplications";
-    //Application prefix information
-    public static final String APP_PKG_PREFIX="com.android.settings.";
-    public static final String APP_PKG_NAME=APP_PKG_PREFIX+"ApplicationPkgName";
-    public static final String APP_PKG_SIZE= APP_PKG_PREFIX+"size";
-    public static final String APP_CHG=APP_PKG_PREFIX+"changed";
     
-    //constant value that can be used to check return code from sub activity.
-    private static final int INSTALLED_APP_DETAILS = 1;
-     //application attributes passed to sub activity that displays more app info
-    private static final String KEY_APP_NAME = "ApplicationName";
-    private static final String KEY_APP_ICON = "ApplicationIcon";
-    private static final String KEY_APP_DESC = "ApplicationDescription";
-    private static final String KEY_APP_SIZE= "ApplicationSize";
-    //sort order that can be changed through the menu
-    public static final int SORT_ORDER_ALPHA = 0;
-    public static final int SORT_ORDER_SIZE = 1;
-   //key and resource values used in constructing map for SimpleAdapter
-    private static final String sKeys[] = new String[] { KEY_APP_NAME, KEY_APP_ICON, 
-            KEY_APP_DESC, KEY_APP_SIZE};
-    private static final int sResourceIds[] = new int[] { R.id.app_name, R.id.app_icon, 
-            R.id.app_description, R.id.app_size};
-    //List of ApplicationInfo objects for various applications
-    private List<ApplicationInfo> mAppList;
-    //SimpleAdapter used for managing items in the list
-    private SimpleAdapter mAppAdapter;
-    //map used to store size information which is used for displaying size information
-    //in this activity as well as the subactivity. this is to avoid invoking package manager
-    //api to retrieve size information
-    private HashMap<String, PackageStats> mSizeMap;
-    private HashMap<String, Map<String, ?> > mAppAdapterMap;
-    //sort order
-    private int mSortOrder = SORT_ORDER_ALPHA;
-    //log information boolean
+    // log information boolean
     private boolean localLOGV = Config.LOGV || false;
-    private ApplicationInfo mCurrentPkg;
-    private int mCurrentPkgIdx = 0;
-    private static final int COMPUTE_PKG_SIZE_START = 1;
-    private static final int COMPUTE_PKG_SIZE_DONE = 2;
-    private static final int REMOVE_PKG=3;
-    private static final int REORDER_LIST=4;
-    private static final int ADD_PKG=5;
-    private static final String ATTR_APP_IDX="ApplicationIndex";
-    private static final String ATTR_CHAINED="Chained";
+    
+    // attributes used as keys when passing values to InstalledAppDetails activity
+    public static final String APP_PKG_PREFIX = "com.android.settings.";
+    public static final String APP_PKG_NAME = APP_PKG_PREFIX+"ApplicationPkgName";
+    public static final String APP_PKG_SIZE = APP_PKG_PREFIX+"size";
+    public static final String APP_CHG = APP_PKG_PREFIX+"changed";
+    
+    // attribute name used in receiver for tagging names of added/deleted packages
     private static final String ATTR_PKG_NAME="PackageName";
+    private static final String ATTR_APP_PKG_STATS="ApplicationPackageStats";
+    
+    // constant value that can be used to check return code from sub activity.
+    private static final int INSTALLED_APP_DETAILS = 1;
+    
+    // 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;
+    // sort order
+    private int mSortOrder = SORT_ORDER_ALPHA;
+    // Filter value
+    int mFilterApps = FILTER_APPS_ALL;
+    
+    // Custom Adapter used for managing items in the list
+    private AppInfoAdapter mAppInfoAdapter;
+    
+    // messages posted to the handler
+    private static final int HANDLER_MESSAGE_BASE = 0;
+    private static final int COMPUTE_PKG_SIZE_START = HANDLER_MESSAGE_BASE+1;
+    private static final int COMPUTE_PKG_SIZE_DONE = HANDLER_MESSAGE_BASE+2;
+    private static final int REMOVE_PKG = HANDLER_MESSAGE_BASE+3;
+    private static final int REORDER_LIST = HANDLER_MESSAGE_BASE+4;
+    private static final int ADD_PKG_START = HANDLER_MESSAGE_BASE+5;
+    private static final int ADD_PKG_DONE = HANDLER_MESSAGE_BASE+6;
+    private static final int REFRESH_ICONS = HANDLER_MESSAGE_BASE+7;
+    
+    // observer object used for computing pkg sizes
     private PkgSizeObserver mObserver;
+    // local handle to PackageManager
     private PackageManager mPm;
+    // Broadcast Receiver object that receives notifications for added/deleted
+    // packages
     private PackageIntentReceiver mReceiver;
+    // atomic variable used to track if computing pkg sizes is in progress. should be volatile?
+    
     private boolean mDoneIniting = false;
-    private String mKbStr;
-    private String  mMbStr;
-    private String mBStr;
+    // default icon thats used when displaying applications initially before resource info is
+    // retrieved
+    private Drawable mDefaultAppIcon;
+    
+    // temporary dialog displayed while the application info loads
+    private ProgressDialog mLoadingDlg = null;
+    
+    // compute index used to track the application size computations
+    private int mComputeIndex;
+    
+    // Size resource used for packages whose size computation failed for some reason
+    private CharSequence mInvalidSizeStr;
+    private CharSequence mComputingSizeStr;
+    
+    // map used to store list of added and removed packages. Immutable Boolean
+    // variables indicate if a package has been added or removed. If a package is
+    // added or deleted multiple times a single entry with the latest operation will
+    // be recorded in the map.
+    private Map<String, Boolean> mAddRemoveMap;
+    
+    // layout inflater object used to inflate views
+    private LayoutInflater mInflater;
+    
+    // invalid size value used initially and also when size retrieval through PackageManager
+    // fails for whatever reason
+    private static final int SIZE_INVALID = -1;
+    
+    // debug boolean variable to test delays from PackageManager API's
+    private boolean DEBUG_PKG_DELAY = false;
+    
+    // Thread to load resources
+    ResourceLoaderThread mResourceThread;
+    
+    String mCurrentPkgName;
+    
+    //TODO implement a cache system
+    private Map<String, AppInfo> mAppPropCache;
     
     /*
      * Handler class to handle messages for various operations
+     * Most of the operations that effect Application related data
+     * are posted as messages to the handler to avoid synchronization
+     * when accessing these structures.
+     * When the size retrieval gets kicked off for the first time, a COMPUTE_PKG_SIZE_START
+     * message is posted to the handler which invokes the getSizeInfo for the pkg at index 0
+     * When the PackageManager's asynchronous call back through
+     * PkgSizeObserver.onGetStatsCompleted gets invoked, the application resources like
+     * label, description, icon etc., is loaded in the same thread and these values are
+     * set on the observer. The observer then posts a COMPUTE_PKG_SIZE_DONE message
+     * to the handler. This information is updated on the AppInfoAdapter associated with
+     * the list view of this activity and size info retrieval is initiated for the next package as 
+     * indicated by mComputeIndex
+     * When a package gets added while the activity has focus, the PkgSizeObserver posts
+     * ADD_PKG_START message to the handler.  If the computation is not in progress, the size
+     * is retrieved for the newly added package through the observer object and the newly
+     * installed app info is updated on the screen. If the computation is still in progress
+     * the package is added to an internal structure and action deferred till the computation
+     * is done for all the packages. 
+     * When a package gets deleted, REMOVE_PKG is posted to the handler
+     *  if computation is not in progress(as indicated by
+     * mDoneIniting), the package is deleted from the displayed list of apps. If computation is
+     * still in progress the package is added to an internal structure and action deferred till
+     * the computation is done for all packages.
+     * When the sizes of all packages is computed, the newly
+     * added or removed packages are processed in order.
+     * If the user changes the order in  which these applications are viewed by hitting the
+     * menu key, REORDER_LIST message is posted to the handler. this sorts the list
+     * of items based on the sort order.
      */
     private Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
             PackageStats ps;
             ApplicationInfo info;
             Bundle data;
-            String pkgName;
-            int idx;
-            int size;
-            boolean chained = false;
+            String pkgName = null;
+            AppInfo appInfo;
             data = msg.getData();
+            if(data != null) {
+                pkgName = data.getString(ATTR_PKG_NAME);
+            }
             switch (msg.what) {
             case COMPUTE_PKG_SIZE_START:
-                mDoneIniting = false;
-                //initialize lists
-                mAppList = new ArrayList<ApplicationInfo>();
-                mSizeMap = new HashMap<String, PackageStats>();
-                mAppAdapterMap = new HashMap<String, Map<String, ?> >();
-                //update application list from PackageManager
-                mAppList = mPm.getInstalledApplications(0);
-                if(mAppList.size() == 0) {
-                    return;
-                }
-                mCurrentPkgIdx = 0;
-                mCurrentPkg = mAppList.get(0);
-                if(localLOGV) Log.i(TAG, "Initiating compute sizes for first time");
-                //register receiver
-                mReceiver = new PackageIntentReceiver();
-                mReceiver.registerReceiver();
-                pkgName = mCurrentPkg.packageName;
-                mObserver = new PkgSizeObserver(0);
-                mObserver.invokeGetSizeInfo(pkgName, true);
+                if(localLOGV) Log.i(TAG, "Message COMPUTE_PKG_SIZE_START");
+                setProgressBarIndeterminateVisibility(true);
+                mComputeIndex = 0;
+                initAppList(mFilterApps);
                 break;
             case COMPUTE_PKG_SIZE_DONE:
-                ps = mObserver.ps;
-                info = mObserver.appInfo;
-                chained = data.getBoolean(ATTR_CHAINED);
-                if(!mObserver.succeeded) {
-                    if(chained) {
-                        removePackageFromAppList(ps.packageName);
-                    } else {
-                        //do not go to adding phase
+                if(localLOGV) Log.i(TAG, "Message COMPUTE_PKG_SIZE_DONE");
+                if(pkgName == null) {
+                     Log.w(TAG, "Ignoring message");
+                     break;
+                }
+                ps = data.getParcelable(ATTR_APP_PKG_STATS);
+                if(ps == null) {
+                    Log.i(TAG, "Invalid package stats for package:"+pkgName);
+                } else {
+                    int pkgId = mAppInfoAdapter.getIndex(pkgName);
+                    if(mComputeIndex != pkgId) {
+                        //spurious call from stale observer
+                        Log.w(TAG, "Stale call back from PkgSizeObserver");
                         break;
                     }
-                } else {
-                    //insert size value
-                    mSizeMap.put(ps.packageName, ps);
-                    Map<String, Object> entry = createMapEntry(mPm.getApplicationLabel(info), 
-                            mPm.getApplicationIcon(info), 
-                            info.loadDescription(mPm), 
-                            getSizeStr(ps));
-                    mAppAdapterMap.put(ps.packageName, entry);
+                    mAppInfoAdapter.updateAppSize(pkgName, ps);
                 }
-                if(chained) {
-                    //here app list is precomputed
-                    idx = data.getInt(ATTR_APP_IDX);
-                    //increment only if succeded
-                    if(mObserver.succeeded) {
-                        idx++;
-                    }
-                    if(idx <  mAppList.size()) {
-                        pkgName = mAppList.get(idx).packageName;
-                        //increment record index and invoke getSizeInfo for next record
-                        mObserver.invokeGetSizeInfo(pkgName, true);
-                    } else {
-                        sortAppList();
-                        createListFromValues();
-                        mDoneIniting = true;
-                    }
+                mComputeIndex++;
+                if (mComputeIndex < mAppInfoAdapter.getCount()) {
+                    // initiate compute package size for next pkg in list
+                    mObserver.invokeGetSizeInfo(mAppInfoAdapter.getApplicationInfo(
+                            mComputeIndex), 
+                            COMPUTE_PKG_SIZE_DONE);
                 } else {
-                    //add app info object as well
-                    mAppList.add(info);
-                    sortAppList();
-                    size = mAppList.size();
-                    int i;
-                    for(i = 0; i < size; i++) {
-                        if(mAppList.get(i).packageName.equalsIgnoreCase(mCurrentPkg.packageName)) {
-                            if(i > mCurrentPkgIdx) {
-                                mCurrentPkgIdx = i;
-                            }
-                            break;
+                    // check for added/removed packages
+                    Set<String> keys =  mAddRemoveMap.keySet();
+                    Iterator<String> iter = keys.iterator();
+                    List<String> removeList = new ArrayList<String>();
+                    boolean added = false;
+                    boolean removed = false;
+                    while (iter.hasNext()) {
+                        String key = iter.next();
+                        if (mAddRemoveMap.get(key) == Boolean.TRUE) {
+                            // add
+                            try {
+                                info = mPm.getApplicationInfo(key, 0);
+                                mAppInfoAdapter.addApplicationInfo(info);
+                                added = true;
+                            } catch (NameNotFoundException e) {
+                                Log.w(TAG, "Invalid added package:"+key+" Ignoring entry");
+                            }   
+                        } else {
+                            // remove
+                            removeList.add(key);
+                            removed = true;
                         }
                     }
-                    createListFromValues();
+                    // remove uninstalled packages from list
+                    if (removed) {
+                        mAppInfoAdapter.removeFromList(removeList);
+                    }
+                    // handle newly installed packages
+                    if (added) {
+                        mObserver.invokeGetSizeInfo(mAppInfoAdapter.getApplicationInfo(
+                                mComputeIndex), 
+                                COMPUTE_PKG_SIZE_DONE);
+                    } else {
+                        // end computation here
+                        mDoneIniting = true;
+                        mAppInfoAdapter.sortList(mSortOrder);
+                        //load resources now
+                        if(mResourceThread.isAlive()) {
+                            mResourceThread.interrupt();
+                        }
+                        mResourceThread.loadAllResources(mAppInfoAdapter.getAppList());
+                    }
                 }
                 break;
             case REMOVE_PKG:
-                if(!mDoneIniting) {
-                    //insert message again after some delay
-                    sendMessageToHandler(REMOVE_PKG, data, 10*1000);
+                if(localLOGV) Log.i(TAG, "Message REMOVE_PKG");
+                if(pkgName == null) {
+                    Log.w(TAG, "Ignoring message:REMOVE_PKG for null pkgName");
                     break;
                 }
-                pkgName = data.getString(ATTR_PKG_NAME);
-                removePackageFromAppList(pkgName);
-                if(mSizeMap.remove(pkgName) == null) {
-                    Log.i(TAG, "Coudnt remove from size map package:"+pkgName);
-                }
-                if(mAppAdapterMap.remove(pkgName) == null) {
-                    Log.i(TAG, "Coudnt remove from app adapter map package:"+pkgName);
-                }
-                if(mCurrentPkg.packageName.equalsIgnoreCase(pkgName)) {
-                    if(mCurrentPkgIdx == (mAppList.size()-1)) {
-                        mCurrentPkgIdx--;
+                if (!mDoneIniting) {
+                    Boolean currB = mAddRemoveMap.get(pkgName);
+                    if (currB == null || (currB.equals(Boolean.TRUE))) {
+                        mAddRemoveMap.put(pkgName, Boolean.FALSE);
                     }
-                    mCurrentPkg = mAppList.get(mCurrentPkgIdx);
+                    break;
                 }
-                createListFromValues();
+                List<String> pkgList = new ArrayList<String>();
+                pkgList.add(pkgName);
+                mAppInfoAdapter.removeFromList(pkgList);
                 break;
             case REORDER_LIST:
-                int sortOrder = msg.arg1;
-                if(sortOrder != mSortOrder) {
-                    mSortOrder = sortOrder;
-                    if(localLOGV) Log.i(TAG, "Changing sort order to "+mSortOrder);
-                    sortAppList();
-                    mCurrentPkgIdx  = 0;
-                    mCurrentPkg = mAppList.get(mCurrentPkgIdx);
-                    createListFromValues();
+                if(localLOGV) Log.i(TAG, "Message REORDER_LIST");
+                int menuOption = msg.arg1;
+                if((menuOption == SORT_ORDER_ALPHA) || 
+                        (menuOption == SORT_ORDER_SIZE)) {
+                    // Option to sort list
+                    if (menuOption != mSortOrder) {
+                        mSortOrder = menuOption;
+                        if (localLOGV) Log.i(TAG, "Changing sort order to "+mSortOrder);
+                        mAppInfoAdapter.sortList(mSortOrder);
+                    }
+                } else if(menuOption != mFilterApps) {
+                    // Option to filter list
+                    mFilterApps = menuOption;
+                    boolean ret = mAppInfoAdapter.resetAppList(mFilterApps, 
+                            getInstalledApps(mFilterApps));
+                    if(!ret) {
+                        // Reset cache
+                        mAppPropCache = null;
+                        mFilterApps = FILTER_APPS_ALL;
+                        mHandler.sendEmptyMessage(COMPUTE_PKG_SIZE_START);
+                        sendMessageToHandler(REORDER_LIST, menuOption);
+                    }
                 }
                 break;
-            case ADD_PKG:
-                pkgName = data.getString(ATTR_PKG_NAME);
-                if(!mDoneIniting) {
-                   //insert message again after some delay
-                    sendMessageToHandler(ADD_PKG, data, 10*1000);
+            case ADD_PKG_START:
+                if(localLOGV) Log.i(TAG, "Message ADD_PKG_START");
+                if(pkgName == null) {
+                    Log.w(TAG, "Ignoring message:ADD_PKG_START for null pkgName");
                     break;
                 }
-                mObserver.invokeGetSizeInfo(pkgName, false);
+                if (!mDoneIniting) {
+                    Boolean currB = mAddRemoveMap.get(pkgName);
+                    if (currB == null || (currB.equals(Boolean.FALSE))) {
+                        mAddRemoveMap.put(pkgName, Boolean.TRUE);
+                    }
+                    break;
+                }
+                try {
+                        info = mPm.getApplicationInfo(pkgName, 0);
+                    } catch (NameNotFoundException e) {
+                        Log.w(TAG, "Couldnt find application info for:"+pkgName);
+                        break;
+                    }
+                mObserver.invokeGetSizeInfo(info, ADD_PKG_DONE);
                 break;
+            case ADD_PKG_DONE:
+                if(localLOGV) Log.i(TAG, "Message COMPUTE_PKG_SIZE_DONE");
+                if(pkgName == null) {
+                    Log.w(TAG, "Ignoring message:ADD_PKG_START for null pkgName");
+                    break;
+                }
+                ps = data.getParcelable(ATTR_APP_PKG_STATS);
+                mAppInfoAdapter.addToList(pkgName, ps);
+                break;
+            case REFRESH_ICONS:
+                Map<String, AppInfo> iconMap = (Map<String, AppInfo>) msg.obj;
+                if(iconMap == null) {
+                    Log.w(TAG, "Error loading icons for applications");
+                } else {
+                    mAppInfoAdapter.updateAppsResourceInfo(iconMap);
+                    setProgressBarIndeterminateVisibility(false);
+                }
             default:
                 break;
             }
         }
     };
     
-    private void removePackageFromAppList(String pkgName) {
-        int size = mAppList.size();
-        for(int i = 0; i < size; i++) {
-            if(mAppList.get(i).packageName.equalsIgnoreCase(pkgName)) {
-                mAppList.remove(i);
-                break;
+    List<ApplicationInfo> getInstalledApps(int filterOption) {
+        List<ApplicationInfo> installedAppList = mPm.getInstalledApplications(
+                PackageManager.GET_UNINSTALLED_PACKAGES);
+        if (installedAppList == null) {
+            return new ArrayList<ApplicationInfo> ();
+        }
+        if (filterOption == FILTER_APPS_THIRD_PARTY) {
+            List<ApplicationInfo> appList =new ArrayList<ApplicationInfo> ();
+            for (ApplicationInfo appInfo : installedAppList) {
+                if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
+                    appList.add(appInfo);
+                }
             }
-        }
-    }
-    
-    private void clearMessages() {
-        synchronized(mHandler) {
-            mHandler.removeMessages(COMPUTE_PKG_SIZE_START);
-            mHandler.removeMessages(COMPUTE_PKG_SIZE_DONE);
-            mHandler.removeMessages(REMOVE_PKG);
-            mHandler.removeMessages(REORDER_LIST);
-            mHandler.removeMessages(ADD_PKG);
-        }
-    }
-    
-    private void sendMessageToHandler(int msgId, Bundle data, long delayMillis) {
-        synchronized(mHandler) {
-            Message msg = mHandler.obtainMessage(msgId);
-            msg.setData(data);
-            if(delayMillis == 0) {
-                mHandler.sendMessage(msg);
-            } else {
-                mHandler.sendMessageDelayed(msg, delayMillis);
+            return appList;
+        } 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;
             }
+            // Retrieve running processes from ActivityManager
+            for (ActivityManager.RunningAppProcessInfo appProcInfo : procList) {
+                if ((appProcInfo != null)  && (appProcInfo.pkgList != null)){
+                    int size = appProcInfo.pkgList.length;
+                    for (int i = 0; i < size; i++) {
+                        ApplicationInfo appInfo = null;
+                        try {
+                            appInfo = mPm.getApplicationInfo(appProcInfo.pkgList[i], 
+                                    PackageManager.GET_UNINSTALLED_PACKAGES);
+                        } catch (NameNotFoundException e) {
+                           Log.w(TAG, "Error retrieving ApplicationInfo for pkg:"+appProcInfo.pkgList[i]);
+                           continue;
+                        }
+                        if(appInfo != null) {
+                            appList.add(appInfo);
+                        }
+                    }
+                }
+            }
+            return appList;
+        } else {
+            return installedAppList;
         }
     }
     
-    private void sendMessageToHandler(int msgId, int arg1) {
-        synchronized(mHandler) {
-            Message msg = mHandler.obtainMessage(msgId);
-            msg.arg1 = arg1;
+    private List<ActivityManager.RunningAppProcessInfo> getRunningAppProcessesList() {
+        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
+        return am.getRunningAppProcesses();
+    }
+    
+    // some initialization code used when kicking off the size computation
+    private void initAppList(int filterOption) {
+        mDoneIniting = false;
+        // Initialize lists
+        List<ApplicationInfo> appList = getInstalledApps(filterOption);
+        mAddRemoveMap = new TreeMap<String, Boolean>();
+        mAppInfoAdapter = new AppInfoAdapter(this, appList);
+        dismissLoadingMsg();
+        // get list and set listeners and adapter
+        ListView lv= (ListView) findViewById(android.R.id.list);
+        lv.setOnItemClickListener(this);
+        lv.setSaveEnabled(true);
+        lv.setItemsCanFocus(true);
+        lv.setOnItemClickListener(this);
+        lv.setAdapter(mAppInfoAdapter);
+        // register receiver
+        mReceiver = new PackageIntentReceiver();
+        mReceiver.registerReceiver();
+        // initiate compute pkg sizes
+        if (localLOGV) Log.i(TAG, "Initiating compute sizes for first time");
+        mObserver = new PkgSizeObserver();
+        if(appList.size() > 0) {
+            mObserver.invokeGetSizeInfo(appList.get(0), COMPUTE_PKG_SIZE_DONE);
+        } else {
+            mDoneIniting = true;
+        }
+    }
+    
+    // internal structure used to track added and deleted packages when
+    // the activity has focus
+    class AddRemoveInfo {
+        String pkgName;
+        boolean add;
+        public AddRemoveInfo(String pPkgName, boolean pAdd) {
+            pkgName = pPkgName;
+            add = pAdd;
+        }
+    }
+    
+    class ResourceLoaderThread extends Thread {
+        List<ApplicationInfo> mAppList;
+        
+        void loadAllResources(List<ApplicationInfo> appList) {
+            if(appList == null || appList.size() <= 0) {
+                Log.w(TAG, "Empty or null application list");
+                return;
+            }
+            mAppList = appList;
+            start();
+        }
+
+        public void run() {
+            Map<String, AppInfo> iconMap = new HashMap<String, AppInfo>();
+            for (ApplicationInfo appInfo : mAppList) {
+                CharSequence appName = appInfo.loadLabel(mPm);
+                Drawable appIcon = appInfo.loadIcon(mPm);
+                iconMap.put(appInfo.packageName, 
+                        new AppInfo(appInfo.packageName, appName, appIcon));
+            }
+            Message msg = mHandler.obtainMessage(REFRESH_ICONS);
+            msg.obj = iconMap;
             mHandler.sendMessage(msg);
         }
     }
     
-    private void sendMessageToHandler(int msgId) {
-        synchronized(mHandler) {
-            mHandler.sendEmptyMessage(msgId);
+    /* Internal class representing an application or packages displayable attributes
+     * 
+     */
+    class AppInfo {
+        public String pkgName;
+        int index;
+        public  CharSequence appName;
+        public  Drawable appIcon;
+        public CharSequence appSize;
+        public PackageStats appStats;
+        
+        public void refreshIcon(AppInfo pInfo) {
+            appName = pInfo.appName;
+            appIcon = pInfo.appIcon;
+        }
+
+        public AppInfo(String pName, CharSequence aName, Drawable aIcon) {
+            index = -1;
+            pkgName = pName;
+            appName = aName;
+            appIcon = aIcon;
+            appStats = null;
+            appSize = mComputingSizeStr;
+        }
+        
+        public AppInfo(String pName, int pIndex, CharSequence aName, Drawable aIcon, 
+                PackageStats ps) {
+            index = pIndex;
+            pkgName = pName;
+            appName = aName;
+            appIcon = aIcon;
+            if(ps == null) {
+                appSize = mComputingSizeStr;
+            } else {
+                appStats = ps;
+                appSize = getSizeStr();
+            }
+        }
+        public void setSize(PackageStats ps) {
+            appStats = ps;
+            if (ps != null) {
+                appSize = getSizeStr();
+            }
+        }
+        public long getTotalSize() {
+            PackageStats ps = appStats;
+            if (ps != null) {
+                return ps.cacheSize+ps.codeSize+ps.dataSize;
+            }
+            return SIZE_INVALID;
+        }
+        
+        private String getSizeStr() {
+            PackageStats ps = appStats;
+            String retStr = "";
+            // insert total size information into map to display in view
+            // at this point its guaranteed that ps is not null. but checking anyway
+            if (ps != null) {
+                long size = getTotalSize();
+                if (size == SIZE_INVALID) {
+                    return mInvalidSizeStr.toString();
+                }
+                return Formatter.formatFileSize(ManageApplications.this, size);
+            }
+            return retStr;
         }
     }
     
-    class PkgSizeObserver extends IPackageStatsObserver.Stub {
-        public PackageStats ps;
-        public ApplicationInfo appInfo;
-        public Drawable appIcon;
-        public CharSequence appName;
-        public CharSequence appDesc = "";
-        private int mIdx = 0;
-        private boolean mChained = false;
-        public boolean succeeded;
-        PkgSizeObserver(int i) {
-            mIdx = i;
-        }
+    // View Holder used when displaying views
+    static class AppViewHolder {
+        TextView appName;
+        ImageView appIcon;
+        TextView appSize;
+    }
+    
+    /* Custom adapter implementation for the ListView
+     * This adapter maintains a map for each displayed application and its properties
+     * An index value on each AppInfo object indicates the correct position or index
+     * in the list. If the list gets updated dynamically when the user is viewing the list of
+     * applications, we need to return the correct index of position. This is done by mapping
+     * 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 {
+        private Map<String, AppInfo> mAppPropMap;
+        private List<ApplicationInfo> mAppLocalList;
+        ApplicationInfo.DisplayNameComparator mAlphaComparator;
+        AppInfoComparator mSizeComparator;
         
-        private void getAppDetails() {
-            try {
-                appInfo = mPm.getApplicationInfo(ps.packageName, 0);
-            } catch (NameNotFoundException e) {
-                return;
+        private AppInfo getFromCache(String packageName) {
+            if(mAppPropCache == null) {
+                return null;
             }
-            appName = appInfo.loadLabel(mPm);
-            appIcon = appInfo.loadIcon(mPm);
+            return mAppPropCache.get(packageName);
         }
         
-        public void onGetStatsCompleted(PackageStats pStats, boolean pSucceeded) {
-            Bundle data = new Bundle();
-            ps = pStats;
-            succeeded = pSucceeded;
-            if(mChained) {
-                data.putInt(ATTR_APP_IDX, mIdx);
-                if(succeeded) {
-                    mIdx++;
+        public AppInfoAdapter(Context c, List<ApplicationInfo> appList) {
+            mAppLocalList = appList;
+            boolean useCache = false;
+            int sortOrder = SORT_ORDER_ALPHA;
+            int imax = mAppLocalList.size();
+            if(mAppPropCache != null) {
+                useCache = true;
+                // Activity has been resumed. can use the cache to populate values initially
+                mAppPropMap = mAppPropCache;
+                sortOrder = mSortOrder;
+            }
+            sortAppList(sortOrder);
+            // Recreate property map
+            mAppPropMap = new TreeMap<String, AppInfo>();
+            for (int i = 0; i < imax; i++) {
+                ApplicationInfo info = mAppLocalList.get(i);
+                AppInfo aInfo = getFromCache(info.packageName);
+                if(aInfo == null){
+                    aInfo = new AppInfo(info.packageName, i, 
+                            info.packageName, mDefaultAppIcon, null);   
+                } else {
+                    aInfo.index = i;
+                }
+                mAppPropMap.put(info.packageName, aInfo);
+            }
+        }
+        
+        public int getCount() {
+            return mAppLocalList.size();
+        }
+        
+        public Object getItem(int position) {
+            return mAppLocalList.get(position);
+        }
+        
+        /*
+         * This method returns the index of the package position in the application list
+         */
+        public int getIndex(String pkgName) {
+            if(pkgName == null) {
+                Log.w(TAG, "Getting index of null package in List Adapter");
+            }
+            int imax = mAppLocalList.size();
+            ApplicationInfo appInfo;
+            for(int i = 0; i < imax; i++) {
+                appInfo = mAppLocalList.get(i);
+                if(appInfo.packageName.equalsIgnoreCase(pkgName)) {
+                    return i;
                 }
             }
-            data.putBoolean(ATTR_CHAINED, mChained);
-            getAppDetails();
-            if(localLOGV) Log.i(TAG, "onGetStatsCompleted::"+appInfo.packageName+", ("+ps.cacheSize+","+
-                    ps.codeSize+", "+ps.dataSize);
-            sendMessageToHandler(COMPUTE_PKG_SIZE_DONE, data, 0);
+            return -1;
         }
         
-        public void invokeGetSizeInfo(String packageName, boolean chained) {
-             mChained = chained;
-             mPm.getPackageSizeInfo(packageName, this);
+        public ApplicationInfo getApplicationInfo(int position) {
+            int imax = mAppLocalList.size();
+            if( (position < 0) || (position >= imax)) {
+                Log.w(TAG, "Position out of bounds in List Adapter");
+                return null;
+            }
+            return mAppLocalList.get(position);
+        }
+        
+        public void addApplicationInfo(ApplicationInfo info) {
+            if(info == null) {
+                Log.w(TAG, "Ignoring null add in List Adapter");
+                return;
+            }
+            mAppLocalList.add(info);
+        }
+
+        public long getItemId(int position) {
+            int imax = mAppLocalList.size();
+            if( (position < 0) || (position >= imax)) {
+                Log.w(TAG, "Position out of bounds in List Adapter");
+                return -1;
+            }
+            return mAppPropMap.get(mAppLocalList.get(position).packageName).index;
+        }
+        
+        public List<ApplicationInfo> getAppList() {
+            return mAppLocalList;
+        }
+        
+        public View getView(int position, View convertView, ViewGroup parent) {
+            // A ViewHolder keeps references to children views to avoid unneccessary calls
+            // to findViewById() on each row.
+            AppViewHolder holder;
+
+            // When convertView is not null, we can reuse it directly, there is no need
+            // to reinflate it. We only inflate a new View when the convertView supplied
+            // by ListView is null.
+            if (convertView == null) {
+                convertView = mInflater.inflate(R.layout.manage_applications_item, null);
+
+                // Creates a ViewHolder and store references to the two children views
+                // we want to bind data to.
+                holder = new AppViewHolder();
+                holder.appName = (TextView) convertView.findViewById(R.id.app_name);
+                holder.appIcon = (ImageView) convertView.findViewById(R.id.app_icon);
+                holder.appSize = (TextView) convertView.findViewById(R.id.app_size);
+                convertView.setTag(holder);
+            } else {
+                // Get the ViewHolder back to get fast access to the TextView
+                // and the ImageView.
+                holder = (AppViewHolder) convertView.getTag();
+            }
+
+            // Bind the data efficiently with the holder
+            ApplicationInfo appInfo = mAppLocalList.get(position);
+            AppInfo mInfo = mAppPropMap.get(appInfo.packageName);
+            if(mInfo != null) {
+                if(mInfo.appName != null) {
+                    holder.appName.setText(mInfo.appName);
+                }
+                if(mInfo.appIcon != null) {
+                    holder.appIcon.setImageDrawable(mInfo.appIcon);
+                }
+                holder.appSize.setText(mInfo.appSize);
+            } else {
+                Log.w(TAG, "No info for package:"+appInfo.packageName+" in property map");
+            }
+            return convertView;
+        }
+        
+        private void adjustIndex() {
+            int imax = mAppLocalList.size();
+            ApplicationInfo info;
+            for (int i = 0; i < imax; i++) {
+                info = mAppLocalList.get(i);
+                mAppPropMap.get(info.packageName).index = i;
+            }
+        }
+        
+        public void sortAppList(int sortOrder) {
+            Collections.sort(mAppLocalList, getAppComparator(sortOrder));
+        }
+        
+        public void sortList(int sortOrder) {
+            sortAppList(sortOrder);
+            adjustIndex();
+            notifyDataSetChanged();
+        }
+        
+        public boolean resetAppList(int filterOption, List<ApplicationInfo> appList) {
+           // Create application list based on the filter value
+           mAppLocalList = appList;
+           // Check for all properties in map before sorting. Populate values from cache
+           for(ApplicationInfo applicationInfo : mAppLocalList) {
+               AppInfo appInfo = mAppPropMap.get(applicationInfo.packageName);
+               if(appInfo == null) {
+                   AppInfo rInfo = getFromCache(applicationInfo.packageName);
+                   if(rInfo == null) {
+                       // Need to load resources again. Inconsistency somewhere
+                       return false;
+                   }
+                   mAppPropMap.put(applicationInfo.packageName, rInfo);
+               }
+           }
+           sortList(mSortOrder);
+           return true;
+        }
+        
+        private Comparator<ApplicationInfo> getAppComparator(int sortOrder) {
+            if (sortOrder == SORT_ORDER_ALPHA) {
+                // Lazy initialization
+                if (mAlphaComparator == null) {
+                    mAlphaComparator = new ApplicationInfo.DisplayNameComparator(mPm);
+                }
+                return mAlphaComparator;
+            }
+            // Lazy initialization
+            if(mSizeComparator == null) {
+                mSizeComparator = new AppInfoComparator(mAppPropMap);
+            }
+            return mSizeComparator;
+        }
+        
+        public void updateAppsResourceInfo(Map<String, AppInfo> iconMap) {
+            if(iconMap == null) {
+                Log.w(TAG, "Null iconMap when refreshing icon in List Adapter");
+                return;
+            }
+            boolean changed = false;
+            for (ApplicationInfo info : mAppLocalList) {
+                AppInfo pInfo = iconMap.get(info.packageName);
+                if(pInfo != null) {
+                    AppInfo aInfo = mAppPropMap.get(info.packageName);
+                    aInfo.refreshIcon(pInfo);
+                    changed = true;
+                }
+            }
+            if(changed) {
+                notifyDataSetChanged();
+            }
+        }
+        
+        public void addToList(String pkgName, PackageStats ps) {
+            if(pkgName == null) {
+                Log.w(TAG, "Adding null pkg to List Adapter");
+                return;
+            }
+            ApplicationInfo info;
+            try {
+                info = mPm.getApplicationInfo(pkgName, 0);
+            } catch (NameNotFoundException e) {
+                Log.w(TAG, "Ignoring non-existent package:"+pkgName);
+                return;
+            }
+            if(info == null) {
+                // Nothing to do log error message and return
+                Log.i(TAG, "Null ApplicationInfo for package:"+pkgName);
+                return;
+            }
+            // 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;
+            }
+            // New entry
+            newIdx = -newIdx-1;
+            mAppLocalList.add(newIdx, info);
+            mAppPropMap.put(info.packageName, new AppInfo(pkgName, newIdx,
+                    info.loadLabel(mPm), info.loadIcon(mPm), ps));
+            adjustIndex();
+            notifyDataSetChanged();
+        }
+        
+        public void removeFromList(List<String> pkgNames) {
+            if(pkgNames == null) {
+                Log.w(TAG, "Removing null pkg list from List Adapter");
+                return;
+            }
+            int imax = mAppLocalList.size();
+            boolean found = false;
+            ApplicationInfo info;
+            int i, k;
+            String pkgName;
+            int kmax = pkgNames.size();
+            if(kmax  <= 0) {
+                Log.w(TAG, "Removing empty pkg list from List Adapter");
+                return;
+            }
+            int idxArr[] = new int[kmax];
+            for (k = 0; k < kmax; k++) {
+                idxArr[k] = -1;
+            }
+            for (i = 0; i < imax; i++) {
+                info = mAppLocalList.get(i);
+                for (k = 0; k < kmax; k++) {
+                    pkgName = pkgNames.get(k);
+                    if (info.packageName.equalsIgnoreCase(pkgName)) {
+                        idxArr[k] = i;
+                        found = true;
+                        break;
+                    }
+                }
+            }
+            // Sort idxArr
+            Arrays.sort(idxArr);
+            // remove the packages based on decending indices
+            for (k = kmax-1; k >= 0; k--) {
+                // Check if package has been found in the list of existing apps first
+                if(idxArr[k] == -1) {
+                    break;
+                }
+                info = mAppLocalList.get(idxArr[k]);
+                mAppLocalList.remove(idxArr[k]);
+                mAppPropMap.remove(info.packageName);
+                if (localLOGV) Log.i(TAG, "Removed pkg:"+info.packageName+ " list");
+            }
+            if (found) {
+                adjustIndex();
+                notifyDataSetChanged();
+            }
+        }   
+        
+        public void updateAppSize(String pkgName, PackageStats ps) {
+            if(pkgName == null) {
+                return;
+            }
+            AppInfo entry = mAppPropMap.get(pkgName);
+            if (entry == null) {
+                Log.w(TAG, "Entry for package:"+pkgName+"doesnt exist in map");
+                return;
+            }
+            // Copy the index into the newly updated entry
+            entry.setSize(ps);
+            notifyDataSetChanged();
+        }
+
+        public PackageStats getAppStats(String pkgName) {
+            if(pkgName == null) {
+                return null;
+            }
+            AppInfo entry = mAppPropMap.get(pkgName);
+            if (entry == null) {
+                return null;
+            }
+            return entry.appStats;
+        }
+    }
+    
+    /*
+     * Utility method to clear messages to Handler
+     * We need'nt synchronize on the Handler since posting messages is guaranteed
+     * to be thread safe. Even if the other thread that retrieves package sizes
+     * posts a message, we do a cursory check of validity on mAppInfoAdapter's applist
+     */
+    private void clearMessagesInHandler() {
+        mHandler.removeMessages(COMPUTE_PKG_SIZE_START);
+        mHandler.removeMessages(COMPUTE_PKG_SIZE_DONE);
+        mHandler.removeMessages(REMOVE_PKG);
+        mHandler.removeMessages(REORDER_LIST);
+        mHandler.removeMessages(ADD_PKG_START);
+        mHandler.removeMessages(ADD_PKG_DONE);
+    }
+    
+    private void sendMessageToHandler(int msgId, int arg1) {
+        Message msg = mHandler.obtainMessage(msgId);
+        msg.arg1 = arg1;
+        mHandler.sendMessage(msg);
+    }
+    
+    private void sendMessageToHandler(int msgId, Bundle data) {
+        Message msg = mHandler.obtainMessage(msgId);
+        msg.setData(data);
+        mHandler.sendMessage(msg);
+    }
+    
+    private void sendMessageToHandler(int msgId) {
+        mHandler.sendEmptyMessage(msgId);
+    }
+    
+    /*
+     * Stats Observer class used to compute package sizes and retrieve size information
+     * PkgSizeOberver is the call back thats used when invoking getPackageSizeInfo on
+     * PackageManager. The values in call back onGetStatsCompleted are validated
+     * and the specified message is passed to mHandler. The package name
+     * and the AppInfo object corresponding to the package name are set on the message
+     */
+    class PkgSizeObserver extends IPackageStatsObserver.Stub {
+        private ApplicationInfo mAppInfo;
+        private int mMsgId; 
+        public void onGetStatsCompleted(PackageStats pStats, boolean pSucceeded) {
+            if(DEBUG_PKG_DELAY) {
+                try {
+                    Thread.sleep(10*1000);
+                } catch (InterruptedException e) {
+                }
+            }
+            AppInfo appInfo = null;
+            Bundle data = new Bundle();
+            data.putString(ATTR_PKG_NAME, mAppInfo.packageName);
+            if(pSucceeded && pStats != null) {
+                if (localLOGV) Log.i(TAG, "onGetStatsCompleted::"+pStats.packageName+", ("+
+                        pStats.cacheSize+","+
+                        pStats.codeSize+", "+pStats.dataSize);
+                data.putParcelable(ATTR_APP_PKG_STATS, pStats);
+            } else {
+                Log.w(TAG, "Invalid package stats from PackageManager");
+            }
+            //post message to Handler
+            Message msg = mHandler.obtainMessage(mMsgId, data);
+            msg.setData(data);
+            mHandler.sendMessage(msg);
+        }
+
+        public void invokeGetSizeInfo(ApplicationInfo pAppInfo, int msgId) {
+            if(pAppInfo == null || pAppInfo.packageName == null) {
+                return;
+            }
+            if(localLOGV) Log.i(TAG, "Invoking getPackageSizeInfo for package:"+
+                    pAppInfo.packageName);
+            mMsgId = msgId;
+            mAppInfo = pAppInfo;
+            mPm.getPackageSizeInfo(pAppInfo.packageName, this);
         }
     }
     
@@ -360,239 +998,147 @@
             String actionStr = intent.getAction();
             Uri data = intent.getData();
             String pkgName = data.getEncodedSchemeSpecificPart();
-            if(localLOGV) Log.i(TAG, "action:"+actionStr+", for package:"+pkgName);
+            if (localLOGV) Log.i(TAG, "action:"+actionStr+", for package:"+pkgName);
             updatePackageList(actionStr, pkgName);
         }
     }
     
     private void updatePackageList(String actionStr, String pkgName) {
-        //technically we dont have to invoke handler since onReceive is invoked on
-        //the main thread but doing it here for better clarity
-        if(Intent.ACTION_PACKAGE_ADDED.equalsIgnoreCase(actionStr)) {
+        // technically we dont have to invoke handler since onReceive is invoked on
+        // the main thread but doing it here for better clarity
+        if (Intent.ACTION_PACKAGE_ADDED.equalsIgnoreCase(actionStr)) {
             Bundle data = new Bundle();
             data.putString(ATTR_PKG_NAME, pkgName);
-            sendMessageToHandler(ADD_PKG, data, 0);
-        } else if(Intent.ACTION_PACKAGE_REMOVED.equalsIgnoreCase(actionStr)) {
+            sendMessageToHandler(ADD_PKG_START, data);
+        } else if (Intent.ACTION_PACKAGE_REMOVED.equalsIgnoreCase(actionStr)) {
             Bundle data = new Bundle();
             data.putString(ATTR_PKG_NAME, pkgName);
-            sendMessageToHandler(REMOVE_PKG, data, 0);
-        } else if(Intent.ACTION_PACKAGE_CHANGED.equalsIgnoreCase(actionStr)) {
-            //force adapter to draw the list again. TODO derive from SimpleAdapter
-            //to avoid this
-           
-        }   
-    }
-    
-    /*
-     * Utility method to create an array of map objects from a map of map objects
-     *  for displaying list items to be used in SimpleAdapter.
-     */
-    private void createListFromValues() {
-        findViewById(R.id.center_text).setVisibility(View.GONE);
-        populateAdapterList();
-        mAppAdapter.setViewBinder(this);
-        ListView lv= (ListView) findViewById(android.R.id.list);
-        lv.setOnItemClickListener(this);
-        lv.setAdapter(mAppAdapter);
-        if(mCurrentPkgIdx != -1) {
-            lv.setSelection(mCurrentPkgIdx);
+            sendMessageToHandler(REMOVE_PKG, data);
         }
     }
     
+    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        String action = getIntent().getAction();
-        if(action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
+        Intent lIntent = getIntent();
+        String action = lIntent.getAction();
+        if (action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
             mSortOrder = SORT_ORDER_SIZE;
         }
         mPm = getPackageManager();
-        //load strings from resources
-        mBStr = getString(R.string.b_text);
-        mKbStr = getString(R.string.kb_text);
-        mMbStr = getString(R.string.mb_text);
+        // initialize some window features
+        requestWindowFeature(Window.FEATURE_RIGHT_ICON);
+        requestWindowFeature(Window.FEATURE_PROGRESS);
+        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+        // init mLoadingDlg
+        mLoadingDlg = new ProgressDialog(this);
+        mLoadingDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+        mLoadingDlg.setMessage(getText(R.string.loading));
+        mLoadingDlg.setIndeterminate(true);        
+        mLoadingDlg.setOnCancelListener(this);
+        mDefaultAppIcon =Resources.getSystem().getDrawable(
+                com.android.internal.R.drawable.sym_def_app_icon);
+        mInvalidSizeStr = getText(R.string.invalid_size_value);
+        mComputingSizeStr = getText(R.string.computing_size);
+        // initialize the inflater
+        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    }
+    
+    private void showLoadingMsg() {
+        if (mLoadingDlg != null) {
+            if(localLOGV) Log.i(TAG, "Displaying Loading message");
+            mLoadingDlg.show();
+        }
+    }
+    
+    private void dismissLoadingMsg() {
+        if ((mLoadingDlg != null) && (mLoadingDlg.isShowing())) {
+            if(localLOGV) Log.i(TAG, "Dismissing Loading message");
+            mLoadingDlg.dismiss();
+        }
     }
     
     @Override
     public void onStart() {
         super.onStart();
         setContentView(R.layout.compute_sizes);
-        //clear all messages related to application list
-        clearMessages();
+        showLoadingMsg();
+        // Create a thread to load resources
+        mResourceThread = new ResourceLoaderThread();
         sendMessageToHandler(COMPUTE_PKG_SIZE_START);
     }
 
     @Override
     public void onStop() {
         super.onStop();
-        //register receiver here
+        // clear all messages related to application list
+        clearMessagesInHandler();
+        // register receiver here
         unregisterReceiver(mReceiver);        
+        mAppPropCache = mAppInfoAdapter.mAppPropMap;
     }
     
+    /*
+     * comparator class used to sort AppInfo objects based on size
+     */
     public static class AppInfoComparator implements Comparator<ApplicationInfo> {
-        public AppInfoComparator(HashMap<String, PackageStats> pSizeMap) {
-            mSizeMap= pSizeMap;
+        public AppInfoComparator(Map<String, AppInfo> pAppPropMap) {
+            mAppPropMap= pAppPropMap;
         }
 
         public final int compare(ApplicationInfo a, ApplicationInfo b) {
-            PackageStats aps, bps;
-            aps = mSizeMap.get(a.packageName);
-            bps = mSizeMap.get(b.packageName);
-            if (aps == null && bps == null) {
-                return 0;
-            } else if (aps == null) {
-                return 1;
-            } else if (bps == null) {
-                return -1;
-            }
-            long atotal = aps.dataSize+aps.codeSize+aps.cacheSize;
-            long btotal = bps.dataSize+bps.codeSize+bps.cacheSize;
-            long ret = atotal-btotal;
-            //negate result to sort in descending order
-            if(ret < 0) {
+            AppInfo ainfo = mAppPropMap.get(a.packageName);
+            AppInfo binfo = mAppPropMap.get(b.packageName);
+            long atotal = ainfo.getTotalSize();
+            long btotal = binfo.getTotalSize();
+            long ret = atotal - btotal;
+            // negate result to sort in descending order
+            if (ret < 0) {
                 return 1;
             }
-            if(ret == 0) {
+            if (ret == 0) {
                 return 0;
             }
             return -1;
         }
-        private HashMap<String, PackageStats> mSizeMap;
+        private Map<String, AppInfo> mAppPropMap;
     }
-
-    /*
-     * Have to extract elements form map and populate a list ot be used by
-     * SimpleAdapter when displaying list elements. The sort order has to follow
-     * the order of elements in mAppList.
-     */
-     private List<Map<String, ?>> createAdapterListFromMap() {
-         //get the index from mAppInfo which gives the correct sort position
-         int imax = mAppList.size();
-         if(localLOGV) Log.i(TAG, "Creating new adapter list");
-         List<Map<String, ?>> adapterList = new ArrayList<Map<String, ?>>();
-         ApplicationInfo tmpInfo;
-         for(int i = 0; i < imax; i++) {
-             tmpInfo = mAppList.get(i);
-             Map<String, Object>newObj = new TreeMap<String, Object>(
-                     mAppAdapterMap.get(tmpInfo.packageName));
-             adapterList.add(newObj);
-         }
-         return adapterList;
-     }
      
-    private void populateAdapterList() {
-        mAppAdapter = new SimpleAdapter(this, createAdapterListFromMap(),
-                    R.layout.manage_applications_item, sKeys, sResourceIds);
-    }
-    
-    private String getSizeStr(PackageStats ps) {
-        String retStr = "";
-        //insert total size information into map to display in view
-        //at this point its guaranteed that ps is not null. but checking anyway
-        if(ps != null) {
-            long size = ps.cacheSize+ps.codeSize+ps.dataSize;
-            if(size < 1024) {
-                return String.valueOf(size)+mBStr;
-            }
-            long kb, mb, rem;
-            kb = size >> 10;
-            rem = size - (kb << 10);
-            if(kb < 1024) {
-                if(rem > 512) {
-                    kb++;
-                }
-                retStr += String.valueOf(kb)+mKbStr;
-                return retStr;
-            }
-            mb = kb >> 10;
-            if(kb >= 512) {
-                //round off
-                mb++;
-            }
-            retStr += String.valueOf(mb)+ mMbStr;
-            return retStr;
-        } else {
-            Log.w(TAG, "Something fishy, cannot find size info for package:"+ps.packageName);
-        }
-        return retStr;
-    }
-    
-    public void sortAppList() {
-        // Sort application list
-        if(mSortOrder == SORT_ORDER_ALPHA) {
-            Collections.sort(mAppList, new ApplicationInfo.DisplayNameComparator(mPm));
-        } else if(mSortOrder == SORT_ORDER_SIZE) {
-            Collections.sort(mAppList, new AppInfoComparator(mSizeMap));
-        }
-    }
-    
-    private Map<String, Object> createMapEntry(CharSequence appName, 
-            Drawable appIcon, CharSequence appDesc, String sizeStr) {
-        Map<String, Object> map = new TreeMap<String, Object>();
-        map.put(KEY_APP_NAME, appName);
-        //the icon cannot be null. if the application hasnt set it, the default icon is returned.
-        map.put(KEY_APP_ICON, appIcon);
-        if(appDesc == null) {
-            appDesc="";
-        }
-        map.put(KEY_APP_DESC, appDesc);
-        map.put(KEY_APP_SIZE, sizeStr);
-        return map;
-    }
-    
+    // utility method used to start sub activity
     private void startApplicationDetailsActivity(ApplicationInfo info, PackageStats ps) {
-        //Create intent to start new activity
+        // Create intent to start new activity
         Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setClass(this, InstalledAppDetails.class);
-        intent.putExtra(APP_PKG_NAME, info.packageName);
-        if(localLOGV) Log.i(TAG, "code="+ps.codeSize+", cache="+ps.cacheSize+", data="+ps.dataSize);
-        intent.putExtra(APP_PKG_SIZE,  ps);
-        if(localLOGV) Log.i(TAG, "Starting sub activity to display info for app:"+info
-                +" with intent:"+intent);
-        //start new activity to display extended information
-        if ((info.flags&ApplicationInfo.FLAG_SYSTEM) != 0) {
-        }
+        mCurrentPkgName = info.packageName;
+        intent.putExtra(APP_PKG_NAME, mCurrentPkgName);
+        intent.putExtra(APP_PKG_SIZE, ps);
+        // start new activity to display extended information
         startActivityForResult(intent, INSTALLED_APP_DETAILS);
     }
     
-    public boolean setViewValue(View view, Object data, String textRepresentation) {
-        if(data == null) {
-            return false;
-        }
-        int id = view.getId();
-        switch(id) {
-        case R.id.app_name:
-            ((TextView)view).setText((String)data);
-            break;
-        case R.id.app_icon:
-            ((ImageView)view).setImageDrawable((Drawable)data);
-            break;
-        case R.id.app_description:
-            ((TextView)view).setText((String)data);
-            break;
-        case R.id.app_size:
-            ((TextView)view).setText((String)data);
-            break;
-        default:
-                break;
-        }
-        return true;
-    }
-    
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        menu.add(0, SORT_ORDER_ALPHA, 0, R.string.sort_order_alpha)
+        menu.add(0, SORT_ORDER_ALPHA, 1, R.string.sort_order_alpha)
                 .setIcon(android.R.drawable.ic_menu_sort_alphabetically);
-        menu.add(0, SORT_ORDER_SIZE, 0, R.string.sort_order_size)
-                .setIcon(android.R.drawable.ic_menu_sort_by_size);
+        menu.add(0, SORT_ORDER_SIZE, 2, R.string.sort_order_size)
+                .setIcon(android.R.drawable.ic_menu_sort_by_size); 
+        menu.add(0, FILTER_APPS_ALL, 3, R.string.filter_apps_all);
+        menu.add(0, FILTER_APPS_RUNNING, 4, R.string.filter_apps_running);
+        menu.add(0, FILTER_APPS_THIRD_PARTY, 5, R.string.filter_apps_third_party);        
         return true;
     }
     
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
-        if(mDoneIniting) {
+        if (mDoneIniting) {
             menu.findItem(SORT_ORDER_ALPHA).setVisible(mSortOrder != SORT_ORDER_ALPHA);
-            menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder!= SORT_ORDER_SIZE);
+            menu.findItem(SORT_ORDER_SIZE).setVisible(mSortOrder != SORT_ORDER_SIZE);
+            menu.findItem(FILTER_APPS_ALL).setVisible(mFilterApps != FILTER_APPS_ALL);
+            menu.findItem(FILTER_APPS_THIRD_PARTY).setVisible(
+                    mFilterApps != FILTER_APPS_THIRD_PARTY);
+            menu.findItem(FILTER_APPS_RUNNING).setVisible(
+                    mFilterApps != FILTER_APPS_RUNNING);
             return true;
         } 
         return false;
@@ -607,10 +1153,13 @@
 
     public void onItemClick(AdapterView<?> parent, View view, int position,
             long id) {
-        mCurrentPkgIdx=position;
-        ApplicationInfo info = mAppList.get(position);
-        mCurrentPkg = info;        
-        PackageStats ps = mSizeMap.get(info.packageName);
-        startApplicationDetailsActivity(info, ps);
+        ApplicationInfo info = (ApplicationInfo)mAppInfoAdapter.getItem(position);
+        startApplicationDetailsActivity(info, mAppInfoAdapter.getAppStats(info.packageName));
+    }
+    
+    // onCancel call back for dialog thats displayed when data is being loaded
+    public void onCancel(DialogInterface dialog) {
+        mLoadingDlg = null;
+        finish();
     }
 }
diff --git a/src/com/android/settings/ProxySelector.java b/src/com/android/settings/ProxySelector.java
index d320e73..80fe3c9 100644
--- a/src/com/android/settings/ProxySelector.java
+++ b/src/com/android/settings/ProxySelector.java
@@ -222,7 +222,7 @@
         if (!TextUtils.isEmpty(hostname)) {
             hostname += ':' + portStr;
         }
-        Settings.System.putString(res, Settings.System.HTTP_PROXY, hostname);
+        Settings.Secure.putString(res, Settings.Secure.HTTP_PROXY, hostname);
         sendBroadcast(new Intent(Proxy.PROXY_CHANGE_ACTION));
 
         return true;
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index ad30de7..b1ad777 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -31,13 +31,14 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemProperties;
-import android.pim.DateUtils;
 import android.preference.PreferenceManager;
 import android.telephony.CellLocation;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
+import android.telephony.NeighboringCellInfo;
 import android.telephony.gsm.GsmCellLocation;
+import android.text.format.DateUtils;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -66,6 +67,7 @@
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.net.UnknownHostException;
+import java.util.ArrayList;
 import java.util.List;
 
 public class RadioInfo extends Activity {
@@ -210,7 +212,7 @@
                 case EVENT_QUERY_NEIGHBORING_CIDS_DONE:
                     ar= (AsyncResult) msg.obj;
                     if (ar.exception == null) {
-                        updateNeighboringCids((String[])ar.result);
+                        updateNeighboringCids((ArrayList<NeighboringCellInfo>)ar.result);
                     } else {
                         mNeighboringCids.setText("unknown");
                     }
@@ -651,23 +653,21 @@
                 + ((cid == -1) ? "unknown" : Integer.toHexString(cid)));
     }
 
-    private final void updateNeighboringCids(String[] cids) {
-        if (cids != null && cids.length > 0 && cids[0] != null) {
-            int size = Integer.parseInt(cids[0]);
-            String neiborings;
-            if (size > 0) {
-                neiborings = "{";
-                for (int i=1; i<=size; i++) {
-                    neiborings += cids[i] + ", ";
-                }
-                neiborings += "}";
+    private final void updateNeighboringCids(ArrayList<NeighboringCellInfo> cids) {
+        String neighborings = "";
+        if (cids != null) {
+            if ( cids.isEmpty() ) {
+                neighborings = "no neighboring cells";
             } else {
-                neiborings = "none";
+                for (NeighboringCellInfo cell : cids) {
+                    neighborings += "{" + Integer.toHexString(cell.getCid()) 
+                    + "@" + cell.getRssi() + "} ";
+                }
             }
-            mNeighboringCids.setText(neiborings);
         } else {
-            mNeighboringCids.setText("unknown");
+            neighborings = "unknown";
         }
+        mNeighboringCids.setText(neighborings);
     }
 
     private final void
@@ -952,13 +952,15 @@
                   .append("\n    to ")
                   .append(pdp.getApn().toString())
                   .append("\ninterface: ")
-                  .append(phone.getInterfaceName(phone.getActiveApn()))
+                  .append(phone.getInterfaceName(phone.getActiveApnTypes()[0]))
                   .append("\naddress: ")
-                  .append(phone.getIpAddress(phone.getActiveApn()))
+                  .append(phone.getIpAddress(phone.getActiveApnTypes()[0]))
                   .append("\ngateway: ")
-                  .append(phone.getGateway(phone.getActiveApn()));
-                String[] dns = phone.getDnsServers(phone.getActiveApn()); 
-                sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]);
+                  .append(phone.getGateway(phone.getActiveApnTypes()[0]));
+                String[] dns = phone.getDnsServers(phone.getActiveApnTypes()[0]);
+                if (dns != null) {
+                    sb.append("\ndns: ").append(dns[0]).append(", ").append(dns[1]);
+                }
             } else if (pdp.getState().isInactive()) {
                 sb.append("    disconnected with last try at ")
                   .append(DateUtils.timeString(pdp.getLastFailTime()))
diff --git a/src/com/android/settings/RingerVolumePreference.java b/src/com/android/settings/RingerVolumePreference.java
new file mode 100644
index 0000000..2d21ec6
--- /dev/null
+++ b/src/com/android/settings/RingerVolumePreference.java
@@ -0,0 +1,129 @@
+/*
+ * 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;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.preference.VolumePreference;
+import android.preference.VolumePreference.SeekBarVolumizer;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+/**
+ * Special preference type that allows configuration of both the ring volume and
+ * notification volume.
+ */
+public class RingerVolumePreference extends VolumePreference implements
+        CheckBox.OnCheckedChangeListener {
+    private static final String TAG = "RingerVolumePreference";
+
+    private CheckBox mNotificationsUseRingVolumeCheckbox;
+    private SeekBarVolumizer mNotificationSeekBarVolumizer;
+    private TextView mNotificationVolumeTitle;
+    
+    public RingerVolumePreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        // The always visible seekbar is for ring volume
+        setStreamType(AudioManager.STREAM_RING);
+        
+        setDialogLayoutResource(R.layout.preference_dialog_ringervolume);
+    }
+
+    @Override
+    protected void onBindDialogView(View view) {
+        super.onBindDialogView(view);
+     
+        mNotificationsUseRingVolumeCheckbox =
+                (CheckBox) view.findViewById(R.id.same_notification_volume);
+        mNotificationsUseRingVolumeCheckbox.setOnCheckedChangeListener(this);
+        mNotificationsUseRingVolumeCheckbox.setChecked(Settings.System.getInt(
+                getContext().getContentResolver(),
+                Settings.System.NOTIFICATIONS_USE_RING_VOLUME, 1) == 1);
+        
+        final SeekBar seekBar = (SeekBar) view.findViewById(R.id.notification_volume_seekbar);
+        mNotificationSeekBarVolumizer = new SeekBarVolumizer(getContext(), seekBar,
+                AudioManager.STREAM_NOTIFICATION);
+        
+        mNotificationVolumeTitle = (TextView) view.findViewById(R.id.notification_volume_title);
+        
+        setNotificationVolumeVisibility(!mNotificationsUseRingVolumeCheckbox.isChecked());
+    }
+
+    @Override
+    protected void onDialogClosed(boolean positiveResult) {
+        super.onDialogClosed(positiveResult);
+        
+        if (!positiveResult && mNotificationSeekBarVolumizer != null) {
+            mNotificationSeekBarVolumizer.revertVolume();
+        }
+        
+        cleanup();
+    }
+
+    @Override
+    public void onActivityStop() {
+        super.onActivityStop();
+        cleanup();
+    }
+    
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+        setNotificationVolumeVisibility(!isChecked);
+        
+        Settings.System.putInt(getContext().getContentResolver(),
+                Settings.System.NOTIFICATIONS_USE_RING_VOLUME, isChecked ? 1 : 0);
+        
+        if (isChecked) {
+            // The user wants the notification to be same as ring, so do a
+            // one-time sync right now
+            AudioManager audioManager = (AudioManager) getContext()
+                    .getSystemService(Context.AUDIO_SERVICE);
+            audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,
+                    audioManager.getStreamVolume(AudioManager.STREAM_RING), 0);
+        }
+    }
+
+    @Override
+    protected void onSampleStarting(SeekBarVolumizer volumizer) {
+        super.onSampleStarting(volumizer);
+        
+        if (mNotificationSeekBarVolumizer != null && volumizer != mNotificationSeekBarVolumizer) {
+            mNotificationSeekBarVolumizer.stopSample();
+        }
+    }
+
+    private void setNotificationVolumeVisibility(boolean visible) {
+        if (mNotificationSeekBarVolumizer != null) {
+            mNotificationSeekBarVolumizer.getSeekBar().setVisibility(
+                    visible ? View.VISIBLE : View.GONE);
+            mNotificationVolumeTitle.setVisibility(visible ? View.VISIBLE : View.GONE);
+        }
+    }
+    
+    private void cleanup() {
+        if (mNotificationSeekBarVolumizer != null) {
+            mNotificationSeekBarVolumizer.stop();
+            mNotificationSeekBarVolumizer = null;
+        }
+    }
+    
+}
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index c1a509a..a0a52a2 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -44,11 +44,13 @@
     
     private static final String KEY_LOCK_ENABLED = "lockenabled";
     private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
+    private static final String KEY_TACTILE_FEEDBACK_ENABLED = "tactilefeedback";
     private static final int CONFIRM_PATTERN_REQUEST_CODE = 55;
 
     private LockPatternUtils mLockPatternUtils;
     private CheckBoxPreference mLockEnabled;
     private CheckBoxPreference mVisiblePattern;
+    private CheckBoxPreference mTactileFeedback;
     private Preference mChoosePattern;
 
     private CheckBoxPreference mShowPassword;
@@ -103,6 +105,12 @@
         mVisiblePattern.setTitle(R.string.lockpattern_settings_enable_visible_pattern_title);
         inlinePrefCat.addPreference(mVisiblePattern);
 
+        // tactile feedback
+        mTactileFeedback = new CheckBoxPreference(this);
+        mTactileFeedback.setKey(KEY_TACTILE_FEEDBACK_ENABLED);
+        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",
@@ -146,9 +154,11 @@
         boolean patternExists = mLockPatternUtils.savedPatternExists();
         mLockEnabled.setEnabled(patternExists);
         mVisiblePattern.setEnabled(patternExists);
+        mTactileFeedback.setEnabled(patternExists);
 
         mLockEnabled.setChecked(mLockPatternUtils.isLockPatternEnabled());
         mVisiblePattern.setChecked(mLockPatternUtils.isVisiblePatternEnabled());
+        mTactileFeedback.setChecked(mLockPatternUtils.isTactileFeedbackEnabled());
 
         int chooseStringRes = mLockPatternUtils.savedPatternExists() ?
                 R.string.lockpattern_settings_change_lock_pattern :
@@ -169,6 +179,8 @@
             mLockPatternUtils.setLockPatternEnabled(isToggled(preference));
         } else if (KEY_VISIBLE_PATTERN.equals(key)) {
             mLockPatternUtils.setVisiblePatternEnabled(isToggled(preference));
+        } else if (KEY_TACTILE_FEEDBACK_ENABLED.equals(key)) {
+            mLockPatternUtils.setTactileFeedbackEnabled(isToggled(preference));
         } else if (preference == mShowPassword) {
             Settings.System.putInt(getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD,
                     mShowPassword.isChecked() ? 1 : 0);
@@ -198,9 +210,9 @@
     }
 
     private void setProviders(String providers) {
-        // Update the system setting LOCATION_PROVIDERS_ALLOWED
-        Settings.System.putString(getContentResolver(),
-                Settings.System.LOCATION_PROVIDERS_ALLOWED, providers);
+        // Update the secure setting LOCATION_PROVIDERS_ALLOWED
+        Settings.Secure.putString(getContentResolver(),
+            Settings.Secure.LOCATION_PROVIDERS_ALLOWED, providers);
         if (Config.LOGV) {
             Log.v("Location Accuracy", "Setting LOCATION_PROVIDERS_ALLOWED = " + providers);
         }
@@ -213,8 +225,8 @@
      */
     private String getAllowedProviders() {
         String allowedProviders =
-            Settings.System.getString(getContentResolver(),
-                Settings.System.LOCATION_PROVIDERS_ALLOWED);
+            Settings.Secure.getString(getContentResolver(),
+                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
         if (allowedProviders == null) {
             allowedProviders = "";
         }
diff --git a/src/com/android/settings/SettingsLicenseActivity.java b/src/com/android/settings/SettingsLicenseActivity.java
index 82eadca..c40dd07 100644
--- a/src/com/android/settings/SettingsLicenseActivity.java
+++ b/src/com/android/settings/SettingsLicenseActivity.java
@@ -28,13 +28,10 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 
 import com.android.internal.app.AlertActivity;
 import com.android.internal.app.AlertController;
 
-import org.apache.commons.codec.binary.Base64;
-
 /**
  * The "dialog" that shows from "License" in the Settings app.
  */
@@ -92,27 +89,8 @@
         
         WebView webView = new WebView(this);
 
-        if (LOGV) Log.v(TAG, "Started encode at " + System.currentTimeMillis());
-        // Need to encode to base64 for WebView to load the contents properly
-        String dataStr;
-        try {
-            byte[] base64Bytes = Base64.encodeBase64(data.toString().getBytes("ISO8859_1"));
-            dataStr = new String(base64Bytes);
-        } catch (UnsupportedEncodingException e) {
-            Log.e(TAG, "Could not convert to base64", e);
-            showErrorAndFinish();
-            return;
-        }
-        if (LOGV) Log.v(TAG, "Ended encode at " + System.currentTimeMillis());
-        if (LOGV) {
-            Log.v(TAG, "Started test decode at " + System.currentTimeMillis());
-            Base64.decodeBase64(dataStr.getBytes());
-            Log.v(TAG, "Ended decode at " + System.currentTimeMillis());
-        }
-
-        
         // Begin the loading.  This will be done in a separate thread in WebView.
-        webView.loadData(dataStr, "text/html", "base64");
+        webView.loadDataWithBaseURL(null, data.toString(), "text/html", "utf-8", null);
         webView.setWebViewClient(new WebViewClient() {
             @Override
             public void onPageFinished(WebView view, String url) {
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index 887fb8f..134e84f 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -25,6 +25,8 @@
 import android.content.IntentFilter;
 import android.media.AudioManager;
 import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
@@ -32,6 +34,7 @@
 import android.preference.CheckBoxPreference;
 import android.provider.Settings;
 import android.util.Log;
+import android.view.IWindowManager;
 
 public class SoundAndDisplaySettings extends PreferenceActivity implements
         Preference.OnPreferenceChangeListener {
@@ -45,14 +48,19 @@
     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_ANIMATIONS = "animations";
     
     private CheckBoxPreference mSilent;
     private CheckBoxPreference mVibrate;
     private CheckBoxPreference mDtmfTone;
     private CheckBoxPreference mSoundEffects;
+    private CheckBoxPreference mAnimations;
+    private float[] mAnimationScales;
     
     private AudioManager mAudioManager;
     
+    private IWindowManager mWindowManager;
+
     private BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -73,6 +81,7 @@
         ContentResolver resolver = getContentResolver();
         
         mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
+        mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
         
         addPreferencesFromResource(R.xml.sound_and_display_settings);
         
@@ -86,11 +95,13 @@
         mSoundEffects.setPersistent(false);
         mSoundEffects.setChecked(Settings.System.getInt(resolver,
                 Settings.System.SOUND_EFFECTS_ENABLED, 0) != 0);
+        mAnimations = (CheckBoxPreference) findPreference(KEY_ANIMATIONS);
+        mAnimations.setPersistent(false);
         
         ListPreference screenTimeoutPreference =
             (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
         screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
-                getContentResolver(), SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
+                resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
         screenTimeoutPreference.setOnPreferenceChangeListener(this);
     }
     
@@ -124,6 +135,23 @@
         if (phoneVibrate != mVibrate.isChecked() || force) {
             mVibrate.setChecked(phoneVibrate);
         }
+        
+        boolean animations = true;
+        try {
+            mAnimationScales = mWindowManager.getAnimationScales();
+        } catch (RemoteException e) {
+        }
+        if (mAnimationScales != null) {
+            for (int i=0; i<mAnimationScales.length; i++) {
+                if (mAnimationScales[i] == 0) {
+                    animations = false;
+                    break;
+                }
+            }
+        }
+        if (animations != mAnimations.isChecked() || force) {
+            mAnimations.setChecked(animations);
+        }
     }
 
     @Override
@@ -151,6 +179,15 @@
             }
             Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED,
                     mSoundEffects.isChecked() ? 1 : 0);
+            
+        } else if (preference == mAnimations) {
+            for (int i=0; i<mAnimationScales.length; i++) {
+                mAnimationScales[i] = mAnimations.isChecked() ? 1 : 0;
+            }
+            try {
+                mWindowManager.setAnimationScales(mAnimationScales);
+            } catch (RemoteException e) {
+            }
         }
         return true;
     }
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 18b30bd..d112915 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -16,25 +16,13 @@
 
 package com.android.settings;
 
+import com.android.settings.bluetooth.BluetoothEnabler;
 import com.android.settings.wifi.WifiEnabler;
 
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothIntent;
-import android.bluetooth.IBluetoothDeviceCallback;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.preference.Preference;
 import android.preference.PreferenceActivity;
-import android.preference.PreferenceScreen;
 import android.preference.CheckBoxPreference;
-import android.provider.Settings;
-import android.widget.Toast;
 
 public class WirelessSettings extends PreferenceActivity {
 
@@ -44,13 +32,7 @@
 
     private WifiEnabler mWifiEnabler;
     private AirplaneModeEnabler mAirplaneModeEnabler;
-    
-    private CheckBoxPreference mToggleBluetooth;
-    
-    private IntentFilter mIntentFilter;
-    
-    private static final int EVENT_FAILED_BT_ENABLE = 1;
-    private static final int EVENT_PASSED_BT_ENABLE = 2;
+    private BluetoothEnabler mBtEnabler;
     
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -58,30 +40,25 @@
 
         addPreferencesFromResource(R.xml.wireless_settings);
 
-        mIntentFilter = new IntentFilter();
-        mIntentFilter.addAction(BluetoothIntent.ENABLED_ACTION);
-        mIntentFilter.addAction(BluetoothIntent.DISABLED_ACTION);
-
         initToggles();
     }
     
     @Override
     protected void onResume() {
         super.onResume();
-        refreshToggles();
-        registerReceiver(mReceiver, mIntentFilter);       
         
         mWifiEnabler.resume();
         mAirplaneModeEnabler.resume();
+        mBtEnabler.resume();
     }
     
     @Override
     protected void onPause() {
         super.onPause();
-        unregisterReceiver(mReceiver);
-
+        
         mWifiEnabler.pause();
         mAirplaneModeEnabler.pause();
+        mBtEnabler.pause();
     }
     
     private void initToggles() {
@@ -95,116 +72,9 @@
                 this,
                 (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE));
         
-        mToggleBluetooth = (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH);
-        mToggleBluetooth.setPersistent(false);
+        mBtEnabler = new BluetoothEnabler(
+                this,
+                (CheckBoxPreference) findPreference(KEY_TOGGLE_BLUETOOTH));
     }
     
-    private void refreshToggles() {
-        mToggleBluetooth.setChecked(isBluetoothEnabled());
-        mToggleBluetooth.setEnabled(true);
-    }
-    
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if (preference == mToggleBluetooth) {
-            setBluetoothEnabled(mToggleBluetooth.isChecked());
-            return true;
-        }
-        
-        return false;
-    }
-
-    private boolean isBluetoothEnabled() {
-        BluetoothDevice device = (BluetoothDevice)getSystemService(BLUETOOTH_SERVICE);
-        if (device != null) {
-            return device.isEnabled();
-        } else {
-            return false;
-        }
-    }
-    
-    private void setBluetoothEnabled(boolean enabled) {
-        try {
-            BluetoothDevice device = (BluetoothDevice)getSystemService(BLUETOOTH_SERVICE);
-            if (enabled) {
-                // Turn it off until intent or callback is delivered
-                mToggleBluetooth.setChecked(false);
-                if (device.enable(mBtCallback)) {
-                    mToggleBluetooth.setSummary(R.string.bluetooth_enabling);
-                    mToggleBluetooth.setEnabled(false);
-                }
-            } else {
-                if (device.disable()) {
-                    Settings.System.putInt(getContentResolver(),
-                            Settings.System.BLUETOOTH_ON, 0);
-                } else {
-                    // Unusual situation, that you can't turn off bluetooth
-                    mToggleBluetooth.setChecked(true);
-                }
-            }
-        } catch (NullPointerException e) {
-            // TODO: 1071858
-            mToggleBluetooth.setChecked(false);
-            mToggleBluetooth.setEnabled(false);
-        }
-    }
-
-    private IBluetoothDeviceCallback mBtCallback = new IBluetoothDeviceCallback.Stub() {
-        
-        public void onEnableResult(int res) {
-            switch (res) {
-            case BluetoothDevice.RESULT_FAILURE:
-                mHandler.sendMessage(mHandler.obtainMessage(EVENT_FAILED_BT_ENABLE, 0));
-                break;
-            case BluetoothDevice.RESULT_SUCCESS:
-                mHandler.sendMessage(mHandler.obtainMessage(EVENT_PASSED_BT_ENABLE, 0));
-                break;
-            }
-        }
-        
-        public void onCreateBondingResult(String device, int res) {
-            // Don't care
-        }
-        public void onGetRemoteServiceChannelResult(String address, int channel) { }
-    };
-
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (action.equals(BluetoothIntent.ENABLED_ACTION)) {
-                updateBtStatus(true);
-            } else if (action.equals(BluetoothIntent.DISABLED_ACTION)) {
-                mToggleBluetooth.setChecked(false);
-            }
-        }
-    };
-
-    private void updateBtStatus(boolean enabled) {
-        mToggleBluetooth.setChecked(enabled);
-        mToggleBluetooth.setEnabled(true);
-        mToggleBluetooth.setSummary(R.string.bluetooth_quick_toggle_summary);
-        if (enabled) {
-            Settings.System.putInt(getContentResolver(),
-                Settings.System.BLUETOOTH_ON, 1);
-        }
-    }
-    
-    private Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case EVENT_PASSED_BT_ENABLE:
-                    updateBtStatus(true);
-                    break;
-                case EVENT_FAILED_BT_ENABLE:
-                    updateBtStatus(false);
-                    Toast.makeText(WirelessSettings.this, 
-                            getResources().getString(R.string.bluetooth_failed_to_enable),
-                            Toast.LENGTH_SHORT).show();
-
-                    break;
-            }
-        }
-    };
 }
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
new file mode 100644
index 0000000..f0a8189
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
@@ -0,0 +1,122 @@
+/*
+ * 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.content.Context;
+import android.preference.Preference;
+import android.util.TypedValue;
+import android.view.View;
+import android.widget.ImageView;
+
+/**
+ * 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 {
+    private static final String TAG = "BluetoothDevicePreference";
+
+    private static int sDimAlpha = Integer.MIN_VALUE;
+    
+    private LocalBluetoothDevice mLocalDevice;
+    
+    /**
+     * Cached local copy of whether the device is busy. This is only updated
+     * from {@link #onDeviceAttributesChanged(LocalBluetoothDevice)}.
+     */ 
+    private boolean mIsBusy;
+    
+    public BluetoothDevicePreference(Context context, LocalBluetoothDevice localDevice) {
+        super(context);
+
+        if (sDimAlpha == Integer.MIN_VALUE) {
+            TypedValue outValue = new TypedValue();
+            context.getTheme().resolveAttribute(android.R.attr.disabledAlpha, outValue, true);
+            sDimAlpha = (int) (outValue.getFloat() * 255);
+        }
+            
+        mLocalDevice = localDevice;
+        
+        setLayoutResource(R.layout.preference_bluetooth);
+        
+        localDevice.registerCallback(this);
+        
+        onDeviceAttributesChanged(localDevice);
+    }
+    
+    public LocalBluetoothDevice getDevice() {
+        return mLocalDevice;
+    }
+
+    @Override
+    protected void onPrepareForRemoval() {
+        super.onPrepareForRemoval();
+        mLocalDevice.unregisterCallback(this);
+    }
+
+    public void onDeviceAttributesChanged(LocalBluetoothDevice device) {
+
+        /*
+         * The preference framework takes care of making sure the value has
+         * changed before proceeding.
+         */
+        
+        setTitle(mLocalDevice.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());
+
+        // Used to gray out the item
+        mIsBusy = mLocalDevice.isBusy();
+        
+        // Data has changed
+        notifyChanged();
+        
+        // This could affect ordering, so notify that also
+        notifyHierarchyChanged();
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return super.isEnabled() && !mIsBusy;
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+
+        ImageView btClass = (ImageView) view.findViewById(R.id.btClass);
+        btClass.setImageResource(mLocalDevice.getBtClassDrawable());
+        btClass.setAlpha(isEnabled() ? 255 : sDimAlpha);        
+    }
+
+    @Override
+    public int compareTo(Preference another) {
+        if (!(another instanceof BluetoothDevicePreference)) {
+            // Put other preference types above us
+            return 1;
+        }
+        
+        return mLocalDevice.compareTo(((BluetoothDevicePreference) another).mLocalDevice);
+    }
+ 
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
new file mode 100644
index 0000000..f895696
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -0,0 +1,192 @@
+/*
+ * 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.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.os.Handler;
+import android.os.SystemProperties;
+import android.preference.Preference;
+import android.preference.CheckBoxPreference;
+import android.util.Log;
+
+/**
+ * BluetoothDiscoverableEnabler is a helper to manage the "Discoverable"
+ * checkbox. It sets/unsets discoverability and keeps track of how much time
+ * until the the discoverability is automatically turned off.
+ */
+public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChangeListener {
+    private static final String TAG = "BluetoothDiscoverableEnabler";
+    private static final boolean V = LocalBluetoothManager.V;
+    
+    private static final String SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT =
+            "debug.bt.discoverable_time";
+    private static final int DISCOVERABLE_TIMEOUT = 120; 
+
+    private 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) {
+            handleModeChanged(intent.getIntExtra(BluetoothIntent.MODE, 
+                    BluetoothDevice.MODE_UNKNOWN));
+        }
+    };
+
+    private final Runnable mUpdateCountdownSummaryRunnable = new Runnable() {
+        public void run() {
+            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
+            checkBoxPreference.setEnabled(false);
+        }
+    }
+
+    public void resume() {
+        if (mLocalManager == null) {
+            return;
+        }
+        
+        mContext.registerReceiver(mReceiver, 
+                new IntentFilter(BluetoothIntent.MODE_CHANGED_ACTION));
+        mCheckBoxPreference.setOnPreferenceChangeListener(this);
+        
+        handleModeChanged(mLocalManager.getBluetoothManager().getMode());
+    }
+    
+    public void pause() {
+        if (mLocalManager == null) {
+            return;
+        }
+        
+        mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
+        mCheckBoxPreference.setOnPreferenceChangeListener(null);
+        mContext.unregisterReceiver(mReceiver);
+    }
+    
+    public boolean onPreferenceChange(Preference preference, Object value) {
+        if (V) {
+            Log.v(TAG, "Preference changed to " + value);
+        }
+        
+        // Turn on/off BT discoverability
+        setEnabled((Boolean) value);
+        
+        return true;
+    }
+    
+    private void setEnabled(final boolean enable) {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        
+        if (enable) {
+
+            int timeout = getDiscoverableTimeout();
+            manager.setDiscoverableTimeout(timeout);
+            
+            long endTimestamp = System.currentTimeMillis() + timeout * 1000;
+            persistDiscoverableEndTimestamp(endTimestamp);
+            
+            manager.setMode(BluetoothDevice.MODE_DISCOVERABLE);
+            handleModeChanged(BluetoothDevice.MODE_DISCOVERABLE);            
+            
+        } else {
+            manager.setMode(BluetoothDevice.MODE_CONNECTABLE);
+        }
+    }
+
+    private int getDiscoverableTimeout() {
+        int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1);
+        if (timeout <= 0) {
+            timeout = DISCOVERABLE_TIMEOUT;
+        }
+        
+        return timeout;
+    }
+
+    private void persistDiscoverableEndTimestamp(long endTimestamp) {
+        SharedPreferences.Editor editor = mLocalManager.getSharedPreferences().edit();
+        editor.putLong(SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, endTimestamp);
+        editor.commit();
+    }
+    
+    private void handleModeChanged(int mode) {
+        if (V) {
+            Log.v(TAG, "Got mode changed: " + mode);
+        }
+        
+        if (mode == BluetoothDevice.MODE_DISCOVERABLE) {
+            mCheckBoxPreference.setChecked(true);
+            updateCountdownSummary();
+            
+        } else {
+            mCheckBoxPreference.setChecked(false);
+        }
+    }
+    
+    private void updateCountdownSummary() {
+        int mode = mLocalManager.getBluetoothManager().getMode();
+        if (mode != BluetoothDevice.MODE_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
new file mode 100644
index 0000000..661700f
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -0,0 +1,149 @@
+/*
+ * 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 com.android.settings.bluetooth.LocalBluetoothManager.ExtendedBluetoothState;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.preference.Preference;
+import android.preference.CheckBoxPreference;
+import android.text.TextUtils;
+import android.util.Config;
+
+/**
+ * BluetoothEnabler is a helper to manage the Bluetooth on/off checkbox
+ * preference. It is turns on/off Bluetooth and ensures the summary of the
+ * 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 CheckBoxPreference mCheckBoxPreference;
+    private final CharSequence mOriginalSummary;
+    
+    private final LocalBluetoothManager mLocalManager;
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            handleStateChanged(mLocalManager.getBluetoothState());
+        }
+    };
+
+    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
+            checkBoxPreference.setEnabled(false);
+        }
+    }
+
+    public void resume() {
+        if (mLocalManager == null) {
+            return;
+        }
+        
+        ExtendedBluetoothState state = mLocalManager.getBluetoothState();
+        // This is the widget enabled state, not the preference toggled state
+        mCheckBoxPreference.setEnabled(state == ExtendedBluetoothState.ENABLED ||
+                state == ExtendedBluetoothState.DISABLED);
+        // BT state is not a sticky broadcast, so set it manually
+        handleStateChanged(state);
+        
+        mContext.registerReceiver(mReceiver, 
+                new IntentFilter(LocalBluetoothManager.EXTENDED_BLUETOOTH_STATE_CHANGED_ACTION));
+        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(ExtendedBluetoothState state) {
+
+        if (state == ExtendedBluetoothState.DISABLED || state == ExtendedBluetoothState.ENABLED) {
+            mCheckBoxPreference.setChecked(state == ExtendedBluetoothState.ENABLED);
+            mCheckBoxPreference
+                    .setSummary(state == ExtendedBluetoothState.DISABLED ? mOriginalSummary : null);
+            
+            mCheckBoxPreference.setEnabled(isEnabledByDependency());
+            
+        } else if (state == ExtendedBluetoothState.ENABLING ||
+                state == ExtendedBluetoothState.DISABLING) {
+            mCheckBoxPreference.setSummary(state == ExtendedBluetoothState.ENABLING
+                    ? R.string.wifi_starting
+                    : R.string.wifi_stopping);
+            
+        } else if (state == ExtendedBluetoothState.UNKNOWN) {
+            mCheckBoxPreference.setChecked(false);
+            mCheckBoxPreference.setSummary(R.string.wifi_error);
+            mCheckBoxPreference.setEnabled(true);
+        }
+    }
+
+    private boolean isEnabledByDependency() {
+        Preference dep = getDependencyPreference();
+        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
new file mode 100644
index 0000000..bcad206
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothEventRedirector.java
@@ -0,0 +1,159 @@
+/*
+ * 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.bluetooth.LocalBluetoothManager.ExtendedBluetoothState;
+
+import android.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothIntent;
+import android.bluetooth.IBluetoothDeviceCallback;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Handler;
+import android.util.Log;
+
+/**
+ * BluetoothEventRedirector receives broadcasts and callbacks from the Bluetooth
+ * API and dispatches the event on the UI thread to the right class in the
+ * Settings.
+ */
+public class BluetoothEventRedirector {
+    private static final String TAG = "BluetoothEventRedirector";
+    private static final boolean V = LocalBluetoothManager.V;
+    
+    private LocalBluetoothManager mManager;
+    private Handler mUiHandler = new Handler();
+    
+    private IBluetoothDeviceCallback mBtDevCallback = new IBluetoothDeviceCallback.Stub() {
+        public void onCreateBondingResult(final String address, final int result) {
+            if (V) {
+                Log.v(TAG, "onCreateBondingResult(" + address + ", " + result + ")");
+            }
+            
+            mUiHandler.post(new Runnable() {
+                public void run() {
+                    boolean wasSuccess = result == BluetoothDevice.RESULT_SUCCESS; 
+                    LocalBluetoothDeviceManager deviceManager = mManager.getLocalDeviceManager();
+                    deviceManager.onBondingStateChanged(address, wasSuccess);
+                    if (!wasSuccess) {
+                        deviceManager.onBondingError(address);
+                    }
+                }
+            });
+        }
+
+        public void onEnableResult(int result) { }
+        public void onGetRemoteServiceChannelResult(String address, int channel) { }
+    };
+    
+    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (V) {
+                Log.v(TAG, "Received " + intent.getAction());
+            }
+            
+            String action = intent.getAction();
+            String address = intent.getStringExtra(BluetoothIntent.ADDRESS);
+                
+            if (action.equals(BluetoothIntent.ENABLED_ACTION)) {
+                mManager.setBluetoothStateInt(ExtendedBluetoothState.ENABLED);
+            } else if (action.equals(BluetoothIntent.DISABLED_ACTION)) {
+                mManager.setBluetoothStateInt(ExtendedBluetoothState.DISABLED);
+                    
+            } else if (action.equals(BluetoothIntent.DISCOVERY_STARTED_ACTION)) {
+                mManager.onScanningStateChanged(true);
+            } else if (action.equals(BluetoothIntent.DISCOVERY_COMPLETED_ACTION)) {
+                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.BONDING_CREATED_ACTION)) {
+                mManager.getLocalDeviceManager().onBondingStateChanged(address, true);
+            } else if (action.equals(BluetoothIntent.BONDING_REMOVED_ACTION)) {
+                mManager.getLocalDeviceManager().onBondingStateChanged(address, false);
+                
+            } else if (action.equals(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION)) {
+                mManager.getLocalDeviceManager().onProfileStateChanged(address);
+
+                int newState = intent.getIntExtra(BluetoothIntent.HEADSET_STATE, 0);
+                int oldState = intent.getIntExtra(BluetoothIntent.HEADSET_PREVIOUS_STATE, 0);
+                if (newState == BluetoothHeadset.STATE_DISCONNECTED &&
+                        oldState == BluetoothHeadset.STATE_CONNECTING) {
+                    mManager.getLocalDeviceManager().onConnectingError(address);
+                }
+                
+            } else if (action.equals(BluetoothA2dp.SINK_STATE_CHANGED_ACTION)) {
+                mManager.getLocalDeviceManager().onProfileStateChanged(address);
+
+                int newState = intent.getIntExtra(BluetoothA2dp.SINK_STATE, 0);
+                int oldState = intent.getIntExtra(BluetoothA2dp.SINK_PREVIOUS_STATE, 0);
+                if (newState == BluetoothA2dp.STATE_DISCONNECTED &&
+                        oldState == BluetoothA2dp.STATE_CONNECTING) {
+                    mManager.getLocalDeviceManager().onConnectingError(address);
+                }
+            }
+        }
+    };
+
+    public BluetoothEventRedirector(LocalBluetoothManager localBluetoothManager) {
+        mManager = localBluetoothManager;
+    }
+
+    public void start() {
+        IntentFilter filter = new IntentFilter();
+        
+        // Bluetooth on/off broadcasts
+        filter.addAction(BluetoothIntent.ENABLED_ACTION);
+        filter.addAction(BluetoothIntent.DISABLED_ACTION);
+        
+        // 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);
+        
+        // Pairing broadcasts
+        filter.addAction(BluetoothIntent.BONDING_CREATED_ACTION);
+        filter.addAction(BluetoothIntent.BONDING_REMOVED_ACTION);
+        
+        // Fine-grained state broadcasts
+        filter.addAction(BluetoothA2dp.SINK_STATE_CHANGED_ACTION);
+        filter.addAction(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION);
+        
+        mManager.getContext().registerReceiver(mBroadcastReceiver, filter);
+    }
+    
+    public void stop() {
+        mManager.getContext().unregisterReceiver(mBroadcastReceiver);   
+    }
+    
+    public IBluetoothDeviceCallback getBluetoothDeviceCallback() { 
+        return mBtDevCallback;
+    }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothNamePreference.java b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
new file mode 100644
index 0000000..3065b26
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothNamePreference.java
@@ -0,0 +1,79 @@
+/*
+ * 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.Intent;
+import android.content.IntentFilter;
+import android.preference.EditTextPreference;
+import android.preference.PreferenceManager;
+import android.util.AttributeSet;
+
+/**
+ * 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 {
+    private static final String TAG = "BluetoothNamePreference";
+
+    private LocalBluetoothManager mLocalManager;
+    
+    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            setSummaryToName();
+        }
+    };
+    
+    public BluetoothNamePreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        mLocalManager = LocalBluetoothManager.getInstance(context);
+        
+        setSummaryToName();        
+    }
+
+    public void resume() {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BluetoothIntent.ENABLED_ACTION);
+        filter.addAction(BluetoothIntent.NAME_CHANGED_ACTION);
+        getContext().registerReceiver(mReceiver, filter);
+    }
+    
+    public void pause() {
+        getContext().unregisterReceiver(mReceiver);
+    }
+    
+    private void setSummaryToName() {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        if (manager.isEnabled()) {
+            setSummary(manager.getName());
+        }
+    }
+
+    @Override
+    protected boolean persistString(String value) {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        manager.setName(value);
+        return true;        
+    }
+    
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPinDialog.java b/src/com/android/settings/bluetooth/BluetoothPinDialog.java
new file mode 100644
index 0000000..291d0c1
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPinDialog.java
@@ -0,0 +1,112 @@
+/*
+ * 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.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.InputFilter;
+import android.text.method.DigitsKeyListener;
+import android.util.Log;
+import android.view.View;
+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 {
+    private static final String TAG = "BluetoothPinDialog";
+
+    private LocalBluetoothManager mLocalManager;
+    private String mAddress;
+    private EditText mPinView;
+    
+    @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();
+    }
+
+    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);
+        
+        return view;
+    }
+    
+    private void onPair(String pin) {
+        byte[] pinBytes = BluetoothDevice.convertPinToBytes(pin);
+        
+        if (pinBytes == null) {
+            return;
+        }
+        
+        mLocalManager.getBluetoothManager().setPin(mAddress, pinBytes);
+    }
+
+    private void onCancel() {
+        mLocalManager.getBluetoothManager().cancelPin(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;
+        }
+    }
+
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothPinRequest.java b/src/com/android/settings/bluetooth/BluetoothPinRequest.java
new file mode 100644
index 0000000..619052d
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothPinRequest.java
@@ -0,0 +1,96 @@
+/*
+ * 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
new file mode 100644
index 0000000..316e831
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -0,0 +1,258 @@
+/*
+ * 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.ProgressCategory;
+import com.android.settings.R;
+import com.android.settings.bluetooth.LocalBluetoothManager.ExtendedBluetoothState;
+
+import java.util.List;
+import java.util.WeakHashMap;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.view.ContextMenu;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.widget.AdapterView.AdapterContextMenuInfo;
+
+/**
+ * BluetoothSettings is the Settings screen for Bluetooth configuration and
+ * connection management.
+ */
+public class BluetoothSettings extends PreferenceActivity
+        implements LocalBluetoothManager.Callback {
+
+    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 LocalBluetoothManager mLocalManager;
+    
+    private BluetoothEnabler mEnabler;
+    private BluetoothDiscoverableEnabler mDiscoverableEnabler;
+    
+    private BluetoothNamePreference mNamePreference;
+    
+    private ProgressCategory mDeviceList;
+    
+    private WeakHashMap<LocalBluetoothDevice, BluetoothDevicePreference> mDevicePreferenceMap =
+            new WeakHashMap<LocalBluetoothDevice, 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());
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        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);
+        
+        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();
+        mLocalManager.registerCallback(this);
+        
+        mLocalManager.startScanning(false);
+
+        registerReceiver(mReceiver, 
+                new IntentFilter(LocalBluetoothManager.EXTENDED_BLUETOOTH_STATE_CHANGED_ACTION));
+        
+        mLocalManager.setForegroundActivity(this);
+    }
+    
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        mLocalManager.setForegroundActivity(null);
+        
+        unregisterReceiver(mReceiver);
+        
+        mLocalManager.unregisterCallback(this);
+        mNamePreference.pause();
+        mDiscoverableEnabler.pause();
+        mEnabler.pause();
+    }
+
+    private void addDevices() {
+        List<LocalBluetoothDevice> devices = mLocalManager.getLocalDeviceManager().getDevicesCopy();
+        for (LocalBluetoothDevice device : devices) {
+            onDeviceAdded(device);
+        }
+    }
+    
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        menu.add(0, MENU_SCAN, 0, R.string.bluetooth_scan_for_devices)
+                .setIcon(R.drawable.ic_menu_refresh)
+                .setAlphabeticShortcut('r');
+        return true;
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        menu.findItem(MENU_SCAN).setEnabled(mLocalManager.getBluetoothManager().isEnabled());
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        
+            case MENU_SCAN:
+                mLocalManager.startScanning(true);
+                return true;
+                
+            default:
+                return false;
+        }
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+            Preference preference) {
+
+        if (KEY_BT_SCAN.equals(preference.getKey())) {
+            mLocalManager.startScanning(true);
+            return true;
+        }
+        
+        if (preference instanceof BluetoothDevicePreference) {
+            BluetoothDevicePreference btPreference = (BluetoothDevicePreference) preference;
+            btPreference.getDevice().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);
+    }
+
+    @Override
+    public boolean onContextItemSelected(MenuItem item) {
+        LocalBluetoothDevice device = getDeviceFromMenuInfo(item.getMenuInfo());
+        if (device == null) return false;
+        
+        device.onContextItemSelected(item);
+        return true;
+    }
+
+    private LocalBluetoothDevice getDeviceFromMenuInfo(ContextMenuInfo menuInfo) {
+        if ((menuInfo == null) || !(menuInfo instanceof AdapterContextMenuInfo)) {
+            return null;
+        }
+        
+        AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) menuInfo;
+        Preference pref = (Preference) getPreferenceScreen().getRootAdapter().getItem(
+                adapterMenuInfo.position);
+        if (pref == null || !(pref instanceof BluetoothDevicePreference)) {
+            return null;
+        }
+
+        return ((BluetoothDevicePreference) pref).getDevice();
+    }
+    
+    public void onDeviceAdded(LocalBluetoothDevice device) {
+
+        if (mDevicePreferenceMap.get(device) != null) {
+            throw new IllegalStateException("Got onDeviceAdded, but device already exists");
+        }
+        
+        createDevicePreference(device);            
+    }
+
+    private void createDevicePreference(LocalBluetoothDevice device) {
+        BluetoothDevicePreference preference = new BluetoothDevicePreference(this, device);
+        mDeviceList.addPreference(preference);
+        mDevicePreferenceMap.put(device, preference);
+    }
+    
+    public void onDeviceDeleted(LocalBluetoothDevice device) {
+        BluetoothDevicePreference preference = mDevicePreferenceMap.remove(device);
+        if (preference != null) {
+            mDeviceList.removePreference(preference);
+        }
+    }
+
+    public void onScanningStateChanged(boolean started) {
+        mDeviceList.setProgress(started);
+    }
+    
+    private void onBluetoothStateChanged(ExtendedBluetoothState bluetoothState) {
+        // When bluetooth is enabled (and we are in the activity, which we are),
+        // we should start a scan
+        if (bluetoothState == ExtendedBluetoothState.ENABLED) {
+            mLocalManager.startScanning(false);
+        }
+    }
+}
diff --git a/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
new file mode 100644
index 0000000..f29ec79
--- /dev/null
+++ b/src/com/android/settings/bluetooth/ConnectSpecificProfilesActivity.java
@@ -0,0 +1,297 @@
+/*
+ * 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 com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceGroup;
+import android.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.util.Log;
+
+/**
+ * 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 {
+    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";
+    
+    private LocalBluetoothManager mManager;
+    private LocalBluetoothDevice mDevice;
+    
+    private PreferenceGroup mProfileContainer;
+    private CheckBoxPreference mOnlineModePreference;
+
+    /**
+     * The current mode of this activity and its checkboxes (either online mode
+     * or offline mode). In online mode, user interactions with the profile
+     * checkboxes will also toggle the profile's connectivity. In offline mode,
+     * they will not, and only the preferred state will be saved for the
+     * profile.
+     */
+    private boolean mOnlineMode;
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        
+        String address;
+        if (savedInstanceState != null) {
+            address = savedInstanceState.getString(EXTRA_ADDRESS);
+        } else {
+            Intent intent = getIntent();
+            address = intent.getStringExtra(EXTRA_ADDRESS);
+        }
+
+        if (TextUtils.isEmpty(address)) {
+            Log.w(TAG, "Activity started without address");
+            finish();
+        }
+        
+        mManager = LocalBluetoothManager.getInstance(this);
+        mDevice = mManager.getLocalDeviceManager().findDevice(address);
+        if (mDevice == 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()));
+
+        // 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();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        
+        outState.putString(EXTRA_ADDRESS, mDevice.getAddress());
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        
+        mManager.setForegroundActivity(this);
+        mDevice.registerCallback(this);
+
+        refresh(true);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        
+        mDevice.unregisterCallback(this);
+        mManager.setForegroundActivity(null);
+    }
+
+    private void addPreferencesForProfiles() {
+        for (Profile profile : mDevice.getProfiles()) {
+            Preference pref = createProfilePreference(profile);
+            mProfileContainer.addPreference(pref);
+        }
+    }
+
+    /**
+     * 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.
+     */
+    private CheckBoxPreference createProfilePreference(Profile profile) {
+        CheckBoxPreference pref = new CheckBoxPreference(this);
+        pref.setKey(profile.toString());
+        pref.setTitle(profile.localizedString);
+        pref.setPersistent(false);
+        pref.setOnPreferenceChangeListener(this);
+
+        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;
+            onProfileCheckedStateChanged(profile, (Boolean) newValue);
+        }
+
+        return true;
+    }
+
+    private void onOnlineModeCheckedStateChanged(boolean checked) {
+        switchModes(checked, false);
+    }
+    
+    private void onProfileCheckedStateChanged(Profile profile, boolean checked) {
+        if (mOnlineMode) {
+            if (checked) {
+                mDevice.connect(profile);
+            } else {
+                mDevice.disconnect(profile);
+            }
+        }
+        
+        LocalBluetoothProfileManager.setPreferredProfile(this, mDevice.getAddress(), profile,
+                checked);
+    }
+    
+    public void onDeviceAttributesChanged(LocalBluetoothDevice device) {
+        refresh(false);
+    }
+
+    private void refresh(boolean forceRefresh) {
+        // The online mode could have changed
+        updateOnlineMode(forceRefresh);
+        refreshProfiles();
+        refreshOnlineModePreference();
+    }
+
+    private void updateOnlineMode(boolean force) {
+        // Connected or Connecting (and Disconnecting, which is fine)
+        boolean onlineMode = mDevice.isConnected() || mDevice.isBusy();
+        switchModes(onlineMode, force);
+    }
+    
+    /**
+     * Switches between online/offline mode.
+     * 
+     * @param onlineMode Whether to be in online mode, or offline mode.
+     */
+    private void switchModes(boolean onlineMode, boolean force) {
+        if (mOnlineMode != onlineMode || force) {
+            mOnlineMode = onlineMode;
+            
+            if (onlineMode) {
+                mDevice.connect();
+            } else {
+                mDevice.disconnect();
+            }
+
+            refreshOnlineModePreference();
+        }
+    }
+    
+    private void refreshOnlineModePreference() {
+        mOnlineModePreference.setChecked(mOnlineMode);
+
+        /**
+         * If the device is online, show status. Otherwise, show a summary that
+         * describes what the checkbox does.
+         */
+        mOnlineModePreference.setSummary(mOnlineMode ? mDevice.getSummary()
+                : R.string.bluetooth_device_advanced_online_mode_summary);
+    }
+    
+    private void refreshProfiles() {
+        for (Profile profile : mDevice.getProfiles()) {
+            CheckBoxPreference profilePref =
+                    (CheckBoxPreference) findPreference(profile.toString());
+            if (profilePref == null) continue;
+            
+            refreshProfilePreference(profilePref, profile);
+        }
+    }
+    
+    private void refreshProfilePreference(CheckBoxPreference profilePref, Profile profile) {
+        String address = mDevice.getAddress();
+        LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+                .getProfileManager(mManager, profile);
+        
+        int connectionStatus = profileManager.getConnectionStatus(address);
+        
+        profilePref.setSummary(getProfileSummary(profileManager, profile, address,
+                connectionStatus, mOnlineMode));
+        
+        profilePref.setChecked(
+                LocalBluetoothProfileManager.isPreferredProfile(this, address, profile));
+    }
+
+    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) {
+            return null;
+        }
+    }
+
+    private static int getProfileSummary(LocalBluetoothProfileManager profileManager,
+            Profile profile, String address, int connectionStatus, boolean onlineMode) {
+        if (!onlineMode || connectionStatus == SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED) {
+            return getProfileSummaryForSettingPreference(profile);
+        } else {
+            return profileManager.getSummary(address);
+        }
+    }
+    
+    /**
+     * 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.
+     */
+    private static final int getProfileSummaryForSettingPreference(Profile profile) {
+        switch (profile) {
+            case A2DP:
+                return R.string.bluetooth_a2dp_profile_summary_use_for;
+            case HEADSET:
+                return R.string.bluetooth_headset_profile_summary_use_for;
+            default:
+                return 0;
+        }
+    }
+    
+}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothDevice.java b/src/com/android/settings/bluetooth/LocalBluetoothDevice.java
new file mode 100644
index 0000000..a8f79ff
--- /dev/null
+++ b/src/com/android/settings/bluetooth/LocalBluetoothDevice.java
@@ -0,0 +1,558 @@
+/*
+ * 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 com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
+
+import android.app.AlertDialog;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.IBluetoothDeviceCallback;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.view.ContextMenu;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * LocalBluetoothDevice 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";
+    
+    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 String mName;
+    private short mRssi;
+    private int mBtClass = BluetoothClass.ERROR;
+    
+    private List<Profile> mProfiles = new ArrayList<Profile>();
+    
+    private boolean mVisible;
+    
+    private int mPairingStatus;
+    
+    private final LocalBluetoothManager mLocalManager;
+    
+    private List<Callback> mCallbacks = new ArrayList<Callback>();
+
+    /**
+     * When we connect to multiple profiles, we only want to display a single
+     * error even if they all fail. This tracks that state.
+     */
+    private boolean mIsConnectingErrorPossible;
+    
+    LocalBluetoothDevice(Context context, String address) {
+        mLocalManager = LocalBluetoothManager.getInstance(context);
+        if (mLocalManager == null) {
+            throw new IllegalStateException(
+                    "Cannot use LocalBluetoothDevice without Bluetooth hardware");
+        }
+        
+        mAddress = address;
+        
+        fillData();
+    }
+    
+    public void onClicked() {
+        int pairingStatus = getPairingStatus();
+        
+        if (isConnected()) {
+            askDisconnect();
+        } else if (pairingStatus == SettingsBtStatus.PAIRING_STATUS_PAIRED) {
+            connect();
+        } else if (pairingStatus == SettingsBtStatus.PAIRING_STATUS_UNPAIRED) {
+            pair();
+        }
+    }
+    
+    public void disconnect() {
+        for (Profile profile : mProfiles) {
+            disconnect(profile);
+        }
+    }
+    
+    public void disconnect(Profile profile) {
+        LocalBluetoothProfileManager profileManager =
+                LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile); 
+        int status = profileManager.getConnectionStatus(mAddress);
+        if (SettingsBtStatus.isConnectionStatusConnected(status)) {
+            profileManager.disconnect(mAddress);
+        }
+    }
+    
+    public void askDisconnect() {
+        Context context = mLocalManager.getForegroundActivity();
+        if (context == null) {
+            // Cannot ask, since we need an activity context
+            disconnect();
+            return;
+        }
+        
+        Resources res = context.getResources();
+        
+        String name = getName();
+        if (TextUtils.isEmpty(name)) {
+            name = res.getString(R.string.bluetooth_device);
+        }
+        String message = res.getString(R.string.bluetooth_disconnect_blank, name);
+        
+        DialogInterface.OnClickListener disconnectListener = new DialogInterface.OnClickListener() {
+            public void onClick(DialogInterface dialog, int which) {
+                disconnect();
+            }
+        };
+        
+        AlertDialog ad = new AlertDialog.Builder(context)
+                .setTitle(getName())
+                .setMessage(message)
+                .setPositiveButton(android.R.string.ok, disconnectListener)
+                .setNegativeButton(android.R.string.cancel, null)
+                .show();
+    }
+    
+    public void connect() {
+        if (!ensurePaired()) return;
+        
+        Context context = mLocalManager.getContext();
+        boolean hasAtLeastOnePreferredProfile = false;
+        for (Profile profile : mProfiles) {
+            if (LocalBluetoothProfileManager.isPreferredProfile(context, mAddress, profile)) {
+                hasAtLeastOnePreferredProfile = true;
+                connect(profile);
+            }
+        }
+        
+        if (!hasAtLeastOnePreferredProfile) {
+            connectAndPreferAllProfiles();
+        }
+    }
+    
+    private void connectAndPreferAllProfiles() {
+        if (!ensurePaired()) return;
+        
+        Context context = mLocalManager.getContext();
+        for (Profile profile : mProfiles) {
+            LocalBluetoothProfileManager.setPreferredProfile(context, mAddress, profile, true);
+            connect(profile);
+        }
+    }
+    
+    public void connect(Profile profile) {
+        if (!ensurePaired()) return;
+        
+        LocalBluetoothProfileManager profileManager =
+                LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile); 
+        int status = profileManager.getConnectionStatus(mAddress);
+        if (!SettingsBtStatus.isConnectionStatusConnected(status)) {
+            mIsConnectingErrorPossible = true;
+            if (profileManager.connect(mAddress) != BluetoothDevice.RESULT_SUCCESS) {
+                showConnectingError();
+            }
+        }
+    }
+    
+    public void showConnectingError() {
+        if (!mIsConnectingErrorPossible) return;
+        mIsConnectingErrorPossible = false;
+        
+        mLocalManager.showError(mAddress, R.string.bluetooth_error_title,
+                R.string.bluetooth_connecting_error_message);
+    }
+    
+    private boolean ensurePaired() {
+        if (getPairingStatus() == SettingsBtStatus.PAIRING_STATUS_UNPAIRED) {
+            pair();
+            return false;
+        } else {
+            return true;
+        }
+    }
+    
+    public void pair() {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        
+        // Pairing doesn't work if scanning, so cancel
+        if (manager.isDiscovering()) {
+            manager.cancelDiscovery();
+        }
+        
+        if (mLocalManager.createBonding(mAddress)) {
+            setPairingStatus(SettingsBtStatus.PAIRING_STATUS_PAIRING);
+        }
+    }
+    
+    public void unpair() {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        
+        switch (getPairingStatus()) {
+            case SettingsBtStatus.PAIRING_STATUS_PAIRED:
+                manager.removeBonding(mAddress);
+                break;
+                
+            case SettingsBtStatus.PAIRING_STATUS_PAIRING:
+                manager.cancelBondingProcess(mAddress);
+                break;
+        }
+    }
+    
+    private void fillData() {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+            
+        fetchName();        
+        mBtClass = manager.getRemoteClass(mAddress);
+
+        LocalBluetoothProfileManager.fill(mBtClass, mProfiles);
+            
+        mPairingStatus = manager.hasBonding(mAddress)
+                ? SettingsBtStatus.PAIRING_STATUS_PAIRED
+                : SettingsBtStatus.PAIRING_STATUS_UNPAIRED;
+            
+        mVisible = false;
+        
+        dispatchAttributesChanged();
+    }
+    
+    public String getAddress() {
+        return mAddress;
+    }
+
+    public String getName() {
+        return mName;
+    }
+    
+    public void refreshName() {
+        fetchName();
+        dispatchAttributesChanged();
+    }
+    
+    private void fetchName() {
+        mName = mLocalManager.getBluetoothManager().getRemoteName(mAddress);
+        
+        if (TextUtils.isEmpty(mName)) {
+            mName = mAddress;
+        }
+    }
+    
+    public void refresh() {
+        dispatchAttributesChanged();
+    }
+
+    public boolean isVisible() {
+        return mVisible;
+    }
+
+    void setVisible(boolean visible) {
+        if (mVisible != visible) {
+            mVisible = visible;
+            dispatchAttributesChanged();
+        }
+    }
+
+    public int getPairingStatus() {
+        return mPairingStatus;
+    }
+
+    void setPairingStatus(int pairingStatus) {
+        if (mPairingStatus != pairingStatus) {
+            mPairingStatus = pairingStatus;
+            dispatchAttributesChanged();
+        }
+    }
+    
+    void setRssi(short rssi) {
+        if (mRssi != rssi) {
+            mRssi = rssi;
+            dispatchAttributesChanged();
+        }
+    }
+    
+    /**
+     * Checks whether we are connected to this device (any profile counts).
+     * 
+     * @return Whether it is connected.
+     */
+    public boolean isConnected() {
+        for (Profile profile : mProfiles) {
+            int status = LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile)
+                    .getConnectionStatus(mAddress);
+            if (SettingsBtStatus.isConnectionStatusConnected(status)) {
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
+    public boolean isBusy() {
+        for (Profile profile : mProfiles) {
+            int status = LocalBluetoothProfileManager.getProfileManager(mLocalManager, profile)
+                    .getConnectionStatus(mAddress); 
+            if (SettingsBtStatus.isConnectionStatusBusy(status)) {
+                return true;
+            }
+        }
+        
+        if (getPairingStatus() == SettingsBtStatus.PAIRING_STATUS_PAIRING) {
+            return true;
+        }
+        
+        return false;
+    }
+    
+    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)) {
+        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;
+        }
+    }
+
+    public int getSummary() {
+        // TODO: clean up
+        int oneOffSummary = getOneOffSummary();
+        if (oneOffSummary != 0) {
+            return oneOffSummary;
+        }
+        
+        for (Profile profile : mProfiles) {
+            LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+                    .getProfileManager(mLocalManager, profile);
+            int connectionStatus = profileManager.getConnectionStatus(mAddress);
+            
+            if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus) ||
+                    connectionStatus == SettingsBtStatus.CONNECTION_STATUS_CONNECTING ||
+                    connectionStatus == SettingsBtStatus.CONNECTION_STATUS_DISCONNECTING) {
+                return SettingsBtStatus.getConnectionStatusSummary(connectionStatus);
+            }
+        }
+        
+        int pairingStatus = getPairingStatus();
+        return SettingsBtStatus.getPairingStatusSummary(pairingStatus); 
+    }
+
+    /**
+     * We have special summaries when particular profiles are connected. This
+     * checks for those states and returns an applicable summary.
+     * 
+     * @return A one-off summary that is applicable for the current state, or 0. 
+     */
+    private int getOneOffSummary() {
+        boolean isA2dpConnected = false, isHeadsetConnected = false, isConnecting = false;
+        
+        if (mProfiles.contains(Profile.A2DP)) {
+            LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+                    .getProfileManager(mLocalManager, Profile.A2DP);
+            isConnecting = profileManager.getConnectionStatus(mAddress) ==
+                    SettingsBtStatus.CONNECTION_STATUS_CONNECTING; 
+            isA2dpConnected = profileManager.isConnected(mAddress);
+        }
+
+        if (mProfiles.contains(Profile.HEADSET)) {
+            LocalBluetoothProfileManager profileManager = LocalBluetoothProfileManager
+                    .getProfileManager(mLocalManager, Profile.HEADSET);
+            isConnecting |= profileManager.getConnectionStatus(mAddress) ==
+                    SettingsBtStatus.CONNECTION_STATUS_CONNECTING; 
+            isHeadsetConnected = profileManager.isConnected(mAddress);
+        }
+        
+        if (isConnecting) {
+            // If any of these important profiles is connecting, prefer that
+            return SettingsBtStatus.getConnectionStatusSummary(
+                    SettingsBtStatus.CONNECTION_STATUS_CONNECTING);
+        } else if (isA2dpConnected && isHeadsetConnected) {
+            return R.string.bluetooth_summary_connected_to_a2dp_headset;
+        } else if (isA2dpConnected) {
+            return R.string.bluetooth_summary_connected_to_a2dp;
+        } else if (isHeadsetConnected) {
+            return R.string.bluetooth_summary_connected_to_headset;
+        } else {
+            return 0;
+        }
+    }
+    
+    public List<Profile> getProfiles() {
+        return new ArrayList<Profile>(mProfiles);
+    }
+
+    public void onCreateContextMenu(ContextMenu menu) {
+        // No context menu if it is busy (none of these items are applicable if busy)
+        if (isBusy()) return;
+        
+        // No context menu if there are no profiles
+        if (mProfiles.size() == 0) return;
+        
+        int pairingStatus = getPairingStatus();
+        boolean isConnected = isConnected();
+        
+        menu.setHeaderTitle(getName());
+        
+        if (isConnected) {
+            menu.add(0, CONTEXT_ITEM_DISCONNECT, 0, R.string.bluetooth_device_context_disconnect);
+        } else {
+            // For connection action, show either "Connect" or "Pair & connect"
+            int connectString = pairingStatus == SettingsBtStatus.PAIRING_STATUS_UNPAIRED
+                    ? R.string.bluetooth_device_context_pair_connect
+                    : R.string.bluetooth_device_context_connect;
+            menu.add(0, CONTEXT_ITEM_CONNECT, 0, connectString);
+        }
+        
+        if (pairingStatus == SettingsBtStatus.PAIRING_STATUS_PAIRED) {
+            // 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);
+
+            // Show the connection options item
+            menu.add(0, CONTEXT_ITEM_CONNECT_ADVANCED, 0,
+                    R.string.bluetooth_device_context_connect_advanced);
+        }
+    }
+
+    /**
+     * Called when a context menu item is clicked.
+     * 
+     * @param item The item that was clicked.
+     */
+    public void onContextItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case CONTEXT_ITEM_DISCONNECT:
+                disconnect();
+                break;
+                
+            case CONTEXT_ITEM_CONNECT:
+                connect();
+                break;
+                
+            case CONTEXT_ITEM_UNPAIR:
+                unpair();
+                break;
+                
+            case CONTEXT_ITEM_CONNECT_ADVANCED:
+                Intent intent = new Intent();
+                // Need an activity context to open this in our task
+                Context context = mLocalManager.getForegroundActivity();
+                if (context == null) {
+                    // Fallback on application context, and open in a new task
+                    context = mLocalManager.getContext();
+                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                }
+                intent.setClass(context, ConnectSpecificProfilesActivity.class);
+                intent.putExtra(ConnectSpecificProfilesActivity.EXTRA_ADDRESS, mAddress);
+                context.startActivity(intent);
+                break;
+        }
+    }
+
+    public void registerCallback(Callback callback) {
+        synchronized (mCallbacks) {
+            mCallbacks.add(callback);
+        }
+    }
+    
+    public void unregisterCallback(Callback callback) {
+        synchronized (mCallbacks) {
+            mCallbacks.remove(callback);
+        }
+    }
+    
+    private void dispatchAttributesChanged() {
+        synchronized (mCallbacks) {
+            for (Callback callback : mCallbacks) {
+                callback.onDeviceAttributesChanged(this);
+            }
+        }
+    }
+    
+    @Override
+    public String toString() {
+        return mAddress;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if ((o == null) || !(o instanceof LocalBluetoothDevice)) {
+            throw new ClassCastException();
+        }
+        
+        return mAddress.equals(((LocalBluetoothDevice) o).mAddress);
+    }
+
+    @Override
+    public int hashCode() {
+        return mAddress.hashCode();
+    }
+    
+    public int compareTo(LocalBluetoothDevice another) {
+        int comparison;        
+        
+        // Connected above not connected
+        comparison = (another.isConnected() ? 1 : 0) - (isConnected() ? 1 : 0);
+        if (comparison != 0) return comparison;
+        
+        // Paired above not paired
+        comparison = (another.mPairingStatus == SettingsBtStatus.PAIRING_STATUS_PAIRED ? 1 : 0) -
+            (mPairingStatus == SettingsBtStatus.PAIRING_STATUS_PAIRED ? 1 : 0);
+        if (comparison != 0) return comparison;
+
+        // Visible above not visible
+        comparison = (another.mVisible ? 1 : 0) - (mVisible ? 1 : 0);
+        if (comparison != 0) return comparison;
+        
+        // Stronger signal above weaker signal
+        comparison = another.mRssi - mRssi;
+        if (comparison != 0) return comparison;
+        
+        // Fallback on name
+        return getName().compareTo(another.getName());
+    }
+
+    public interface Callback {
+        void onDeviceAttributesChanged(LocalBluetoothDevice device);
+    }
+}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java
new file mode 100644
index 0000000..48a41f1
--- /dev/null
+++ b/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java
@@ -0,0 +1,209 @@
+/*
+ * 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.app.AlertDialog;
+import android.bluetooth.BluetoothDevice;
+import android.util.Log;
+import android.widget.Toast;
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.bluetooth.LocalBluetoothManager.Callback;
+
+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 void readPairedDevices() {
+        BluetoothDevice manager = mLocalManager.getBluetoothManager();
+        String[] bondedAddresses = manager.listBondings();
+        if (bondedAddresses == null) return;
+        
+        for (String address : bondedAddresses) {
+            LocalBluetoothDevice device = findDevice(address);
+            if (device == null) {
+                device = new LocalBluetoothDevice(mLocalManager.getContext(), address);
+                mDevices.add(device);
+                dispatchDeviceAdded(device);                
+            }
+        }
+    }
+    
+    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.getPairingStatus() == SettingsBtStatus.PAIRING_STATUS_UNPAIRED &&
+                !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, boolean created) {
+        LocalBluetoothDevice device = findDevice(address);
+        if (device == null) {
+            Log.e(TAG, "Got bonding state changed for " + address +
+                    ", but we have no record of that device.");
+            return;
+        }
+        
+        device.setPairingStatus(created ? SettingsBtStatus.PAIRING_STATUS_PAIRED
+                : SettingsBtStatus.PAIRING_STATUS_UNPAIRED);
+        checkForDeviceRemoval(device);
+
+        if (created) {
+            // Auto-connect after pairing
+            device.connect();
+        }
+    }
+    
+    public synchronized void onBondingError(String address) {
+        mLocalManager.showError(address, R.string.bluetooth_error_title,
+                R.string.bluetooth_pairing_error_message);
+    }
+    
+    public synchronized void onProfileStateChanged(String address) {
+        LocalBluetoothDevice device = findDevice(address);
+        if (device == null) return;
+        
+        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);
+        }
+    }
+}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothManager.java b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
new file mode 100644
index 0000000..9db9e77
--- /dev/null
+++ b/src/com/android/settings/bluetooth/LocalBluetoothManager.java
@@ -0,0 +1,260 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+import android.widget.Toast;
+
+// TODO: have some notion of shutting down.  Maybe a minute after they leave BT settings?
+/**
+ * LocalBluetoothManager provides a simplified interface on top of a subset of
+ * the Bluetooth API.
+ */
+public class LocalBluetoothManager {
+    private static final String TAG = "LocalBluetoothManager";
+    static final boolean V = true;
+    
+    public static final String EXTENDED_BLUETOOTH_STATE_CHANGED_ACTION =
+        "com.android.settings.bluetooth.intent.action.EXTENDED_BLUETOOTH_STATE_CHANGED";
+    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 BluetoothDevice mManager;
+
+    private LocalBluetoothDeviceManager mLocalDeviceManager;
+    private BluetoothEventRedirector mEventRedirector;
+    
+    public static enum ExtendedBluetoothState { ENABLED, ENABLING, DISABLED, DISABLING, UNKNOWN }
+    private ExtendedBluetoothState mState = ExtendedBluetoothState.UNKNOWN;
+
+    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;
+            }
+            
+            return INSTANCE;
+        }
+    }
+
+    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) {
+            return false;
+        }
+        
+        mLocalDeviceManager = new LocalBluetoothDeviceManager(this);
+
+        mEventRedirector = new BluetoothEventRedirector(this);
+        mEventRedirector.start();
+       
+        return true;
+    }
+    
+    public BluetoothDevice getBluetoothManager() {
+        return mManager;
+    }
+    
+    public Context getContext() {
+        return mContext;
+    }
+
+    public Activity getForegroundActivity() {
+        return mForegroundActivity;
+    }
+    
+    public void setForegroundActivity(Activity activity) {
+        mForegroundActivity = activity;
+    }
+    
+    public SharedPreferences getSharedPreferences() {
+        return mContext.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+    }
+    
+    public LocalBluetoothDeviceManager getLocalDeviceManager() {
+        return mLocalDeviceManager;
+    }
+    
+    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()) {
+            /*
+             * 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 {
+            
+            // Don't scan more than frequently than SCAN_EXPIRATION_MS, unless forced
+            if (!force && mLastScan + SCAN_EXPIRATION_MS > System.currentTimeMillis()) return;
+            
+            if (mManager.startDiscovery(true)) {
+                mLastScan = System.currentTimeMillis();
+            }
+        }
+    }
+    
+    public ExtendedBluetoothState getBluetoothState() {
+        
+        if (mState == ExtendedBluetoothState.UNKNOWN) {
+            syncBluetoothState();
+        }
+            
+        return mState;
+    }
+    
+    void setBluetoothStateInt(ExtendedBluetoothState state) {
+        mState = state;
+        
+        /*
+         * TODO: change to callback method. originally it was broadcast to
+         * parallel the framework's method, but it just complicates things here.
+         */
+        // If this were a real API, I'd add as an extra
+        mContext.sendBroadcast(new Intent(EXTENDED_BLUETOOTH_STATE_CHANGED_ACTION));
+        
+        if (state == ExtendedBluetoothState.ENABLED || state == ExtendedBluetoothState.DISABLED) {
+            mLocalDeviceManager.onBluetoothStateChanged(state == ExtendedBluetoothState.ENABLED);
+        }
+    }
+    
+    private void syncBluetoothState() {
+        setBluetoothStateInt(mManager.isEnabled()
+                ? ExtendedBluetoothState.ENABLED
+                : ExtendedBluetoothState.DISABLED);
+    }
+
+    public void setBluetoothEnabled(boolean enabled) {
+        boolean wasSetStateSuccessful = enabled
+                ? mManager.enable()
+                : mManager.disable();
+                
+        if (wasSetStateSuccessful) {
+            setBluetoothStateInt(enabled
+                    ? ExtendedBluetoothState.ENABLING
+                    : ExtendedBluetoothState.DISABLING);
+        } 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);
+        dispatchScanningStateChanged(started);
+    }
+    
+    private void dispatchScanningStateChanged(boolean started) {
+        synchronized (mCallbacks) {
+            for (Callback callback : mCallbacks) {
+                callback.onScanningStateChanged(started);
+            }
+        }
+    }
+
+    public boolean createBonding(String address) {
+        return mManager.createBonding(address, mEventRedirector.getBluetoothDeviceCallback());
+    }
+    
+    public void showError(String address, int titleResId, int messageResId) {
+        LocalBluetoothDevice device = mLocalDeviceManager.findDevice(address);
+        if (device == null) return;
+
+        String name = device.getName();
+        String message = mContext.getString(messageResId, name);
+
+        if (mForegroundActivity != null) {
+            // Need an activity context to show a dialog
+            AlertDialog ad = new AlertDialog.Builder(mForegroundActivity)
+                .setIcon(android.R.drawable.ic_dialog_alert)
+                .setTitle(titleResId)
+                .setMessage(message)
+                .setPositiveButton(android.R.string.ok, null)
+                .show();
+        } else {
+            // Fallback on a toast 
+            Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public interface Callback {
+        void onScanningStateChanged(boolean started);
+        void onDeviceAdded(LocalBluetoothDevice device);
+        void onDeviceDeleted(LocalBluetoothDevice device);
+    }
+    
+}
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
new file mode 100644
index 0000000..b614712
--- /dev/null
+++ b/src/com/android/settings/bluetooth/LocalBluetoothProfileManager.java
@@ -0,0 +1,312 @@
+/*
+ * 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.bluetooth.BluetoothA2dp;
+import android.bluetooth.BluetoothError;
+import android.bluetooth.BluetoothHeadset;
+import android.bluetooth.BluetoothClass;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * LocalBluetoothProfileManager is an abstract class defining the basic
+ * functionality related to a profile.
+ */
+public abstract class LocalBluetoothProfileManager {
+
+    // TODO: close profiles when we're shutting down
+    private static Map<Profile, LocalBluetoothProfileManager> sProfileMap =
+            new HashMap<Profile, LocalBluetoothProfileManager>(); 
+    
+    protected LocalBluetoothManager mLocalManager;
+    
+    public static LocalBluetoothProfileManager getProfileManager(LocalBluetoothManager localManager,
+            Profile profile) {
+        
+        LocalBluetoothProfileManager profileManager;
+        
+        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);    
+            }
+        }
+        
+        return profileManager;
+    }
+
+    // TODO: remove once the framework has this API
+    public static boolean isPreferredProfile(Context context, String address, Profile profile) {
+        return getPreferredProfileSharedPreferences(context).getBoolean(
+                getPreferredProfileKey(address, profile), true);
+    }
+    
+    public static void setPreferredProfile(Context context, String address, Profile profile,
+            boolean preferred) {
+        getPreferredProfileSharedPreferences(context).edit().putBoolean(
+                getPreferredProfileKey(address, profile), preferred).commit();
+    }
+
+    private static SharedPreferences getPreferredProfileSharedPreferences(Context context) {
+        return context.getSharedPreferences("bluetooth_preferred_profiles", Context.MODE_PRIVATE);
+    }
+    
+    private static String getPreferredProfileKey(String address, Profile profile) {
+        return address + "_" + profile.toString();
+    }
+    
+    /**
+     * Temporary method to fill profiles based on a device's class.
+     * 
+     * @param btClass The class
+     * @param profiles The list of profiles to fill
+     */
+    public static void fill(int btClass, List<Profile> profiles) {
+        profiles.clear();
+
+        if (A2dpProfileManager.doesClassMatch(btClass)) {
+            profiles.add(Profile.A2DP);
+        }
+        
+        if (HeadsetProfileManager.doesClassMatch(btClass)) {
+            profiles.add(Profile.HEADSET);
+        }
+    }
+
+    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 boolean isConnected(String address) {
+        return SettingsBtStatus.isConnectionStatusConnected(getConnectionStatus(address));
+    }
+    
+    // TODO: int instead of enum
+    public enum Profile {
+        HEADSET(R.string.bluetooth_profile_headset),
+        A2DP(R.string.bluetooth_profile_a2dp);
+        
+        public final int localizedString;
+        
+        private Profile(int localizedString) {
+            this.localizedString = localizedString;
+        }
+    }
+
+    /**
+     * 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());
+            // TODO: block until connection?
+        }
+
+        @Override
+        public int connect(String address) {
+            return mService.connectSink(address);
+        }
+
+        @Override
+        public int disconnect(String address) {
+            return mService.disconnectSink(address);
+        }
+        
+        static boolean doesClassMatch(int btClass) {
+            if (BluetoothClass.Service.hasService(btClass, BluetoothClass.Service.RENDER)) {
+                return true;
+            }
+
+            // By the specification A2DP sinks must indicate the RENDER service
+            // class, but some do not (Chordette). So match on a few more to be
+            // safe
+            switch (BluetoothClass.Device.getDevice(btClass)) {
+            case BluetoothClass.Device.AUDIO_VIDEO_HIFI_AUDIO:
+            case BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES:
+            case BluetoothClass.Device.AUDIO_VIDEO_LOUDSPEAKER:
+            case BluetoothClass.Device.AUDIO_VIDEO_CAR_AUDIO:
+                return true;
+                
+            default:
+                return false;
+            }
+        }
+
+        @Override
+        public int getConnectionStatus(String address) {
+            return convertState(mService.getSinkState(address));
+        }
+        
+        @Override
+        public int getSummary(String address) {
+            int connectionStatus = getConnectionStatus(address);
+            
+            if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
+                return R.string.bluetooth_a2dp_profile_summary_connected;
+            } else {
+                return SettingsBtStatus.getConnectionStatusSummary(connectionStatus);
+            }
+        }
+
+        private static int convertState(int a2dpState) {
+            switch (a2dpState) {
+            case BluetoothA2dp.STATE_CONNECTED:
+                return SettingsBtStatus.CONNECTION_STATUS_CONNECTED;
+            case BluetoothA2dp.STATE_CONNECTING:
+                return SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
+            case BluetoothA2dp.STATE_DISCONNECTED:
+                return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
+            case BluetoothA2dp.STATE_DISCONNECTING:
+                return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTING;
+            case BluetoothA2dp.STATE_PLAYING:
+                return SettingsBtStatus.CONNECTION_STATUS_ACTIVE;
+            default:
+                return SettingsBtStatus.CONNECTION_STATUS_UNKNOWN;
+            }
+        }
+    }
+    
+    /**
+     * HeadsetProfileManager is an abstraction for the {@link BluetoothHeadset} service. 
+     */
+    private static class HeadsetProfileManager extends LocalBluetoothProfileManager {
+        private BluetoothHeadset mService;
+        
+        public HeadsetProfileManager(LocalBluetoothManager localManager) {
+            super(localManager);
+            
+//            final boolean[] isServiceConnected = new boolean[1];
+//            BluetoothHeadset.ServiceListener l = new BluetoothHeadset.ServiceListener() {
+//                public void onServiceConnected() {
+//                    synchronized (this) {
+//                        isServiceConnected[0] = true;
+//                        notifyAll();
+//                    }
+//                }
+//                public void onServiceDisconnected() {
+//                    mService = null;
+//                }
+//            };
+            
+            // TODO: block, but can't on UI thread
+            mService = new BluetoothHeadset(localManager.getContext(), null);
+
+//            synchronized (l) {
+//                while (!isServiceConnected[0]) {
+//                    try {
+//                        l.wait(100);
+//                    } catch (InterruptedException e) {
+//                        throw new IllegalStateException(e);
+//                    }
+//                }
+//            }
+        }
+
+        @Override
+        public int connect(String address) {
+            // Since connectHeadset fails if already connected to a headset, we
+            // disconnect from any headset first
+            mService.disconnectHeadset();
+            return mService.connectHeadset(address, null)
+                    ? BluetoothError.SUCCESS : BluetoothError.ERROR;
+        }
+
+        @Override
+        public int disconnect(String address) {
+            if (mService.getHeadsetAddress().equals(address)) {
+                return mService.disconnectHeadset() ? BluetoothError.SUCCESS : BluetoothError.ERROR;
+            } else {
+                return BluetoothError.SUCCESS;
+            }
+        }
+        
+        static boolean doesClassMatch(int btClass) {
+            switch (BluetoothClass.Device.getDevice(btClass)) {
+            case BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE:
+            case BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET:
+            case BluetoothClass.Device.AUDIO_VIDEO_CAR_AUDIO:
+                return true;
+                
+            default:
+                return false;
+            }
+        }
+
+        @Override
+        public int getConnectionStatus(String address) {
+            String headsetAddress = mService.getHeadsetAddress();
+            return headsetAddress != null && headsetAddress.equals(address)
+                    ? convertState(mService.getState())
+                    : SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
+        }
+        
+        @Override
+        public int getSummary(String address) {
+            int connectionStatus = getConnectionStatus(address);
+            
+            if (SettingsBtStatus.isConnectionStatusConnected(connectionStatus)) {
+                return R.string.bluetooth_headset_profile_summary_connected;
+            } else {
+                return SettingsBtStatus.getConnectionStatusSummary(connectionStatus);
+            }
+        }
+
+        private static int convertState(int headsetState) {
+            switch (headsetState) {
+            case BluetoothHeadset.STATE_CONNECTED:
+                return SettingsBtStatus.CONNECTION_STATUS_CONNECTED;
+            case BluetoothHeadset.STATE_CONNECTING:
+                return SettingsBtStatus.CONNECTION_STATUS_CONNECTING;
+            case BluetoothHeadset.STATE_DISCONNECTED:
+                return SettingsBtStatus.CONNECTION_STATUS_DISCONNECTED;
+            default:
+                return SettingsBtStatus.CONNECTION_STATUS_UNKNOWN;
+            }
+        }
+    }
+    
+}
diff --git a/src/com/android/settings/bluetooth/SettingsBtStatus.java b/src/com/android/settings/bluetooth/SettingsBtStatus.java
new file mode 100644
index 0000000..051d666
--- /dev/null
+++ b/src/com/android/settings/bluetooth/SettingsBtStatus.java
@@ -0,0 +1,85 @@
+/*
+ * 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;
+
+/**
+ * SettingsBtStatus is a helper class that contains constants for various status
+ * codes.
+ */
+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 */
+    public static final int CONNECTION_STATUS_CONNECTED = 2;
+    public static final int CONNECTION_STATUS_CONNECTING = 3;
+    public static final int CONNECTION_STATUS_DISCONNECTED = 4;
+    public static final int CONNECTION_STATUS_DISCONNECTING = 5;
+
+    public static final int getConnectionStatusSummary(int connectionStatus) {
+        switch (connectionStatus) {
+        case CONNECTION_STATUS_ACTIVE:
+            return R.string.bluetooth_connected;
+        case CONNECTION_STATUS_CONNECTED:
+            return R.string.bluetooth_connected;
+        case CONNECTION_STATUS_CONNECTING:
+            return R.string.bluetooth_connecting;
+        case CONNECTION_STATUS_DISCONNECTED:
+            return R.string.bluetooth_disconnected;
+        case CONNECTION_STATUS_DISCONNECTING:
+            return R.string.bluetooth_disconnecting;
+        case CONNECTION_STATUS_UNKNOWN:
+            return R.string.bluetooth_unknown;
+        default:
+            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;
+    }
+    
+    // Pairing status
+    
+    public static final int PAIRING_STATUS_UNPAIRED = 0;
+    public static final int PAIRING_STATUS_PAIRED = 1;
+    public static final int PAIRING_STATUS_PAIRING = 2;
+
+    public static final int getPairingStatusSummary(int pairingStatus) {
+        switch (pairingStatus) {
+        case PAIRING_STATUS_PAIRED:
+            return R.string.bluetooth_paired;
+        case PAIRING_STATUS_PAIRING:
+            return R.string.bluetooth_pairing;
+        case PAIRING_STATUS_UNPAIRED:
+            return R.string.bluetooth_not_connected;
+        default:
+            return 0;
+        }
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/Memory.java b/src/com/android/settings/deviceinfo/Memory.java
index 8a3cb8b..86e6423 100644
--- a/src/com/android/settings/deviceinfo/Memory.java
+++ b/src/com/android/settings/deviceinfo/Memory.java
@@ -22,6 +22,7 @@
 import android.content.IntentFilter;
 import android.content.res.Resources;
 import android.os.Bundle;
+import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.Environment;
 import android.os.IMountService;
@@ -30,6 +31,7 @@
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
+import android.util.Log;
 
 import com.android.settings.R;
 
@@ -37,6 +39,8 @@
 import java.text.DecimalFormat;
 
 public class Memory extends PreferenceActivity {
+    
+    private static final String TAG = "Memory";
 
     private static final String MEMORY_SD_SIZE = "memory_sd_size";
 
@@ -50,15 +54,14 @@
     private Preference mSdAvail;
     private Preference mSdUnmount;
     
-    private IMountService   mMountService;
+    // Access using getMountService()
+    private IMountService mMountService = null;
 
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         
         addPreferencesFromResource(R.xml.device_info_memory);
-
-        mMountService = IMountService.Stub.asInterface(ServiceManager.getService("mount"));
         
         mRes = getResources();
         mSdSize = findPreference(MEMORY_SD_SIZE);
@@ -89,6 +92,18 @@
         unregisterReceiver(mReceiver);
     }
     
+    private synchronized IMountService getMountService() {
+       if (mMountService == null) {
+           IBinder service = ServiceManager.getService("mount");
+           if (service != null) {
+               mMountService = IMountService.Stub.asInterface(service);
+           } else {
+               Log.e(TAG, "Can't get mount service");
+           }
+       }
+       return mMountService;
+    }
+    
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         if (preference == mSdUnmount) {
@@ -107,8 +122,13 @@
     };
 
     private void unmount() {
+        IMountService mountService = getMountService();
         try {
-            mMountService.unmountMedia(Environment.getExternalStorageDirectory().toString());
+            if (mountService != null) {
+                mountService.unmountMedia(Environment.getExternalStorageDirectory().toString());
+            } else {
+                Log.e(TAG, "Mount service is null, can't unmount");
+            }
         } catch (RemoteException ex) {
             // Failed for some reason, try to update UI to actual state
             updateMemoryStatus();
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index a56e607..b7aceb1 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -240,9 +240,11 @@
     }
 
     private void setSummaryText(String preference, String text) {
-        if (text != null) {
-            findPreference(preference).setSummary(text);
+        if (TextUtils.isEmpty(text)) {
+            text = sUnknown;
         }
+        
+        findPreference(preference).setSummary(text);
     }
     
     private void updateNetworkType() {
diff --git a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
index 1b9dff4..df15c0b 100644
--- a/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
+++ b/src/com/android/settings/quicklaunch/QuickLaunchSettings.java
@@ -263,7 +263,7 @@
         KeyCharacterMap keyMap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD);
 
         // Go through all the key codes and create a preference for the appropriate keys
-        for (int keyCode = KeyEvent.MAX_KEYCODE - 1; keyCode >= 0; keyCode--) {
+        for (int keyCode = KeyEvent.getMaxKeyCode() - 1; keyCode >= 0; keyCode--) {
             // Get the label for the primary char on the key that produces this key code
             char shortcut = (char) Character.toLowerCase(keyMap.getDisplayLabel(keyCode));
             if (shortcut == 0 || shortcutSeen.get(shortcut, false)) continue;
diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java
index 95e469f..917ed96 100644
--- a/src/com/android/settings/wifi/AccessPointDialog.java
+++ b/src/com/android/settings/wifi/AccessPointDialog.java
@@ -25,6 +25,7 @@
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.text.format.Formatter;
 import android.text.method.PasswordTransformationMethod;
 import android.text.method.TransformationMethod;
 import android.util.Log;
@@ -303,7 +304,7 @@
             }
     
             if (mState.primary && mState.ipAddress != 0) {
-                addInfoRow(R.string.ip_address, ipAddressToString(mState.ipAddress));
+                addInfoRow(R.string.ip_address, Formatter.formatIpAddress(mState.ipAddress));
             }
             
         } else if (mMode == MODE_CONFIGURE) {
@@ -579,14 +580,6 @@
         return 0;
     }
     
-    private static String ipAddressToString(int addr) {
-        StringBuffer buf = new StringBuffer();
-        buf.append(addr  & 0xff).append('.').
-            append((addr >>>= 8) & 0xff).append('.').
-            append((addr >>>= 8) & 0xff).append('.').
-            append((addr >>>= 8) & 0xff);
-        return buf.toString();
-    }
 
     public void onClick(View v) {
         if (v == mShowPasswordCheckBox) {
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 8dabbd1..c224954 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -538,7 +538,13 @@
             
             // If password is empty, it should be left untouched
             if (!TextUtils.isEmpty(mPassword)) {
-                config.preSharedKey = convertToQuotedString(mPassword);
+                if (mPassword.length() == 64 && isHex(mPassword)) {
+                    // Goes unquoted as hex
+                    config.preSharedKey = mPassword;
+                } else {
+                    // Goes quoted as ASCII
+                    config.preSharedKey = convertToQuotedString(mPassword);
+                }
             }
             
         } else if (security.equals(OPEN)) {
@@ -554,8 +560,12 @@
             return false;
         }
         
-        for (int i = len - 1; i >= 0; i--) {
-            final char c = wepKey.charAt(i);
+        return isHex(wepKey);
+    }
+    
+    private static boolean isHex(String key) {
+        for (int i = key.length() - 1; i >= 0; i--) {
+            final char c = key.charAt(i);
             if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f')) {
                 return false;
             }
diff --git a/src/com/android/settings/wifi/IpSettings.java b/src/com/android/settings/wifi/IpSettings.java
index 592e8da..5a494fa 100644
--- a/src/com/android/settings/wifi/IpSettings.java
+++ b/src/com/android/settings/wifi/IpSettings.java
@@ -19,12 +19,16 @@
 import com.android.settings.R;
 
 import android.content.ContentResolver;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.EditTextPreference;
+import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.provider.Settings.System;
+import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -32,8 +36,10 @@
 
 public class IpSettings extends PreferenceActivity implements Preference.OnPreferenceChangeListener {
 
+    private static final String KEY_MAC_ADDRESS = "mac_address";
     private static final String KEY_USE_STATIC_IP = "use_static_ip";
-
+    private static final String KEY_NUM_CHANNELS = "num_channels";
+    
     private String[] mSettingNames = {
             System.WIFI_STATIC_IP, System.WIFI_STATIC_GATEWAY, System.WIFI_STATIC_NETMASK,
             System.WIFI_STATIC_DNS1, System.WIFI_STATIC_DNS2
@@ -61,12 +67,46 @@
             preference.setOnPreferenceChangeListener(this);
         }
     }
-
+    
     @Override
     protected void onResume() {
         super.onResume();
         
         updateUi();
+        initNumChannelsPreference();
+        refreshMacAddress();
+    }
+
+    private void initNumChannelsPreference() {
+        ListPreference pref = (ListPreference) findPreference(KEY_NUM_CHANNELS);
+        pref.setOnPreferenceChangeListener(this);
+
+        WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+        /*
+         * Generate the list of valid channel counts to show in the ListPreference.
+         * The values are numerical, so the only text to be localized is the
+         * "channel_word" resource.
+         */
+        int[] validChannelCounts = wifiManager.getValidChannelCounts();
+        if (validChannelCounts == null) {
+            Toast.makeText(this, R.string.wifi_setting_num_channels_error,
+                           Toast.LENGTH_SHORT).show();
+            return;
+        }
+        String[] entries = new String[validChannelCounts.length];
+        String[] entryValues = new String[validChannelCounts.length];
+
+        for (int i = 0; i < validChannelCounts.length; i++) {
+            entryValues[i] = String.valueOf(validChannelCounts[i]);
+            entries[i] = getString(R.string.wifi_setting_num_channels_channel_phrase,
+                                   validChannelCounts[i]);
+        }
+        pref.setEntries(entries);
+        pref.setEntryValues(entryValues);
+        int numChannels = wifiManager.getNumAllowedChannels();
+        if (numChannels >= 0) {
+            pref.setValue(String.valueOf(numChannels));
+        }
     }
 
     @Override
@@ -80,14 +120,34 @@
     }
 
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        String value = (String) newValue;
-        
-        if (!isIpAddress(value)) {
-            Toast.makeText(this, R.string.wifi_ip_settings_invalid_ip, Toast.LENGTH_LONG).show();
-            return false;
+        String key = preference.getKey();
+        if (key == null) return true;
+
+        if (key.equals(KEY_NUM_CHANNELS)) {
+            try {
+                int numChannels = Integer.parseInt((String) newValue);
+                WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+                if (!wifiManager.setNumAllowedChannels(numChannels)) {
+                    Toast.makeText(this, R.string.wifi_setting_num_channels_error,
+                            Toast.LENGTH_SHORT).show();
+                }
+            } catch (NumberFormatException e) {
+                Toast.makeText(this, R.string.wifi_setting_num_channels_error,
+                        Toast.LENGTH_SHORT).show();
+                return false;
+            }
+            
+        } else {
+            String value = (String) newValue;
+            
+            if (!isIpAddress(value)) {
+                Toast.makeText(this, R.string.wifi_ip_settings_invalid_ip, Toast.LENGTH_LONG).show();
+                return false;
+            }
+            
+            preference.setSummary(value);
         }
         
-        preference.setSummary(value);
         return true;
     }
 
@@ -177,4 +237,14 @@
         }
     }
     
+    private void refreshMacAddress() {
+        WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
+        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+
+        Preference wifiMacAddressPref = findPreference(KEY_MAC_ADDRESS);
+        String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
+        wifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress 
+                : getString(R.string.status_unavailable));
+    }
+    
 }
diff --git a/src/com/android/settings/wifi/WifiLayer.java b/src/com/android/settings/wifi/WifiLayer.java
index b29fd92..b0857d2 100644
--- a/src/com/android/settings/wifi/WifiLayer.java
+++ b/src/com/android/settings/wifi/WifiLayer.java
@@ -94,7 +94,7 @@
     private boolean mIsObtainingAddress;
 
     /**
-     * See {@link Settings.System#WIFI_NUM_OPEN_NETWORKS_KEPT}.
+     * See {@link android.provider.Settings.Secure#WIFI_NUM_OPEN_NETWORKS_KEPT}.
      */
     private int WIFI_NUM_OPEN_NETWORKS_KEPT;
     /**
@@ -229,8 +229,8 @@
         mIntentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
         mIntentFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
         
-        WIFI_NUM_OPEN_NETWORKS_KEPT = Settings.System.getInt(mContext.getContentResolver(),
-                Settings.System.WIFI_NUM_OPEN_NETWORKS_KEPT, 10);
+        WIFI_NUM_OPEN_NETWORKS_KEPT = Settings.Secure.getInt(mContext.getContentResolver(),
+            Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, 10);
     }
     
     /**
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index ceb995b..c92ed7c 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -134,8 +134,8 @@
         
         mOpenNetworkNotificationsEnabled = (CheckBoxPreference) preferenceScreen
                 .findPreference(KEY_OPEN_NETWORK_NOTIFICATIONS_ENABLED);
-        mOpenNetworkNotificationsEnabled.setChecked(Settings.System.getInt(getContentResolver(),
-                Settings.System.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);        
+        mOpenNetworkNotificationsEnabled.setChecked(Settings.Secure.getInt(getContentResolver(),
+            Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);        
         
         mAddOtherNetwork = preferenceScreen.findPreference(KEY_ADD_OTHER_NETWORK);
         
@@ -323,9 +323,9 @@
         if (preference == mAddOtherNetwork) {
             showAddOtherNetworkDialog();
         } else if (preference == mOpenNetworkNotificationsEnabled) {
-            Settings.System.putInt(getContentResolver(),
-                    Settings.System.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
-                    mOpenNetworkNotificationsEnabled.isChecked() ? 1 : 0);
+            Settings.Secure.putInt(getContentResolver(),
+                Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
+                mOpenNetworkNotificationsEnabled.isChecked() ? 1 : 0);
         } else if (preference instanceof AccessPointPreference) {
             AccessPointState state = ((AccessPointPreference) preference).getAccessPointState();
             showAccessPointDialog(state, AccessPointDialog.MODE_INFO);
